Friday, June 29, 2007
Partway though writing THE GUARDIAN, I decided to change it from third person limited to first person. This was fine, but I manually had to go back and make a large number of changes in the three chapters that I had written at the time. One of the few that I missed resulted in: "I finished brushing his teeth, and spit out his toothpaste."
Also, sometimes when I'm editing I accidentally wind up splicing several sentences or sentence fragments together. Does this happen to anyone else? It usually happens when I get several good ideas in a row, and I'm rushing to get them all down before any leak away. At any rate, I wound up with one sentence in an early draft of THE GUARDIAN that read: "Which I what I had been studying for to pass."
But really, I've noticed this for a long time: it seems like STAR WARS fans definitely adore the various ideas posited by the franchise, but hate how many parts of the stories actually progress and are executed. It's interesting to me, then, how enthralled so many are by the series if this is true. Perhaps this makes STAR WARS the ultimate "high concept" story, then, if this is true, because it is in fact so high concept that it can withstand any hackneyed story that is actually attached to it. Either way, there's something indefinably great about STAR WARS, and the feeling of magic and adventure it elicits is nearly unparallelled -- and yet so much of the "true believer" fans' reactions are still decidedly negative.
That's interesting, and also unfortunate. I think it boils down to plotting, personally, and a few bad choices in subject matter (Ewoks, Jar Jar Binks, Midichlorians, etc). Also it seems like internal consistency is often sacrificed for that which is most dramatic in the moment (see the JIVE article for good examples of this). These are mistakes that any writer would normally get castrated over by fans, and it's also the sort of thing that would probably keep a debut novel from making it into the market at all in today's publishing climate.
It's funny, because looking at STAR WARS can provide so many good lessons for writers on what not to do -- and yet at the same time, it has those indefinable qualities that we all strive for in our own writing (and which so few published books even accomplish). How does one create that sense of magic? Rich-yet-archetypal characters like Obi Wan, Darth Vader, Luke, Leia, Han, and Yoda? If people hate aspects of the writing so much, why is it that they still love these characters so much? Not to mention all the background of aliens, exotic planet locations, strange technology, and so on. How can a story frustrate and captivate people at the same time?
If you've been reading, thinking I have a suggested answer at the end, I apologize. I don't. My only hope is that I'm someday able to write something that captivates an audience in the way STAR WARS captivated me, and yet do so without frustrating them at the same time. Tall order. But that's why most of us write fiction, isn't it? Because we've been captivated by stories we've heard in the past, and we want to add our own voices to the mix in hopes of captivating other readers with our own new stories.
My list of books, movies, and even video games which have powerfully captivated me is hundreds long, and comprises many different reasons and ways in which I was captivated. I write because, having been touched this way by so many other works, I can't not. Each story I write energizes me with the hope that it will touch someone else in some meaningful, powerful way. I write because I can't not.
Thursday, June 28, 2007
Here's my keynote for ALDEN RIDGE:
What would you do if you had to choose between your daughter's soul and the life of every other living person you knew?
Whew, this was an interesting rendering. It took me an unusual number of tries to get the trees the way that I wanted, and to get the perspective right for the camera. Once all the models were in place, I realized something surprising -- this scene had over 25 million polygons! (That's an incredibly excessive amount.)
The reason for the high polygon count was simply the number of foreground trees, of course, and the three detailed terrains that make up this image. Worse yet, I had decided that volumetric atmosphere was needed in this scene in order to really get the right sky/fog effects.
Well, I feel like the end effect was worth it, but all of this conspired to make this--by far--my longest render time ever for a single scene: 34 hours and 28 minutes. Yikes!
To add insult to injury, once the render was complete I discovered that the 2D background trees (on the ridge) had experienced a clipping problem during the super-long render, and there were ugly brown boxes obscuring a large part of the ridge. I thought about trying to do a partial re-render of the scene, but there's not a graceful way to do that at high resolution. So instead, I had to spend about an hour in Photoshop, carefully editing out the glitches by hand. I think the result was actually quite good. But one thing's for sure--I don't plan on doing any more scenes of this level of model/sky complexity any time soon!
Monday, June 25, 2007
Sunday, June 24, 2007
On an unrelated note, if you haven't tried Google Sketchup, you might like that as well. It also has a free version, and is even easier to get into than Bryce. Sketchup is particularly useful for modeling objects or architecture, whereas Bryce is more about landscapes, trees, water, and atmospheres/skies.
Wednesday, June 20, 2007
Of particular note is a new album called 10th King. This is my latest album, and is still a work in progress. I haven't been doing much art since third quarter 2006, so I was also really pleased to recently produce these:
Also nice is the ability to have albums within albums. Many of my albums now have sub-albums that have the lesser-quality images available, but less prominent. This is helpful because there are some legitimately interesting images that fall under that category, but I want to have only my better work showing in the main galleries.
At any rate, you can see the immediate benefit of the changeover to PHP in the image on the sidebar on the main page. It now cycles through a series of photos taken by my wife, rather than always just showing the same one, so I think that adds a bit of freshness to the mix. I have more complex additions planned, but one thing at a time, right?
Friday, June 8, 2007
Security expert and tech curmudgeon Bruce Sterling famously quipped at this year’s South-by-Southwest conference that “I don’t think there will be that many [blogs] around in 10 years. I think they are a passing thing.”
Interesting. But I agree more with "The Trivia Geek," the author of the post, who puts forth his own theory on why blogs will, in fact, survive. There probably won't be nearly so many blogs, since those participating purely because of blogs' current fad status will likely move on, but good blogs will likely always remain until another tool comes along that is better able to "let writers write."
Darrell knows he is Alden Ridge’s only hope, for he alone has seen this before -- he and Lela are the sole survivors of the collapse of nearby Stantonsburg. He must quickly discover why the land rots, why animals are becoming supernatural aberrations, and why the townspeople are undergoing the most terrifying changes of all -- despite the risk that saving every other living person he knows may mean surrendering Lela to the dark force that touched her when Stantonsburg fell. As Alden Ridge descends into chaos, he frantically searches for a way to save both his daughter and the town.
Also, I've adjusted my target back to about 95,000 actual words. Turns out my real goal is 80,000 words based on the old 250 words per page estimation, and so that means somewhere in the neighborhood of 95,000 words based on MS Word's word count feature. Turns out that the estimation based on the count of pages in standard format is what most agents and editors actually expect to see, though. Now that I know this, it's actually fairly apparent on many of their blogs. Take literary agent Jonathan Lyons' comments under this post at his blog.
For now I'm going to keep expressing my progress in actual word count, though, because that seems more meaningful for now:
24,941 / 95,000 (26.3%)
Wednesday, June 6, 2007
Today at work, I solved a technical challenge that I had concluded was impossible a few years ago. This wasn't an earth-shattering discovery by any stretch, and I'm sure that someone somewhere has thought of this before, but my solution to this problem was a sideways one, and that's always really satisfying. It took all day to code (which is really long for a single feature for me), but now I have a way to:
Automatically script all changes to all stored procedures, table triggers, and functions in 2+ (presently 4) connected databases on a single server. The reason that this is a triumph is that it was all accomplished in completely native T-SQL code in SQL 2000, and can all be administrated from a single database without any hard-coded links to the other databases. Even better, I figured out a graceful way to detect when the same peice of code has been changed in multiple databases that share an identical codebase -- I can even recognize which ones were identically updated and which ones are now in conflict with one another.
Now, if you're one of the fellow writers who frequents my blog, your reaction is probably "uh . . . whatever." That's fair enough, if you're not an experienced SQL programmer. Even if you've worked with databases for years, if you're not familiar with the nuances of dynamic coding techniques, system tables, cache strategies, and cross-database scripting (especially dynamic cross-database scripting), then it's unlikely that you'll have any chance of understanding why I'm so pleased.
It's the same way I'd look blankly at you if you told me about something brilliant you did to fix your car, or some sort of crazy new technique that you used to save a patient's life today. You can explain all you like, even laying out exactly how your entire triumph was accomplished, but I still won't get it -- not really. Oh, if you're good at explaining I could follow what you were telling me, but there's no way that someone not already an expert in your field is going to have a true appreciation. The listener's reaction is likely to either be "that sounds easy" or "that sounds impossible, like all work in your field" depending on the nature of your explanation.
As a programmer, I generally have the benefit of being in a "that sounds impossible" field. Certainly some users occasionally think that a difficult task should be much easier than it actually is, but more often programming is regarded with a certain degree of mysticism. I'm really going to miss that when I'm a full time writer someday. Just because most people can type or construct sentences, they assume that novelcraft is a lark.
I've spent several hours this evening reading my work out loud, editing like crazy, and the result is a much tighter, much more varied-sensory-inputs, much more speakable and eloquent prose. I can say this to all of you, and you understand immediately how this is an accomplishment. But a frustrating number of outsiders are more likely to wonder what the big deal is. After all, when they sit down to pen their first of many bestsellers, their first draft will be so perfect as to merit immediate publication (and bags of cash) sans any editing at all.
Resist the temptation to hit these people. Instead, build relationships with your fellow authors; they understand what you're going through when no one else is likely to. If you have to explain your triumph past a certain level to a lay person, you probably can't explain it to them. Even the best-written words cannot communicate ideas that the reader is not prepared to accept. That last is actually an important thing to remember in general.
Tuesday, June 5, 2007
I've seen this question various places around the blogosphere, so I thought I would address it as the first in a new "Tech Q&A" series. If you've ever tried to post the "<" or ">" characters in blog comments, you've undoubtedly found that these symbols (and anything between them) mysteriously disappeared. Why is that?
Well, when you type in your comments you are entering what is referred to as "plain text." That means that, while it's still in the comments box, your browser views whatever you type in as being literal Roman characters or symbols. Something for humans to read, in other words. When you type left or right carats here, there's no problem.
The problem arises when that plain text is submitted to blogger. Blogger no longer treats it as plain text, but rather starts treating it as HTML markup. This is actually very helpful, because it let's you embed links and images in your comments, and/or allows you to italicize or bold words using those tags.
The only problem with this approach is that if the commenter has entered certain characters -- most notably the left or right carat -- then content after the < will disappear. If there is a > that follows it, then content will become visible after that. I called this a problem, but really this is just how the Internet works in such situations; I don't think that there is much blogger could do differently save possibly not allow HTML in comments at all (which would be bad), or load their rich text editor on the comments page (which would be bulky, and thus undesirable). So I think that they're doing about the best they can reasonably do at this point.
What if you really need to display that < or >, though? For instance, what if you're writing out a math equation or trying to show someone else how to create some HTML code? Fear not, the browser programmers of yore thought of this long ago. There is a special character sequence that tells the browser to show a left or right carat to the user, but that carat will be ignored by the browser. My recent link to the ASCII Codes reference includes not only these sequences, but many more.
Here are the relevant codes:
When you want to show a literal "<" in the posted comments, type < instead.
When you want to show a literal ">" in the posted comments, type > instead.
Those character codes probably seem incomprehensible, so let's break them down. First, there is an opening character that tells the browser that a character code is coming; that's the ampersand. Then comes the actual character code itself, which is specific to the character you want to print, and then comes the closing character that tells the browser that your character code is done; that's the semicolon.
In the specific case of the above examples, the "lt" stands for "less than," and the "gt" stands for "greater than." Easy to remember, right? Feel free to ask for further clarification in my blog comments here, or even to try our the character codes there for yourself if you want to. Also, if anyone has topics that they'd like to see in a future Tech Q&A feature, please send them in.
The first and second drafts of a scene often require nearly the same amount of work and thought as one another. The second draft is just as much writing as the first draft is, even though it rarely produces much word count; that's what I think.
Monday, June 4, 2007
To kick off my topics on programming, I thought I would open with a list of web programming resources that I find indispensable. There's some stuff on this list both for any advanced programmers who happen to be here, as well as those with only a passing familiarity with basic HTML tags. In the past, this is what I have given to people who join my work team with a degree in computer science but no experience in web programming.
Here we go:
W3Schools Introduction to HTML
If you have a blog or website but don't know anything about HTML, you should probably start here. Why pay someone to handle the basic stuff (or be stuck relying on a WYSIWYG editor alone), when you can learn a little bit of basic programming syntax on your own?
If you know the basics of HTML, and now want to learn how to make your website come to life, here's how you can put the "D" into DHTML ("D" stands for "dynamic"). This is good stuff to know if you have anything beyond a basic informational website (or blog).
Big Browser References
MSDN DHTML Elements
This reference is my very favorite, but you probably need to already know HTML pretty well before this will be very useful to you. The tree on the left menu includes all of the DHTML objects/tags by name, and you can get oodles of info (and sometimes examples) within each. In each object/tag, there are a number of subsections, and I go through each below:
(+/-) Click to Show/Hide Details
The Behaviors section details functionality related to “Behaviors,” which are IE-specific. Not only that, but in IE6 a number of them are prone to memory leaks. I wouldn't recommend using anything in here.
The Collections section has a list of all the collections of sub-objects that can be accessed through JS. Do note that some of these are IE-only, even more so than in the other sections. For example, use the childNodes collection instead of the children collection (they are identical, but the former is cross-browser compatible), and don’t ever use the all collection (that’s an IE-only thing. There is no equivalent in the standards, but that can be worked around pretty easily).
The Events section includes all of the JS event handlers (these are all client side, understand) that can be attached to or triggered. All of these can be attached to by using them as an attribute on the HTML tag itself ( for instance <body onload="pageload();">, which fires a custom JS method called “pageLoad” when the body element is loaded), or via JS. It’s a bit harder to do through JS, because the syntax varies between browsers.
The Filters section includes info on the DirectX-powered visual effects that can be implemented. These are implemented as CSS properties. These are IE-only, so generally I do not use them, but there are also similar functions for many of these in FireFox, so if you did want to implement alpha blending (by-pixel transparency) or something, you'd do so by adding code for both an IE Filter and for a FireFox Effect to your CSS definitions. The browsers just ignore CSS rules that they can’t interpret; as you learn more about web programming, you’ll see how you can use this to your advantage a lot.
The Objects section has a list of all the JS properties that are actually full sub-objects in themselves. All of the display-focused objects have a style object which we’ll use frequently. Most objects don’t have much more than this that is useful, however. Some of the major exceptions are window, document, and iframe, which have a number of very useful sub-objects that you’ll use from time to time.
Do note that some of the information in here is IE-only, though a lot of it also applies to FireFox (80%, let’s say). You can see if a given reference item is cross-browser compliant by looking at the bottom of the item’s page in the Standards Information section. If there isn’t a standard that applies, then you know that nobody else supports this.
MSDN CSS Reference
Pay attention to the sidebar on the left in here. A LOT of this information is cross-referenced from the DHTML reference, but there is also a lot of information on CSS rules, selectors, etc, that you can’t find in the other reference. If you are looking for a good CSS reference, this section is a great one for IE, and the Overviews/Tutorials link on the sidebar has a lot of introductory reading material that would be good to familiarize yourself with the concepts at play here.
Gecko DOM Reference
This is the FireFox analogue to the IE MSDN references. “Gecko” is the name of the underlying HTML rendering engine that is used in the Mozilla and FireFox browsers (these are actually two separate browsers, even though they are both by the Mozilla Foundation. But almost everyone thinks of both as FireFox.). This link also includes great into articles about “What is Gecko?” and “What is the DOM?” and things like that. Good introductory reading that also applies to IE (in the case of the DOM). Below that is the actual element reference, which is what you’ll use in the long term whenever your HTML/CSS/JS works in IE but doesn’t work in FireFox for some reason.
General Web Programming References
W3Schools Color Names Reference
Includes the names of all the “named colors” in HTML, as well as their hexadecimal codes. My advice is to use a program like Photoshop (or whatever) to get a color the way that you want, and then use that program to tell you the hex code. But if you don’t want to go to those lengths, here’s a good reference of the basics. Great for designing blog color schemes!
W3C HTML 4 Elements
The W3C is the “World Wide Web Consortium,” and this is their reference for the various elements of HTML 4.0. That means that it does not include some of the more recent elements, or all the properties, but this gives a pretty good baseline of what is supposed to be out there. This is of somewhat limited use, primarily because of the manner in which it is presented, but if you can’t figure out something from the MSDN references or the Gecko reference (or by talking to me), then this is the next place to look.
W3C Document Object Model Core
W3Schools HTTP Messages Reference
Good reference for understanding those message/error codes that you've probably seen about town. 503, 404, 200, and all that. Everyone knows what 404 means, of course, but what about all the others?
W3Schools ASCII Codes Reference
Looking for the HTML syntax for an ASCII code? This has a pretty good list.
If it ever turns out that you need to start dynamically drawing complex shapes (like pie charts) in just IE, then VML is one way to go. VML stands for Vector Markup Language, and lets you draw vector graphics in IE5 or greater. A better alternative might be to render custom images on the server side (using ASP.NET or somesuch), because that would be cross-browser compatible, but that has the disadvantage of being more intensive on the server, and immutable except when a round-trip to the server is made for the updated image. VML can be changed in real time on the client side, just like any other part of your page.
This section contains articles that I have found useful on various topics. Most of these topics are fairly advanced or are very niche in nature, but might be just what you're looking for at some point in the future. I have listed them in descending order of relevance.
Internet Explorer & CSS Issues
Introduces a few of the cross-browser compatibility problems. This highlights some of the most common problems with CSS between IE and other browsers, and shows workarounds.
Drawing Lines in Mozilla and IE
Normally, drawing free-standing lines is not supported by browsers. You can do this with VML in IE, but that’s in IE-only, and very markup-heavy. You probably wouldn't have any need to do this sort of thing unless you got into diagramming in the browser window (which is a feature of my company Starta, by the way, though we use an entirely different approach for this).
This cynicism regarding technological advancement is what makes Hugo award winner Charlie Stross's predictions for the near future so compelling to me. In his predictions, Charlie intentionally doesn't account for the emergence of any new technologies, or for major breakthroughs in any of the leading-edge fields of today (genetics, nanotechnology, et cetera). Instead he focuses on following existing trends with existing technologies, such as computers and the Internet.
Part of his conclusion:
Meet your descendants. They don't know what it's like to be involuntarily lost, don't understand what we mean by the word "privacy", and will have access (sooner or later) to a historical representation of our species that defies understanding. They live in a world where history has a sharply-drawn start line, and everything they individually do or say will sooner or later be visible to everyone who comes after them, forever. They are incredibly alien to us.
Is anyone else reminded of the Hive Queen from ENDER's GAME? As alien as the lives of modern humans would be to world citizens from even a few hundred years ago, that's how alien the lives of our descendants are likely to be -- with or without hover cars and relativistic space flight. I've never thought of the evolution of our society in quite these terms before, but if Charlie Stross is right, the future might just be closer than we think (and different than we expect, as always).
Essentially, I did a good job of building tension all throughout the first two chapters, but that tension basically fizzled in the third chapter when the danger was not realized soon enough. That danger is realized a few chapters later, but the tension just can't survive that long. The solution that we came up with was to add a new scene to the end of chapter two. This new scene adds a lot of excitement (and action) to the very start of the book, and it also ties together well with the following scenes.
The total that I wrote for this addition to chapter 2 was 1,200 words. I'm not going to update my online excerpt until I've had a chance to revise this new content at least once or twice, but I expect I'll post it sometime within the new two weeks. I'm very excited about this addition--I think it fixes an issue of pacing that I had, and it also improves the tone of following scenes just by its inclusion. Mostly my opening was good, I think, but this was the one major thing that seemed to be missing. It's really nice to figure out a new piece of the puzzle like this.
Now I'm just going to need to re-read all the following chapters, and make small edits where needed to account for this new scene; that's a small price to pay. I hope all your projects are going well!
24,695 / 80,000 (30.9%)
Saturday, June 2, 2007
But really, I'm pretty happy with the results of my last two writing sessions, anyway. It will require editing of course, as all my first draft writing does, but there's nothing majorly wrong with it that I can see at this point. Sometimes when I write something for my first draft, I feel like it's total crap even after I've just finished writing it. One of my now-favorite scenes in THE GUARDIAN started out that way, but after a few rounds of editing it became one of the most emotionally-charged scenes in the book for me. Funny how things like that can happen. Keeping that in mind should be a good inspiration for me to remember that there's less pressure on my first draft than I sometimes feel like.
As a side note, this is my 100th blog post. Time really flies, doesn't it?
23,520 / 80,000 (29.4%)
Friday, June 1, 2007
However, yesterday Rachel made an interesting post on what the day after publication feels like. Bleh. Her feelings are understandable, and something that we should all keep in mind as we strive to reach publication. As was noted yesterday, if you craft your entire identity around reaching some ethereal goal, you'll always be disappointed. Fortunately, Rachel Vincent clearly hasn't done that. Here's hoping that we can all make our way through such major writer's-life events with such equanimity.
I actually think that my mis-pronounced/spelled version is better and should be a new word. Whereas elongated refers to something which is simply lengthened, elegonated refers to something which is lengthened in a graceful or elegant style.
What made-up words have you accidentally coined?