Saturday, February 14, 2009

Happy Valentine's Day!

If you're into that sort of thing. Likewise, if you're so inclined, happy belated Darwin Day and 1234567890 Day.

In writing news, got a really nice bit of feedback on "Road" from one of my fellow VPers who won't be participating in the Skype discussion (tomorrow! yikes!). She liked it a lot, and gave me some very specific things that tripped her up, which will go into the "fit and finish" pass I do after the Skype call. Unless my other fellow VPers find something critically amiss which necessitates taking the piece apart and then gluing it back together.

1700 words last night, late, on a new short tentatively called "Chain-driven." (Which, if you happen to live in Austin and are aware of a certain slice of society, you might recognize as a sly wink to a local landmark.) This one seems like it might end up being crazy but fun.

Oh, and "Lost Luggage?" I pulled it up after the second draft of "Road" was done and discovered I had already rewritten it. The ending isn't what I want it to be; I'll probably get it critiqued and rework it. It's not my best piece ever, but it has what I think is a truly original central conceit, and I should be able to make it sales-worthy. And hey, at something like 2500 words, it's in a rare phylum: a complete story by me under 50 pages!

Finally, I have decided to go ahead and hold onto "Nayda" until Pixel-Stained Technopeasant Wretch Day (April 23), when I may be able to get some linkage via my VP instructors who participate.

Labels:

Wednesday, February 11, 2009

How to REALLY back up like a pro

Over at Jay Lake's blog, he has written an entry on how to do backups like a pro. I cannot whitewash this; this is sheer poppycock. What Jay describes is absolutely the safest way to back up your files... circa 1990. The IT industry solved this problem years ago. It's over, done. And the software you need to do so is in the "cheap," "free," or "already paying for it" category.

That's an audacious claim, so let me start by debunking the notion that this baroque sequence of events is actually safe. There's one fundamental problem with it, and that is it relies on humans to not make errors. There are a lot of steps in there. And I don't know about other people, but after I've just spent a couple hours pounding out a few thousand words, I'm not at my most mentally keen. Should you really be willing to bank your security on habitually executing all those steps correctly under those circumstances?

