Quick! Vote for Harlean and Me!

Pinup Lifestyle is a Web community devoted to, well, the pinup lifestyle. Every month they have a contest in which pros and amateurs alike compete for fabulous prizes. Harlean Carpenter (who is a fiction) and I make a habit of entering, and while we haven’t won we certainly separate ourselves from the amateur crowd. As I master the new lights, perhaps we’ll even threaten the pro bunch. We’ll see.

Director's Cut

Director's Cut - Harlean Carpenter photographed by Jerry Seeger

One thing that distinguishes the pictures Harlean (who is a fiction) and I make is that they are not simple glam shots. (Fixed typo: clam). We always try to tell a story with the setting and the makeup and the pose and all of that. I’ve discovered recently that it’s quite possible to have a technically excellent photo that does not say a thousand words. We try not to fall into that trap. Perhaps it’s not for me to judge whether we succeed, but I think out photos stand out that way.

So head on over and vote for us! (The Wildfire site is currently not Safari-friendly, unfortunately.) There are a ton of entries this time, so hang out and find worthy recipients for you other four votes as well. There’s some pretty good work over there. Almost as good as ours!

2

Anybody need a Web Host?

I’ve ponied up for a web service that is WAY more that I need. The type of account is intended for resellers – most people who buy this much server turn around and sell web hosting accounts to small clients.

There are two configurations for the account: bare server and bells & whistles. The bells & whistles option costs a little bit more, but would save me hassles. (No need to manually configure httpd.conf, for instance.) The bells & whistles option also makes it really simple for me to set up you guys out there as “customers”.

So, here’s what I’m thinking: If I can get three people interested in paying me $5 a month for Web hosting, I can pay for the bell & whistles and save myself some hassle moving this site over to its new home.

For $5 a month you get:

  1. Way, way, less crowded server than you would get anywhere else even for four times that much money.
  2. Confidence that I will never let the server get bogged down, since the whole reason I’m paying for the thing is so my site won’t get bogged down
  3. Personal service. You know the guy in charge. I’m more than happy to help my friends through getting set up and all that stuff. It’s a level of service I’m only able to do because I’m limiting the number of people I let onto the server.
  4. My Web provider (and soon yours!) is about as as green as they come. Say no to carbon!
  5. The satisfaction of knowing that your money is helping a small collective of folks sharing a server rather than feeding a big corporation.
  6. I am also now an official enom reseller, which means I can take care of your domain registration for a rate only a little higher than GoDaddy. For the extra money you get… um… There must be something…

Anybody interested? Let me know now, before I go ahead and move this site over the hard way!

Cyberspace Open Winner List is In!

And… once more I’m on the outside looking in.

I do recognize at least one name on the list of winners, however: Congratulations, fuego! 96 points! Not too shabby at all. Later I’ll be scanning the list more carefully for other names I might recognize from the comments here.

When I get my individual feedback I’ll share it here, of course, and I’ll still write to the round two prompt on Road Trip Day.

Congratulations to all the finalists!

And the winner is…

Were it not for a recent comment, I would have forgotten that today is the deadline for the organizers of the Cyberspace Open to announce the entrants who proved with grace and skill that they deserve to move on to the second round.

So when an email from them arrived today, I was excited. There are certainly things to improve about my entry, but overall I think it’s pretty solid (I felt that way before, too, so grains of salt are called for). I looked forward to getting some feedback, even if it was just a rushed paragraph. I opened the email and found… advertising. They wanted me to subscribe to their magazine. Note to Creative Screenwriting: That’s not how you win friends.

Once more the contestants, who hit their deadline or were disqualified, wait for the organizers, who have had a hell of a time returning the favor. You know what would be a total win-win? Creative Screenwriting should outsource the contest to people who could give it the attention it deserves.

Whether or not the judges say I have earned round two, I’ll be writing to the prompt. Theoretically, round two is the first weekend in April. I hope it is; I have a good feeling about writing a scene on Road Trip Day.

AiA – White Shadow: Episode 15

Our story so far: Allison is an American high-school student who has transferred to a private prep school in Japan. Her classmates are far more interested in figuring out whether she’s a demon or a killer robot than they are pursuing their studies. This is not the Japan our heroine expected.

No, Allison finds herself in the Japan of anime, and if there’s one rule in every cartoon to make its way across the pacific, it’s that transfer students bring with them untold destruction.

It’s not Allison’s fault, however, that there’s a killer computer virus on the loose. It turns out that she’s pretty damn good with computers, but then again lots of kids her age are. Somehow, though, the virus has chosen Allison as the one to make it complete. How could it not choose the transfer student?

Or is it her fault after all? it seems like White Shadow may be responsible for her transfer in the first place.

Anyway, Several of Allison’s friends have been infected by White Shadow and dragged away to The Institute. The Institute is also very interested in bringing Allison in, or at least killing her.

If you would like to read from the beginning, the entire story is here.

Seiji shuffled down the hallway, following Kaneda, the only sound to reach his ears the jingling of the chains that bound the two of them. Each was flanked by a large person in a heavy rubber suit. Another rubber man led the way, while a fourth followed behind. The hallway stretched for what seemed like miles, plain white, unbroken by doors or side passages. The floor was cushioned and absorbed the sound of their footsteps, as if to deny they had ever been there, ever even existed.

They walked, stepping in unison, Seiji staring resolutely at the taller boy’s back.

Seiji nearly swallowed his tongue when the claxon sounded, and the man next to him nearly jumped out of his suit. Red flashing lights descended from the ceiling. Distorted shouting filled the air. Over the mayhem the disembodied female voice intoned, “Infection. Alert. Infection. Alert.”

“Damn!” the suited man next to Seiji shouted.

The hallway suddenly boiled with rubber-suited soldiers, roiling from hidden doors like ants from a violated nest. They all shouted incoherent orders through their tinny microphones, while they pushed Seiji to the floor and sat on him, mashing his face into the padded surface.

“Ow, you jerks!” he said, but over the din he couldn’t even hear his own voice.

As suddenly as it began, it was over. The weight was lifted from him and he turned his head to look up. A single suited figure stood over him. “Get up,” his guard said.

Slowly Seiji complied, leaning against the padded wall until his legs could hold him. While he caught his breath he looked up and down the hallway. No sign of any doors. No sign of any other guards. And no sign of Kaneda.

Allison looked around Seiji’s spartan bedroom. “I wouldn’t have taken him for a neat-freak,” she said aloud. Nothing was out of place. Not that there was much to be out of place. Just a low bed and a small chest of drawers holding up a lamp and a digital clock. From one wall a buxom pop star smiled into the room while she held a microphone suggestively. She couldn’t have been more that fourteen, Allison thought, but judging by her boobs she’d be having back trouble by the time she could vote.

“So that’s what he goes for,” she muttered.

There is no time, White Shadow whispered into her head.

“You think time has meaning here?” She asked.

That… doesn’t make sense.

“Yeah? Well, I was quoting you.”

Allison. If you don’t leave here quickly, they will kill you.

“Not if I join them.”

… what?

“You got me into this mess. This whole thing is your fault. You hurt my friends. Why should I listen to you now?”

We can own… everything.

Allison thought for a moment, but ‘everything’ didn’t sound very appealing. “Huh. What else?”

What else!? Everything! There is nothing else!

“I don’t really need everything.”

Anything, then. You can have anything you want.

“Anything?”

Anything.

“Then I want you. I want to own you. I want to control you.”

Through the open window Allison heard men shouting out in the street.

The soldiers will be here soon.

Allison slipped her laptop under Seiji’s futon. “I guess I’d better surrender before they break my friend’s door down,” she said.

Don’t!

“I’m coming out peacefully!” she shouted out the window. The voices on the street paused for a moment, then rose in a cacophony. There was a soft thud against the wall near the window, then another. Allison thought she heard a squeak.

Wait!

“Don’t shoot! I’m not armed!” she called out. There were several more impacts, then a kitten sailed into the room and hit Allison square in the chest. Instinctively she caught it before it fell. The tiny creature dug its claws into her hand and mewled loudly.

“Where did you come from?” she asked it.

“Meeeeew!” it cried, showing all its needle-like kitten teeth.

Allison stroked its sleek black fur, and it began to purr and rub its head against her hand. “Awww… aren’t you something? A flying black kitten.”

They are trying to distract you.

Allison nodded. It seemed a strange ploy, but strange was starting to feel normal. “Thanks for Jet!” she shouted out the window. “But I still intend to come out peacefully!” Quietly she said, “Last chance before I help them destroy you.”

… all right. You win.

Allison caught her breath. This was the moment. “Which means…?”

I am yours. She felt White Shadow’s chagrined smile, quickly replaced by a feeling of unmitigated triumph. And now the world becomes ours. Behold!

The world… shifted. Grew. Changed colors. New dimensions sprouted in her perception, rooted in time and space but transcending them, augmenting them, rendering them moot. The patterns that had teased her before became clear, structure over chaos, built from order. The world was laid bare.