In a word, no. Going through these motions is tantamount to thinking that the TSA guys who make us take off our shoes, and restrict liquids to no more than 2 oz (so we can't make a very BIG bomb?) are actually protecting us from terrorists. They counter what Bruce Schneier calls "movie terrorist plots"--threats that seem large, but in fact are not very likely--while against the real issues, they protects us little, or not at all.

An example, you say? Well, have any of you ever done any of these?
  • Saved a backup file with the wrong filename, so you can't find it later, or you accidentally overwrote a version you wanted to keep?
  • Had your email account hacked? For example, by a spammer, who gets your gmail account permanently shut down within a matter of hours?
  • Sent your backup dvds to the wrong relative, or had the right relative not correctly file them, making them impossible to find should you need them?
Et cetera, et cetera. "Impossible!" you say, "because I really CARE about my data." Consider this article from 2007, which cites a researcher who discovered that human error is the most common cause of security breaches.

"So, Mr. Smarty," you say, "You are not really being part of the solution here." Fair enough. Safely backing up your stuff requires two systems to cooperate:
  • Revision control (also called version control or source control), and
  • Off-site backups.
Revision control is software that is designed for tracking changes to program source code. No reasonable development shop works without it these days. It works thus: when you make changes to a file, you push those changes over to a revision control server (this is called "committing" the file), which remembers ABSOLUTELY EVERYTHING YOU HAVE EVER DONE TO THAT FILE. In the blink of an eye, you can revert to an older version, without destroying the data you've subsequently stored in your revision control system (hence, RCS).

Couple this with off-site backups. The best way to achieve this is to run your RCS on your internet hosting. When you save your changes, you tell the RCS to push the changes to your repository of files on your ISP. (Yes, there are some risks in doing this. There is no such thing as "no risk," only "manageable risk," and it's wise under these circumstances to get someone who knows about such things to advise you when first setting up your RCS, to mitigate this risk.) At any point in the future, you can restore every single file you've ever stored there, to any version you've ever committed.

Meanwhile there are guys who work for your ISP who get paid to do nothing but think about how to keep data from being lost. They use RAIDs, which protect systems from drive loss. They do regular tape backups. Some of THEM do multisite backups, automatically mirroring your data to another node in their network to protect against catastrophic failure.

If you can't see how that's better than gmailing yourself all your files, I have failed at this argument.


Other benefits
Not only is this a solid backup strategy that requires minimal manual intervention, there are several side benefits it gives you for free.
  • If you are working on a project collaboratively, how does your collaborator know they have the most current revision of the file? With revision control, you push changes up to your revision server, give your partner access and let them pull the most current changes using the same software. Unlike email, this works in real-time. You can even lock your files to show that you are working on them, so neither of you stomps on the other's changes.
  • Every checkin to revision control allows you to add a comment. So when you are looking for a particular past revision of a file, you can read "Road Trip: Changed protag from a man to a woman" instead of digging through a bunch of files called "RoadTrip_v132.doc," "RoadTrip_v133.doc" and so on. Additionally, the system automatically tracks commit times and revision numbers, so even if you don't add comments, it's no harder than looking through a pile of hand-versioned files.
  • If you work on multiple machines, like I do, it's a snap to keep them in sync: on your desktop, push changes up to the server, on your laptop, pull them down.
  • If you must have multiple backup sites, revision control makes it painless to keep them in sync, as well. You can even configure one revision control server to automatically push changes over to another (though this takes a little black magic; however, there are plenty of people who will gladly help you set this up for not very much money or free--including me).
All right, enough of my ranting. If I have even cracked your resolve on this, I encourage you, not to take my word on it, but do more research. Talk to your programmer friends. Google for some of the terms I've thrown around in this post. Go look at the web sites of some of the systems I'm talking about; the one I personally recommend for people getting started with RCS is Subversion. It is free, it's widely-adopted throughout the open-source community (lots of people to answer your questions), there are a number of easy-to-use clients for it (such as Tortoise SVN), and it's pretty easy to set up. (In fact, some ISPs that cater to developers, such as Joyent, the one I use, actually have a control panel that will greatly simplify the process.) I used to use Subversion, but if you're feeling ambitious, you might have a look at Bazaar, which is the RCS I use nowadays. (Word of caution: it's a more complex piece of software, so don't let that sour you on the whole RCS strategy.)

Lastly, if you're interested in hearing more about this, please comment. I will be happy to reply privately or answer peoples' questions here.

TimK
Saving the world from arcane backup strategies, one writer at a time.

Labels: , , ,

Friday, January 16, 2009

Writing Objectives For the New Year

A while back, I mentioned that I wanted to turn this into more of a writing blog than what it's been, which is largely a dumping ground whenever I need to go off on a hyperbolic rant about whatever video game is currently pissing me off. (Speaking of which, to whoever designed the entrance to Queen's Tower in the new Prince of Persia: I suspect you believe that your work is so awesome it warrants having to play it 37 times. You are mistaken.) I've struggled with that, obviously, because while my thoughts about writing are interesting to me, I'm not convinced they're interesting to the other three people that ever read this thing.

Well, this is the year I suck it up. Writing is the most interesting thing (to me) that I'm doing in my life, and if I don't write about what interests me, I won't write at all (Q.E.D.).

2008 Recap

Writing-wise, here's what I feel I accomplished last year:
  • I finished (which is to say, did enough drafts on to feel that I was comfortable letting other people read) two short stories: "Burning Man" (which was not so much a short story as a novelette that I crammed down into 8k words to fit within the Viable Paradise application guidelines), and "Nayda," a flash piece I wrote for the Apex Halloween contest.
  • On the bright side, "Burning Man" worked and I got accepted to Viable Paradise, which, as early career achievements go doesn't totally suck. I applied because two of my favorite genre authors/bloggers (John Scalzi and Elizabeth Bear) were teaching, and as a consequence got to meet them (as well as several other awesome pro writers, editors, and VP alumni), hang out, and have them tear my work to shreds. It was awesome.
Things I did not accomplish:
  • Didn't really make a serious effort at NaNoWriMo. This was largely because of my sudden change of employment -- the new job demanded a lot of my attention, and I felt I couldn't afford to devote the time I needed to put in to crank out 50K words in November. This is really just a bullshit excuse, but the experience was very useful: I am starting to grok the idea that I need to partition off time to write if I want to get anywhere with it, rather than just doing it whenever I have free time and am not overwhelmed by the desire to play World of Warcraft.

Next up: 2009

2008 was a pretty good year for the writing career. For 2009, one of the things I am going to do differently is have formalized goals. That way, I can check back throughout the year, see how I'm doing, and apply effort as needed to any neglected initiatives. Then, in 2010, I can measure how well I did!

Here are my goals, in (roughly) priority order:
  1. Finish my "Evil Overlord" homework assignment from VP and find somewhere to send it out. For those who know nothing about VP, this is the major assignment from the week-long workshop. You are given certain parameters and asked to write a 5k word story within those parameters. My Evil Overlord story is currently 11K words and about halfway through second draft. Anybody know of a good market that looks at unsolicited genre novelettes?
  2. Critique at least 3 pieces every month. My VP class has more or less bonded for life, it seems, and we regularly swap stories to crit. I have been a little remiss since early November, though I critted a bunch of stuff the other night. 3 stories or partial novels a month doesn't seem too arduous. This might be a softball goal, in fact, but since this is my first year doing this, I'll let it slide.
  3. Write at least one more piece of flash fiction. Short fiction is hard. I have a natural tendency to sprawl; a short story about a guy in a fish market is apt to bloom into a deep examination of his perception of his place in the cosmos. All well and good but I also need to develop the chops to write to length, and to tell a complete story that fits into a smaller box. Fortunately, I already have an idea for a "prose poem" style flash story that I will probably start while rewriting the VP homework story, just as a palate cleanser.
  4. Finish 2-4 short stories of reasonable length and send them out. And by reasonable length I mean 1K-2,500 words. Possibly as many as 5K. Again with the "learn how to tell a story inside a small space." Jay Lake claims he used to write a short story a week, so even I should be able to hit this mark.
  5. Write the novel I was going to write at NaNoWriMo. It seems like a good first novel to write, since there's a high likelihood that the first novel I finish won't be the first one I sell, and it's not one of the Big Ideas I'm so attached to that I'm paralyzed trying to write them.
  6. Speaking of which: sell something. Anything. For the love of God, Montressor! I'm how old now? It ain't like I've got a lot of time left to HAVE a fricking career. Better get the ball rolling.
  7. Put "Nayda" up on the site. Not a lot of markets out there for election horror flash fiction, so I reckon it's a good candidate for starting the free story bank. (Maybe I should hold off and do this for International Pixel-Stained Technopeasant Day.)
  8. Volunteer at ArmadilloCon. One of the things I learned this year, which I really never quite understood, was just how important fandom is to the industry. I mean, hey. I'm a geek. I knew there were cons, and I knew people went to them. I just didn't comprehend what they were for. Having been to 'dilloCon '08 (and WFC the year before), I now recognize that I need to get more involved. Speaking of which, it would be nice if I could get to at least one other con, maybe one of the bigger ones (WisCon?) that isn't in Texas. Not going to make that a formal goal, though, because I'm iffy. (FlyCon, alas, you do not count.)
Notice how one of the goals is not "update the blog more." But if I end up using this space as my journal, to keep track of progress on all these goals, that should just happen. We'll see.

Non writing related goals

What the hey. "Not the most important" doesn't necessarily mean "not important," so I'll throw in a couple of other things I'd like to see happen this year.
  1. Move the blog over to WordPress. I mean, seriously, Google, isn't it about time you embraced OpenID? I guess I can let people use it to login to post here, but I'd sure like to use it to login to my own account, and whatnot. Plus, WordPress will give me a host of other options. Besides, all the cool kids are doing it.
  2. Publish a !@#$% card game. Billionaire or Infected, I don't care at this point. POD has gotten cheap enough that for a couple hundred bucks I can print a few dozen decks to give to friends, sell through BoardgameGeek, in local shops, at cons etc. etc.

Labels: ,