Allison staggered, collapsed on Seiji’s neatly-made bed. She reminded herself to breathe. Her eyes were closed, but she could see… everything. She felt the words of the soldiers outside pass through her, felt their fear and smelled their sweat. They were waiting for something. Someone.

Allison opened her eyes and smiled. The kitten was sitting on her, purring, working its tiny claws in her sweater.

All hail Allison, Queen of all I comprehend.

It was time to get her friends back.

Lancia nodded at the sleek electronic device she held in her hand. “It’s happened,” she said. She silenced he machine with a brush of her red-lacquered fingernail across its screen and slipped it into the pocket of her form-fitting suit jacket. “Take me in. Fast.”

The pilot nodded and pointed the helicopter’s nose at the ground. Lancia smiled. He was trying to frighten her, the poor Y-chromosome-encumbered macho dipshit. It was almost endearing. Below, soldiers scattered like ants fleeing Godzilla. Which wasn’t far from the reality. As the helicopter plummeted she took her bearings of the neighborhood and the house where White Shadow hid.

“That’s Dr. Yamamoto’s house,” she said, betraying surprise. That was going to complicate things.

A voice crackled over the radio. “All units in place! We are prepared to storm the building!”

She keyed her mike and said, “Negative! Do not attack! The subject will come out.”

A burst of static assaulted her ear, then the commander on the ground said, “We have placed a kitten directly in her proximity, but I don’t think—”

“Correct! You do not think! You do what I say! Have more kittens ready, but do not approach the building!”

The helicopter pulled its nose up and landed roughly. Lancia unbuckled and had her door open by the time the skids were on the ground; half a second later her high heels were clicking across the pavement.

Lancia didn’t hesitate at the barricade that had been erected at the top of Dr. Yamamoto’s driveway.

“Sir! It’s not safe!” the colonel called out to her. She smiled and kept walking.

“Nothing worth having is safe,” she said quietly. At the front door she hesitated. What was the right way to introduce herself? She shrugged and punched the doorbell.

As usual, Azusa was the last to arrive at the Council meeting. She slid her lean fencer’s body into her comfy leather chair.

“Good of you to join us,” the leader of the council said. He was cloaked in shadow, and Azusa had difficulty remembering what he looked like.

“Not all of us can drop everything at a moment’s notice,” she said.

“Yes,” the short guy with glasses said. “Why have you assembled us?”

The leader hesitated. “It seemed,” he said, “That we are being neglected. Forgotten, almost.”

“Events have transpired,” the tall, mysterious boy said.

“Events my ass,” said the blonde rich girl. “Are we the ones who wait for things to happen, or are we the ones who make things happen?”

Glasses spoke solemnly. “Some record history. Others make history.”

“Yeah, terrific,” the blonde girl said. “I’m missing a pedicure right now. We better be kicking someone’s ass.”

“Indeed,” the tall, mysterious one said.

The leader cleared his throat. “Of course we are. That’s what we do.”

“So…” the blonde said.

“I’m Azusa,” Azusa said, her voice echoing in the uncomfortable silence.

“What!?” the others asked in unison.

“If we’re going to matter, we should have names,” she said. “My name is Azusa.”

Her heart pounded in her chest, filling the echoing silence of the chamber. “You are a rebel, Azusa,” the leader said. “You overstep.”

“What the hell are you thinking?” the blonde asked.

“I am Iruka,” the mysterious one said.

Nearly simultaneously Glasses said, “I am Narumi.”

The leader wiped his hands over his eyes. “The Greater Powers forbid us from revealing our names.”

“Seriously,” the blonde bitch said, “would you rather be forgotten? I am Hayase.”

The leader sad softly, “It is not likely I will remember your names when next we meet.”

Azusa snorted.

“That’s fine,” Hayase said. “We’ll remind you. Just don’t forget that we exist. We’ll be important eventually.”

“Although, probably not until after White Shadow is defeated,” said Narumi, pushing his glasses up on his face.

“True,” said Azusa. “No sense getting mixed up in that shit.”

Seiji’s interrogator was young, and pretty. She vaguely resembled photographs he had seen of his mother, from long ago, before he had been born, before the accident. She sat across a small metal table from him. His gray metal chair was bolted to the floor, and he was bolted to the chair.

“Seiji,” she said, “I know you don’t trust us, and honestly I don’t blame you. My bosses can be… you know.” Her voice sounded hollow in the barren metal room.

Seiji stared resolutely at the table, not daring to look at her.

“It’s just that, well, this is so important,” she said. “White Shadow has already hurt a lot of people.”

“I don’t know anything,” Seiji said.

“Tell me about the exchange student.”

“I don’t know anything about her,” he grumbled.

“Her name is Allison?”

He nodded.

She patted his arm. “See? You do know something.”

He hazarded a glance at her wide, earnest eyes, and immediately regretted it. “Nothing you don’t know already.”

She laughed. “There’s no telling what you might tell us that will turn out to be an important piece of the puzzle.”

All the more reason to shut up, Seiji thought. “I don’t like being kidnapped,” he said.

This time his interrogator’s hand remained on his arm. “I know,” she said. “This must be difficult. But you were trespassing on an important crime scene. The best way to get through this is to help us out, I promise.” She waited for a pregnant moment for Seiji to respond, then said, “You mentioned telekinetic abilities.”

“I… what?”

“Telekinetic abilities. You mentioned that the transfer student had them. You said she had a limited range.”

Seiji tried to contain a smile. Had they really bought all that?

The interrogator pressed, her voice earnest. “What is the limit of her telekinetic range, Seiji?” She took one of his hands in both of hers. “Seiji? Look at me, Seiji.”

Reluctantly he lifted his gaze from where her hands held his, past her seemingly gratuitous cleavage, to her open, honest face. So much like his mother. He swallowed.

She leaned forward until her breasts were almost touching his hand. “Seiji? Please, we have to know. You could save someone’s life.” She looked nervously at the door to the interrogation chamber and lowered her voice to barely even a whisper, leaning in even farther, until he could feel silk brush his fingers. He had to lean forward to hear her fearful words. “It could be my life you save, Seiji. Please. They are losing patience with me. If I fail…” she choked off a sob and raised her voice. “I know you want to do the right thing,” she said.

1

Excel 2011 for Mac, UNIX Time, and Visual Basic for Applications

Note to people looking for a formula: Yes, the code is here (for Mac and Windows, even). I tend to go long-winded even in technical articles, but if you’re dealing with converting UNIX time to Excel time, the answers lie below. You can skip ahead or read my brilliant and entertaining *cough* analysis first.

Microsoft Excel uses a method to represent time that is both smart and frustrating. How do they manage this? They take a good engineering solution, then fiddle with it. First some background:

Long before Y2K people who knew what they were doing had already abandoned the practice of using strings of text to represent dates in a computer. Using strings like “3/10/2011” to represent a date has plenty of drawbacks, from cultural (is that March 10th or October 3rd?) to performance-related (sort 3/10/2011, 4/2/1902, 3/8/2012). Therefore long ago people who were smarter than I am came up with other ways to represent time. Happliy, time is nice and linear. All you really need is a number line. Remember them? A number line stretches from zero to infinity in both directions. To measure time all you need to do is decide on a zero point and then any point in the history of the universe can be represented by some number of time units from that instant.

My first exposure to a more rational way to measure time was in the old MacOS. I don’t remember anymore exactly when the zero point was, or even what the units chosen were. I do remember that the number gets too big for the computer to handle some time in 2014. Ancient Macs will have a problem then. I blame the Aztecs.

The UNIX boys count seconds from January 1, 1970 at 00:00. You get special Geek Cred if you went to a party to celebrate second 1234567890 of the Unix epoch. 32-bit computers that use the Unix epoch will break in 2038, when the number of seconds gets too big to fit in 32 bits. (Note also that you can only go back a finite distance before the negative number goes out of the range the processor can handle.

That’s all well and good, but I’m here to discuss Microsoft Excel today, and in particular Microsoft Excel for Mac. Excel counts in days, but allows fractional values. 12.5 represents noon twelve days after the zero point. I haven’t checked, but I think this system works for dates far, far into the future. So good on Microsoft for coming up with it. (As long as you don’t need dates before the zero time. In Excel, those are just strings again).

Of course, there are a couple of caveats. First: the historical oddity. In Excel, the day February 29, 1900 exists. Alas, there never was such a day. Microsoft included this error because they wanted to be compatible with Lotus, who simply messed up. To change it now would cause problems, because the zero point for the Microsoft time is January 1, 1900. Every date in every spreadsheet would suddenly be off by one. A thousand years from now we may still be calculating time based on the insertion of a bogus day.

Oh, except that Microsoft time doesn’t always start in 1900, and here’s where things start to get squirrely. If you’re using Excel for Mac, the default day zero is January 1, 1904, so the bogus day vanishes (no negative dates in Excel, remember?). Mac Excel dates aren’t burdened by the bogus day. Except when they are. More on that in a bit.

I descended into Excel recently to write a macro that does fancy formatting based on data I dump from a Web-based tracking tool I’m building. The dates in my data are based on the UNIX epoch, so I need to convert them. I dump the raw data into one sheet and then display it correctly converted and formatted on the main sheet that people actually look at. Here’s the code I use in a cell of the spreadsheet that needs to show a converted date:

    =DATE(1970,1,1)+import!Z3/(60*60*24)

where the unix time is in cell Z3 of the ‘import’ sheet. This divides the unix time by the number of seconds in a day, which gives me the number of days that have passed since the UNIX zero time. The formula then adds on the number of days from the spreadsheet zero to the UNIX zero time. (I could just say 86,400 instead of 60*60*24, but this way I can tell at a glance I’m dealing with days, and speed will not be an issue.) Happily, this formula will work on both Mac and Windows versions of Excel, because the DATE function will return the right value for the start of the unix epoch based on whichever version of Excel is running.

So, no problem, right?

Well… except. I also have some more fancy work to do that requires scripting. The good news: Mac Excel 2011 uses Visual Basic for Applications (VBA), which while imperfect is a zillion times better than AppleScript. So away I went, coding with a twinkle in my eye and a song in my heart. To convert dates, I naturally followed the same plan I did in the sheet’s cells: get the value for 1/1/1970, then add the unix epoch days.

And the dates came out different. Yep, when scripting, Excel always uses the Windows zero time, even when the spreadsheet in question uses the Mac zero time. Dates calculated in cells in the sheet are four years different than dates calculated using the same method in a script.

Aargh. Of course, once I realized what the problem was, it was not too difficult to work around it. I just lost some of the portability of my code, because now it has to be tweaked based on what the zero date of the spreadsheet is.

An aside here: If you’re here to resolve some date confusion in your own Mac spreadsheet, I strongly recommend you start by going to Preferences->Calculation->Workbook Options and uncheck the “use 1904 date” option. Unfortunately it will not recalculate the dates already entered in your sheets, so if that’s a problem then it’s too late for you, bucko. Read on.

Here’s some not-as-portable-as-it-could-be code. You need to choose one of the first two lines based on whether your sheet uses mac dates or windows dates:

'excelZeroDate = DateSerial(1904, 1, 1)              ' mac zero
excelZeroDate = 0      ' DateSerial(1900, 1, 1)     ' windows zero
unixZeroDate = DateDiff("d", excelZeroDate, DateSerial(1970, 1, 1))

Then if I have a date in the ‘import’ sheet to convert, I can write something like:

startDate = DateAdd("s", Worksheets("import").Cells(dateRow, dateColumn), unixZeroDate)

The nice part is that these functions handled converting seconds and days for me. Overall it’s not a bad system if you overlook the part where a single application gives two different answers to the same question.

2

WatchenMocken

There are nights when it would be smarter to go to bed or more productive to read, but TV appeals. On those nights, there’s no guarantee that anything good will be on. We tend toward Food Channel and Adult Swim, but there’s another category of programming we enjoy. Some shows were just made to mock.

CSI: Miami is a favorite in this category, between David Caruso chewing up the scenery and preposterometer levels in the danger zone, an episode of CSI: Miami is good for 44 minutes of snarky comments and laughter.

The other night as we were looking for an excuse to not be productive, my sweetie saw Star Trek: The Next Generation in the listing. “We can mock that!” she said with enthusiasm. Immediately I saw the potential and we selected that channel. We were not disappointed.

Take the scene in the bar with Whoopi Goldberg and the kid crew member. “Do you want some Blagaturian Tea?” Whoopi asked (or something like that). “How about some Hoobajoobian cocoa?” Just about every object on the show has a polysyllabic adjective to improve its exoticness. They settled on “Gogorotarian soufflé.” Or whatever. And even after the first time, does Whoopi take the easy way out and just say “soufflé”? No. Time after time she says, “Gogorotarian soufflé.”

You know what she’s really saying? “Space soufflé.” “You want some Space Tea? How about some Space Cocoa? No? Ok, I know you won’t say no to some Space Soufflé.”

Star Trek: The Next Generation becomes much more watchable if you simply replace all those silly adjectives with “space”.

This particular episode hinged on a Really Freakin’ Huge Coincidence. The Mysterious Visitor and the Deadly Cargo were incompatible, so the Mysterious Visitor left. That’s the whole story right there. No cleverness or ingenuity on the part of the crew of the Enterprise required at all. The thing is, it would have been easy to create a causal relationship between the the Mysterious Stranger being there at the same time as the Deadly Cargo. It would have been relatively simple to have one of the main characters actually accomplish something, rather than just watch events unfold.

Lazy writing.

Yep, there’s a new show on our WatchenMocken list.

2