Sunday, November 30, 2008

NaBloPoMo 2008: Done!

So, it looks like I've managed to finish NaBloPoMo this year. It wasn't exactly easy; there were a few points where I almost gave up. But somehow, I managed to come up with something to write every time, even though it was sometimes pretty lame. 

Looking back, I'm really glad I did this. I feel like by forcing me to write something every day, whether I had something to write about or not, this competition (is it really a competition? I dunno what to call it exactly, maybe "event" is more accurate) has really drawn me out more than I'm used to. It's like I've had to put some essence of myself into this blog, and I'll probably be able to look back at this in a few years and really get a sense of who I had been at the time. I think that's neat. 

Kiriska: Thanks for talking me into this! Sooooo totally worth it. Maybe next year, I'll do NaNoWriMo with you too. (maybe. <_<>_>)

Everybody else: If November comes around next year and you need something to fill the time, this event is definitely worth your time. Don't worry about what you're going to write about, or anything like that, just start and see where you end up. (Or if you're feeling impatient, no reason not to start now! It's not like NBPM is a terribly formal event anyway.)

I suppose the big question now is, what am I going to do with this blog? I'm planning to keep it going at this point, but I probably won't be sticking to the daily posting schedule. Two or three posts a week is probably more likely. Since I'll defintely forget about that soon if I don't set a definite target, I think I'll commit to a MWF update schedule. 

So: that's that. See you tomorrow!

Saturday, November 29, 2008

The Free Lunch

Cory Doctorow once made an excellent anaolgy in an essay which I'm apparently too lazy to find at the moment. Imagine, if you will, that tomorrow some sort of device is created which will create - from thin air - any meal you could possibly want, for free. Furthermore, the device itself is cheap enough that it can be installed on every street corner, if we so choose. The restaurants and the rest of the food industry would fight it bitterly, of course. And maybe they would have a point. If we actually mass-produced such devices, it would put millions upon millions of people out of business, and shut down an entire industry. They would definitely lobby heavily to have the device mothballed, or at least heavily restricted, for the protection of the economy. And yet, on the other hand, we need to keep an eye on the bigger picture. Can you really weigh the downsides against free food for everyone?

This, in a nutshell, is the controversy that we'll see played out repeatedly over the next few decades, as production costs are driven to zero by rapid technological advances. The recording and movie industries were unlucky enough to be caught first - their product is easily digitized, and their costs are almost entirely fixed costs so they're forced to make up the difference by increasing the unit price to well over the marginal cost of a unit. As a result, you can get their products for free online, and it's costing them heavily (though, that's debatable, and they may survive yet if they're smart about it). But, they certainly won't be the last industry to be caught. Robotics is a pretty primitive field right now compared to what it could be; if it were to reach its potential I don't think it's unreasonable to assume that 80% of the people in the world could be put out of work. 

What do we do then? I suppose I mean that question in two senses. First, what do we do with society? Some kind of massive socialist state is probably what we'll end up with, but it's not at all obvious that that's the best solution. (What do you guys think?) Secondly, what will we do individually? High-tech jobs will obviously still be in demand, but there won't be all that many of those. Maybe we'll see an explosion of creativity, of art and literature and all that neat stuff, but that's really not for everybody. What will we have to offer the people who need a sense of purpose, the ones that would never be satisfied with a techno-utopia where nothing really needs to be done?

Some of you will say that I'm guessing way too high on my 80% figure, but don't be too sure. Unskilled manual labor will be the first to go, and indeed, that's already happening in some places - witness the mechanization of the auto industry, and how few workers they actually need in the factories these days. This will become the norm over time, and after a while automation will make inroads in more specialized areas as well. The wonderful/terrible thing about technology is that it only moves in one direction. Once an advance is made, that ground is never given up; the trends that accompany technology are stark and to some extent unstoppable. The genie's out of the bottle, and we need to stop trying to push it back in, and start making wishes, already.

Friday, November 28, 2008

Black Friday: Part II

Been up for 24 hours and still going strong! :D

So, the plan for Black Friday lasted about as long as it took for us to get to the car, but I was expecting that. The first stop was Wal-Mart. Classy! :D Purchases: miscellaneous girl junk, and speakers. The second stop was the mall. Because we are teh indecisive, we ended up driving by Best Buy (to see the line!) before actually going back to the mall and getting out of the car. The mall was awesome, because we snuck in before it had, strictly speaking, opened. It's like breaking & entering, except there was no breaking involved because the door was unlocked. (Actually, that's inaccurate, and the reason is a neat bit of trivia - ask me on AIM.)

Eventually, the mall actually opened for real this time, and we went inside to... wait in more lines. >_> My first stop was Starbucks, because their Caramel Apple Spice Whatchamacallit is actually really good. Then I spent an hour waiting in the line for the Apple store, because my cousin absolutely needed an iPod Touch. (Retrospectively: If we'd just shown up a bit later, he would have still gotten the iPod. But we really wanted the experience of waiting in line for stores to open, for some reason.) Eventually, the store opens at 6 AM, and we rush in, and my cousin gets in line to buy his iPod, and I kind of wander off because really, what am I going to buy at the Apple store, I was just there for moral support. :/

After that, it was light out, so hey, why not go to IHOP? Everything that had happened so far that day was overshadowed by this discovery: Nutella crepes. o_o They are every bit as awesome as they sound. After we ate, we walked to Half-Price Books, and I picked up a collection of short stories by David Brin that I didn't know existed. Then, we all came home and I was going to sleep except I decided to blog instead but now I am kinda tired so goodnight.

Thursday, November 27, 2008

Black Friday: Part 1!

So the plan is apparently to wake up at 2:30 or so, and go and stand in line somewhere, and buy stuff? You'd think Black Friday was an actual holiday, the way people are acting. Naturally, I'm not actually going to wake up at 2:30 - that would involve going to sleep at, what, 6:30? Not going to happen. So, it's 1:28 (AM) now, and I'm supposed to go around and wake people up a little before 2:30. >_>

This is part 1 of this post - the other part will come after I get back, and will have impressions and... stuff. Not really sure what to expect; all the stories I've heard have left me a little worried. Will we be trampled by hordes of bargain-hunters? Will we have to wait in line for hours or days before getting inside? Well, I'm not sure yet, but you'll find out in part 2!

I'm really not sure what stores we're going to. The tentative plan involves Fry's (which may or may not have been a transparent ruse to get me on board, and may or may not have worked as planned), and then probably some other unspecified/forgotten stores. My mom seems to have a problem with Fry's, though, so really it's anybody's guess where we'll end up. (I was going to get a new hard drive at Fry's (down to 4% free space, wooo!), but I ended up getting it at tigerdirect this evening for around half the prices I saw at Fry's last week, so meh at them.)

Post of Giving Thanks!

So, I figure a somewhat corny (and relatively short) post is in order today. 

If I absolutely had to pick one thing that I'm thankful for, it would be friends. And, when I say friends, I'm mainly talking about you guys - the people I like well enough to actually tell about this blog I'm writing, just about random stuff. (And also the few people who I've told about this blog, but haven't actually given the URL yet. You guys are included too. :) Thanks for all the moral support you've given me this month. Thanks for not abandoning me when I start spouting technobabble. Thanks for the comments, the IM conversations, and the feedback in general. Without all of you being there for me, I would have given up a long time ago.

Seriously, you guys rock.

Wednesday, November 26, 2008

The Uninterested God

It goes without saying that, in order to create the universe, God must be all-powerful, all-knowing, and basically absolute in every other way we can come up with. I say "it goes without saying" empirically, since over the course of my entire life, I've never seen anybody question it. Well, let's do something novel today. :)

The concept of simulated reality is an interesting one, and was on my mind because of the recent xkcd. A quick rundown for the non-CS majors (and ex-CS majors who never made it to Automata Theory :) in the audience: A cellular automaton (which is what the dude is doing with the rocks) has been proven to be equivalent to a Turing machine, and therefore is capable of any computation that any other Turing-complete machine is capable of. All computers are Turing-complete (well, unless you want to be a jerk about it and say that they're just finite-state machines), meaning that a guy in the desert with infinite rocks can run any program that any computer in the world can.

Now, if you accept even the weakest possible form of the simulation hypothesis - that, were we living in a simulated universe, it would pretty much look like this one - then you have to at least admit the possibility that God is, in fact, standing in a desert pushing rocks around. If we can assume perfect simulation, then there's no way for us to "peek under the covers". Or, to put it another way, if the universe is just a simulation, weoll never find out. An uninterested God is kind of depressing, but empirically, at least, it's indistinguishable from the alternative.

Let's go one step further. What if, a billion or two years ago, our God-of-rocks got bored of pushing the rocks around? After sitting around for a while, he decides to build a machine of some sort to push rocks around for him, because he's not a slacker like me and doesn't just drop projects halfway through. Now, there's no longer anybody at the helm; our universe is running completely on autopilot. Here's the neat bit, though: not only would we not notice the switchover, we wouldn't even be able to tell that a switchover had taken place. Our little machina ex deus has taken the reins without (from our perspective) skipping a beat.

Let's go one step further. Suppose that, instead of placing rocks in rows, our God-of-rocks had laid out a careful pattern of rocks at the top of an infinite hill, and then set them rolling in such a way that, as they bounced off each other, they fulfilled the rules of the cellular automaton. Now, he doesn't even have to build a machine; gravity will keep the universe running in perpetuity. There are a few key questions, though. The first, and easiest: what if the hill isn't actually infinite? What happens to us when the simulation, forgive the pun, crashes? The second: What if there was no God-of-rocks in the first place, and the rocks had just happened to be in a convenient pattern when they fell? Do we still get to exist? The third, and most brainbreaking question: There are some rocks on the other side of the hill, that fall at random. Do they end up creating a universe too? What about falling motes of dust, or flowing water molecules? Hell, since we're talking about cellular automata, what about our own cells? Could we, by our very existence, be creating simulated worlds?

Let's stop there. It's really easy to drive yourself crazy by following that line of reasoning too far.

...well, okay, one more. What makes a "real" universe any more real than a simulated one?

Tuesday, November 25, 2008

The Complex Nemesis, or, Less is More

Complexity is the enemy.

When it comes to software, there's an undeniable correlation: all else being equal, a more complex piece of software will be more buggy, less secure, and less useful. (You can probably generalize this to the real world, but that's really outside the scope of what I was intending to blog about today. >_>) And yet, for some reason, people insist on creating incredibly complex applications.

It's completely possible to write 100% bug-free code. The trick is to make the program simple enough that you can keep the whole thing in your head at once. For example, here's a program I finished the other day. It's short, simple, and I can guarantee that it's completely secure and bug-free. You may legitimately argue, but what if I want a program to do more interesting things than that?

Once upon a time, a bunch of really smart people went down this same line of reasoning, and UNIX was the result. The fundamental concept of UNIX is basically an approach to managing complexity - you write programs in such a way that you can use them in other programs. (Appropriately, UNIX is itself a simplification of another operating system - people used to joke that it was "castrated Multics". XD) This ended up being such a robust approach that today, nearly four decades later, it's basically unchanged in modern UNIXes.

But something, somewhere, went horribly wrong. Today we have all these fancy graphical interfaces, and somehow they ended up being incredibly complex. The complexity gives us software that does some pretty nifty things, but it comes at a price - software in general is less reliable than it used to be. There's collateral damage too; in a GUI, you can't stitch programs together the way you can on the command line. When you hear somebody complaining that the command line was better, it's not just nostalgia, it's the bitterness that comes with seeing a fundamentally superior system discarded for one that looks prettier.

We are long overdue for a radical simplification in program design, though plenty of things have been tried. Some programs (generally UNIX) take the approach of splitting off the core functionality of a program into a separate library, or calling command-line programs from the GUI, but this is often a pain. Object-oriented design was an attempt to make code more intuitive rather than less complex, and it succeeded, but only to a certain extent. Unit testing tries to gain the benefits of the old UNIX model with respect to bugs, and it succeeds, but takes a lot of effort, and doesn't address a lot of other problems of complexity. Use of higher-level languages takes care of a lot of complexity, but carries some performance tradeoffs, and for some reason rarely occurs in practice. No, a real solution will have to be something completely new.

This isn't just a code issue, either, it also affects user interfaces. Apple understands this really well. I can't set the time on a microwave without a lot of trial and error, but I can operate an iPhone - a much more complex device - pretty much intuitively. Programmers are almost always bad interface designers, and designers are almost always bad programmers, but Apple seems to have found a good balance. Here, ironically, the shoe's on the other foot when it comes to operating systems, since Linux is host to some pretty atrocious ones - Blender and Gimp spring to mind, though the latter has improved recently.

Monday, November 24, 2008

The Death of Advertising

Dave Winer blogged the other week on the death of online advertising, and I must say, I agree with him... mostly. In the long run, online advertising as we know it is doomed, for a very simple reason. People put significant effort into blocking ads on the web, filtering spammy emails, and skipping commercials on TV. When your business is centered around showing people things they don't want to see, you aren't going to stick around very long.

At its core, advertising is a surprisingly inelegant solution to a fundamental problem of capitalism. Let's say businesses A, B, and C sell purple widgets. When you want a purple widget, how do you know who to go to for it? The solution advertising offers is for each company to tell everybody, "Hey! Purple widgets!" This has a couple of problems. First, it's inefficient; the majority of people don't want to hear about widgets of any sort. Second, and more subtly, if business C decides not to advertise, and lowers prices instead, the market will punish them despite their lower prices. On a fundamental level, that's not how we'd like capitalism to work.

Google has a really interesting alternative to traditional advertising going on. The basic premise is, instead of telling people about your product ahead of time, only tell them when they're actually looking for something. This is a really neat idea, but unfortunately, it only works well when you've got a near-monopoly on search, like Google has. Google also does a lot of traditional advertising as well; I'd be really interested to see their hit rate for both types of ads.

Even so, the idea has a lot of room to grow. Imagine this fairly common scenario: you want something, but you have no idea what stores would have it in stock. You go to your friendly neighborhood search engine, and it comes back to you with a list of stores near you with that item in stock, along with prices. For bonus points, it could also show only stores that are open at that moment, and give you directions too. Google seems to be about halfway there, with Yahoo not too far behind. The only missing piece left is a big database of what stores actually have on their shelves.

When (not if) that becomes a reality, traditional advertising will take a hit. When people can find the same information they get from ads more easily, advertising will end up being less profitable, and we'll see less of it. I, for one, welcome our new on-demand advertising overlords.

Sunday, November 23, 2008

Four orders of magnitude

I went to a talk the other day by Andrew Chien, the director of research at Intel. It was pretty light on technical details (which was disappointing considering the audience was mostly hardcore CS people), but it was still a really cool presentation. The focus of the talk was "essential computing", which basically means making advanced computation more reliable, so that people will actually be able to count on it.

I mean more reliable in a broader sense than just not crashing, of course; like I've said before, not crashing should really be the bare-minimum standard for software. Technology can fail in a lot of ways, even when it's working perfectly - if you expect to be able to do something with a piece of software, and then you can't, that could be considered a failure by some stretch of the imagination. So, when Mr. Chien was talking about essential computing, he was mostly talking about making computers do things which they can't do right now, but which seem like things they should be able to do.

You know what else has computers that do what it seems like they should be able to do? Science fiction. A lot of the talk did actually center around sci-fi concepts, or ideas which got their start in sci-fi, which I thought was really pretty neat. It's like, here are people actually working on all this stuff that seemed ridiculous not too long ago, and getting results! There will probably be another blog post or two about the talk, but today there's just one specific comment that stuck in my mind.

Mr. Chien was talking about real-time image processing, and how current-generation systems take about 10 kilowatts of power to run the sort of processing they need. To run this same program on a handheld device, you'd want it to draw less than one watt, for it to be feasible. Now, in any other field, that flat out just won't happen - the internal combustion engine, to make up an example, won't ever become ten thousand times more efficient. In computer science, though, we can probably expect two orders of magnitude improvement in architecture, another two orders of magnitude from better algorithms, and we could see the necessary four orders of magnitude improvement in as little as five to eight years.

This statement really resonated with me, because as I've been realizing lately, this is pretty much my favorite thing about computer science. I've been reflecting lately on what I want out of life. Overall, I'm pretty content with stuff; I don't really care about money, or prestige, or any of the stupid social games people play. Maybe someday, I'd like to find a nice girl and start a family, but even that's not a priority. What I've come to realize is that the most important thing to me is always having something interesting to do. The history of CS has been a series of revolutions, some more significant than others. Based on its history so far, it seems reasonable to assume that the field will provide me with interesting things to think about pretty much indefinitely; and really, what more could I ask for?

Saturday, November 22, 2008

Shameless plug: Ponoko

I normally wouldn't do a "shameless plug" post, but for two reasons. First, I think these guys have a really neat business. Second, it's 5 AM and I can't think of anything else to write about. >_>

So, what's Ponoko? Here's how it works in a nutshell: You draw up a blueprint, pick a material on their website, and they'll cut your design from the material and send you the pieces. And, that's basically it. They have some nice services on their website where you can sell your designs to people, and other stuff, but cutting things is the core of their business.

The thing that I think is neat about them is that they've set themselves up with a relatively simple business, and yet simultaneously allowed for a lot of creativity. Look around at some of the designs on their site - there's some really neat stuff in there. The small-scale nature of the whole thing also allows you to get stuff made that'd normally be way too specific to actually get manufactured in bulk.

If you're wondering why I have Ponoko on my mind, this might look familiar to you. Earlier tonight, I ordered version 2.0 of those glasses; this batch will actually be able to stick to my face, I hope. If you want a pair, I'm probably going to have a few extras - first come, first serve. (If you don't recognize them instantly, don't worry about it, you probably won't want one anyway.)

Friday, November 21, 2008

Reflections on the water

Jules Verne was way ahead of his time. Sure, all good sci-fi authors are a little ahead of their time, but Verne was way ahead. In From the Earth to the Moon, for example, he predicted manned missions to the moon over a century before they actually happened (though he was a bit off about what we would find there).

Verne's time has come and gone, though. We've been to the moon, and brought back souvenirs, and that was long enough ago that most people aren't old enough to remember America's finest hour. We can get around the world in eighty hours without too much trouble save jet lag, and we have satellites that can get around the world in eighty minutes, or even less. The Journey to the Center of the Earth might seem like a silly adventure story these days, but only because we've mapped out the tectonic plates, and know the composition of the Earth all the way to the chewy center.

And yet, it seems like there's still something missing. In his 20,000 Leagues Under the Sea, Verne painted an astonishing portrait of the world beneath the waves. (Disclaimer: I read the book in the third grade, so my recollection of it is a bit hazy, so I won't be going into specifics.) Somehow today, nearly a century and a half later, we haven't significantly demystified the ocean since the day the book was published. If anything, the decline in sailing since then has actually remystified the oceans for the majority of people.

Why haven't we explored the ocean thoroughly by now? There's the obvious problem with putting stuff underwater; waterproofing everything is kind of a pain. You also have to take into account human factors. Fundamentally, we're a land based species, and we'll probably never feel totally comfortable underwater. Still, both of these are pretty unsatisfying reasons. There's no fundamental reason for us to avoid exploring the ocean. All of the obstacles I can think of are eminently surmountable.

One of these days, we're going to colonize the oceans. Building stuff underwater may be more expensive, but right now we have a finite amount of land, and exponential population growth, and one day the benefits will outweigh the costs. It'll probably start near densely-packed urban areas that are on the water - Manhattan, Singapore, a couple places in Japan. (Come to think of it, I wonder who owns the offshore property rights?) When we start moving into the sea, we're going to need a much deeper understanding of it, both scientifically, and informally for the average person living underwater.

Thursday, November 20, 2008

A forgotten pet peeve

The TI-83 pisses me off.

Remember the TI-83? Introduced in 1996, it was a mainstay through middle and high school. Not only could it get you through various math and science classes, it was also programmable in some form of BASIC; sufficiently bored and gifted students could write simple games to keep themselves occupied. Even if you couldn't write programs yourself, there were ways to get them onto a calculator, or you could type them in yourself if you were really bored.

Fast-forward to 2008; desktop computers are maybe a hundred times more complex than they were in those days. Tremendous advances have been made in every field of electronics. You can speak into your cell phone and have it search Google for you, for crying out loud. Nearly every device out there has come a long way since 1996 - except for the TI-83.

One would think that Texas Instruments, at some point in the last 12 years, could have found some way to upgrade the venerable old graphing calculator. And, one would be right; they've come out with a series of successors, with successively improved specs. The successors do not piss me off. For example, there's the TI-Nspire, which has a CPU 25 times faster than the TI-83, about a thousand times as much memory (and I wish that was an exaggeration; if anything, it's an understatement), and a much nicer display. It retails for about $140, which I find wholly reasonable.

Given the huge difference in specs, you'd expect that the TI-83 would cost next to nothing these days, right? Wrong. Somehow, in sheer defiance of the laws of the marketplace, not to mention common sense, the TI-83 still retails for about $100, not significantly less than it did all those years ago. Looking at the prices, it's hard to imagine that the Nspire is capable of going head-to-head with an entire classroom full of TI-83's.

I don't know how, but somehow the TI-83 is stuck in an eddy of history, refusing to acknowledge that better technology has long since passed it by. And, for reasons I'm not totally sure I understand, this really ticks me off.

Wednesday, November 19, 2008

Hiro Nakamura, Part II

Overall, I've gotta say I'm a little disappointed with the responses I got. Maybe I should have said Arthur Petrelli instead of Hiro, so I could get some replies that didn't hinge on "Well, Hiro's a pretty nice guy, so..." :p


First, let's look at some initial constraints. Hiro can teleport, so any solution that involves putting the jewel in some hard-to-reach place is kind of wtf. You can also assume that Hiro could easily watch you as you're hiding the jewel wherever. He can't become invisible, but he can move fast enough that he can't be seen. Any solution that depends on him being a pretty nice guy is kind of suspect, too, since he might not always be so nice. Why, in five years or so, he might end up being a badass, and carry a sword and stuff. :o

Traps are also mostly useless, since Hiro can pretty much just stop time and avoid all of them. However, traps that would destroy the jewel could potentially be useful. If Hiro causes the jewel to be destroyed, he won't be able to "get his hands on it", so we may assume that he won't do that. Care must be taken, though - if he can stop time and get the jewel out before it's destroyed, then he's won.

The neat thing about using traps, though, is that we can use them to force Hiro to stop time. If we can then find some kind of mechanism that requires him to leave time moving to get past it, we've caused a contradiction: Hiro can stop time or not, but he can't do both simultaneously.

So here's the setup: a safe with a bomb attached to it. The safe is small enough and strong enough that any attempt to cut through it would destroy the jewel. Furthermore, surrounding the safe on all sides are lasers; if any laser is interrupted or disabled, the bomb will go off. However, the lasers can be disabled, with a password known only to you. The safe has a combination lock, but it's fragile: If you try to open it too quickly, it will break, and blow up the safe. Everything has backup batteries, so you can't just cut the power; if the baterries get too low, the bomb will go off.

I actually left out the requirement that you have to be able to retrieve the jewel in the initial problem, so I've actually solved a somewhat harder problem here. Ah, well. In any case, there's my solution.

Tuesday, November 18, 2008

Why not just leave it blank?

I'm occasionally amused by people giving out useless information - FAQs that answer questions that nobody would ever ask, advertisements that are full of useless-yet-exciting statements, that sort of thing. It seems like people could have saved themselves a lot of trouble by just not writing anything at all.

To be honest, the inspiration for this post struck me when I looked at a cereal box. On the side of the box, in fancy letters, it proclaims, "Excellent source of six vitamins and minerals." Now, this seems to invite a few questions, like: Which six vitamins and minerals? What does it mean to be an "excellent" source? and, Are you sure you're not actually describing rocks? Had that particular sentence been replaced by a blank space, I don't think the box would have been any poorer for it.

Or, let's take another example, which I can see without even getting up. On the box of Band-Aids on the shelf next to me, it says: "Greater comfort and flexibility for better protection." First, I'm not really sure how the latter follows from the former, but even before that there's another issue. "Greater" compared to what? Since they don't say, what we have here is another completely meaningless sentence.

I think it might be fun, if I have a dull afternoon sometime, to grab a Sharpie and go around crossing out all the useless sentences that somehow end up on things. Maybe it's not exactly a productive use of my time, but I think it'd be interesting to look around afterward and see what's left. Plus, imagine how much cleaner the world would look if you only had to look at information you actually cared about.

Monday, November 17, 2008

Five things I hate about PHP

To be honest, I've been wanting to write this post for a long tome, because honestly, there are a lot of things about PHP that I absolutely loathe. This isn't like my Firefox rant, where I was listing a few things that annoy me about Firefox, even though I still use it. I don't use PHP anymore, I actively avoid it, and I have been known to occasionally mock people solely for using PHP. The language needs to crawl in a hole and die already.

Fair warning: If you have never used PHP, and had to click on that Wikipedia link up there, you can probably go ahead and skip this post entirely.

  1. Data structures: PHP has one data structure, which PHP coders refer to as an "array". I refuse to call it that, for the simple reason that it's actually not an array, or indeed any kind of named data structure. What PHP calls an array is actually closer to a hash table, only not really because it also has ordered keys, so that it can act like either an array or a hash table. The question occasionally comes up: If I want to use a PHP array as an array, what do I do when it's actually a hash table, or vice versa? The answer, if you're a PHP dev, is: Pretty much whatever the hell you want. Consistency? Who needs it!
  2. Security: It is pretty easy, all things considered, to write secure PHP code. The problem, unfortunately, is that it's much much easier to write insecure code. Generally, programmers get the blame, and rightly so, but the language deserves at least some of it. There are some PHP "features" that are such obvious security clusterfucks that it's a wonder they ever made it in in the first place. Two of the more glaring ones are remote includes, where you can pull a file off the internet and execute it, and register_globals, which allows the remote user to put whatever the hell variables they want in your global scope.
  3. Configuration files: When core language behavior is controlled by a configuration file, it really makes it hard to write code that will work everywhere. The most egregious example I can think of is magic quotes, which when enabled will break scripts that don't expect it, and vice versa. (Magic quotes are stupid for several other reasons; I'll get to that later.) When you make core language features configurable, it saves you some pain in the short run, but in the end you have to handle both cases properly in your scripts. More proof that it's a bad idea: name one other language, any one is fine, that has core language behavior made optional by a configuration file.
  4. Poor feature support: What do namespaces, threads, compiled modules, arrays, Unicode support, and comprehensive standard libraries all have in common? None of them can be found in PHP. (Actually, Unicode is supported through a few different competing PHP extensions, none of which are guaranteed to be enabled. If you're willing to count that as Unicode support, you might be beyond help.)
  5. The whole "whatever works" attitude: Frankly, this attitude is pervasive when it comes to PHP, but my personal favorite example is magic quotes. One day, somebody realized that a lot of PHP scripts were vulnerable to SQL injections. There are a lot of solutions to this problem, but the path PHP eventually chose was to preescape all the strings coming into a script, just in case they would end up in a database query. This fixes most of the poorly written scripts out there, at the expense of breaking all the scripts that were correct in the first place. Normally, you'd prioritize working code over broken code, right? That is why you're not a PHP developer. They saw something that would work most of the time, and they grabbed for it, and we're still paying for it today in all the extra backslashes you occasionally see on the web.

Overall, my problem with PHP is that the language was never really designed; it started as a glorified template processor and just kind of aggregated from there. Nobody ever actually steps back and looks at the design of the language, and it really shows, in a ton of little ways.

Sunday, November 16, 2008

Hiro Nakamura, thief extraordinaire

Hiro Nakamura, on Heroes, can "bend time and space". This means, briefly, that he can teleport to any location instantly, as well as travel through time, or alter the flow of time as he experiences it. It also means that Hiro Nakamura is the ultimate thief.

The game is as follows: You have some item, a jewel, let's say, which you want to keep out of Hiro's sticky fingers. Figure out some way to store it such that Hiro can't get to it. Because Hiro cares deeply about the space-time continuum, you may assume that Hiro is a well-behaved time traveler, and won't travel to the past in such a way that would create paradoxes (for instance, stealing the jewel before or while you do whatever you do with it would create a paradox). Beyond that, however, anything is fair game for him.

To win, all you have to do is come up with a way to keep the jewel out of Hiro's hands. I'll play the part of Hiro, and respond in the comments to this post. My post for, let's say, Wednesday, will be my solution; that gives me plenty of time to come up with one, I hope. Best of luck!

(Side note: Kiriska complained about my updates appearing at noon, so I moved the schedule up a little for this one. ^_^)

EDIT: Thanks to Æther, I am amending the problem somewhat: The jewel needs to remain intact, and retain its current form, and not end up in another dimension or anything weird like that. :/

Saturday, November 15, 2008

Renaissance Post!

Avast, me hearties! Today I find meself docked at none other than the Texas Renaissance Festival. Ta prepare meself for the day, I've plundered meself an authentic time-period means of speakin'. With me cutlass by my side, and me trusty parrot sleepin' upon me shoulder, let's see them scurvy dogs call me historically inaccurate this year!

...Something about that seems not quite right, but whatever, I'm sure it's nothing serious. Still, this post will be fairly light on content, on account of me not actually being around to write it.

So my roommate has been playing Left for Dead the past couple days. It sounds like a really entertaining game, I've only heard good things about it so far, but I'm afraid that all I'll remember about it in the long run is him yelling about smokers and witches and tanks and god knows what else. :/

It's the middle of the month, and that means that I'm halfway through NaBloPoMo. So far, to be completely honest, I've done a lot better than I though I would. I really thought I'd run out of things to say after a week or so. This daily posting stuff has kind of gone to my head, though, especially after missing a day the other day. I'm planning to keep a couple of future-dated posts lying around; in case I have to miss a day for whatever reason, they'll appear automatically. (Well, and if I don't miss any days I'll have an easy time of it come Thanksgiving, I guess. >_>)

I know of no reason for it, but for some reason this year the 5th of November was completely forgot. >_<

I have to be awake in 6 hours, so I'm cutting this post off here.

Friday, November 14, 2008

The Participatory Panopticon

This is really an extension of yesterday's post, and also an experiment in post options. According to Kiriska, if I specify a date in the future, the post won't appear until then, so if all goes well this post will appear at noon.

So: Given a gargoyle rig, a head-mounted display, and ubiquitous internet connectivity, what could we do with it?

(Naturally, sci-fi has beaten me to it, and the article for augmented reality is interesting reading. It covers a lot of the stuff I mentioned in yesterday's post, and then some. The current cutting-edge stuff is happening on cell phones right now, though, so I'll be diverging a bit.)

The possibility of seeing from another person's point of view, not merely figuratively but literally, is certainly an attractive one. Imagine having virtual front-row seats at every concert or game. Or, one step further, imagine experiencing major historical events in first-person, as they happen. Imagine, when you're bored, being able to peoplewatch on any street in any city in the world.

In a world with Internet- and GPS-connected cameras everywhere, it would be possible to see anything, from any point in time. This has some really interesting social consequences. Decentralized surveillance by random people is a pretty compelling alternative to central surveillance by governments, and has all the same benefits, such as a reduction in crime. There are privacy issues involved, obviously, but in the end they're no worse than those that would exist with central surveillance.

Actually, no, I take that back. So far I've taken the techno-utopian viewpoint, but there will definitely be some negatives. To take one example, imagine a stalker in this digital panopticon I've been describing; your entire life could be observed quietly by anyone in the world, and you'd be powerless to stop it, assuming you ever found out it was happening in the first place.

There was a reason I preceded this post with the one on gargoyles, though. The technology already exists, in some form, and within five or ten years some of what I've described here will come to exist; we'll have to take the good with the bad. The question isn't whether or not we want it to happen - the question is how we'll handle it when it does.

Thursday, November 13, 2008

Gargoyles

Neal Stephenson wrote Snow Crash in 1992, but you wouldn't know it from reading the book. He was pretty far ahead of his time on a lot of things, and the book reads like something much more recent. (If you haven't read it yet, I can highly recommend it - it's not especially deep or thought-provoking, but it's a fun read nevertheless.) One of the ideas he came up with that stuck in my mind is the idea of gargoyles - people who go around covered with cameras, recording everything that happens around them, in case something interesting happens.

Even optimistically, I would estimate that a gargoyle system won't be practical for at least another five years. Even so, I think it'd be kind of neat to build one.

By far the most important limiting factor would be power. Such a system would need to be able to run for at least a day or two between charges, and there is a definite limit to the number of batteries I'm willing to carry around. I'm assuming power requirements similar to a laptop, and current laptop batteries last about three to four hours on average. Six to eight laptop batteries is kind of a lot to carry around in addition to everything else. :(

Another major limitation would be storage. Even a low-bitrate video stream would take up something on the order of a couple gigabytes per day, and that much hard drive space would start to add up pretty quickly. At current prices, this would probably cost about a dollar per day in hard drives alone, not counting replacements, or miscellaneous other costs.

There are a lot of things which such a rig would enable. (Take that, people who would just go and ask about practicality! :p) The most obvious application is time shifting/scaling - I could, for instance, go to class and record the lecture while I take a nap, and watch it later at home where I can fast-forward through the boring bits. Alternately, I could watch random stuff in slow motion, which is really quite entertaining in its own right.

Adding a head-mounted display to the mix puts us straight into cyborg territory. You could do any of the things you could do before, but as things are happening instead of after the fact. You could zoom in on things that are far away, or really arbitrarily enhance whatever you're seeing (night vision?). With specialized cameras, you could see outside of the visible spectrum - I hear a lot of neat stuff goes on in infrared, for example. With a few extra cameras, you could get a seamless 360-degree view of the world. Alternately, you could use some clever software to stitch the view into a 3d model of the world, like Microsoft did recently with Photosynth(?). From there you could have more clever software that does fun stuff like adding annotations to whatever you're seeing, or adds in virtual objects that interact with the real world.

By five years from now we'll almost certainly have ubiquitous internet connectivity, and that adds a whole new dimension to the possibilities, but I should probably stop writing now and post this.

Wednesday, November 12, 2008

Bill and Ted's Excellent Post

I've always been vaguely fascinated by time travel stories. There's just something about the outright subversion of linear storytelling, combined with the intricate logical knots you often end up with, combined with the fun of poking through the story a second time to tease out paradoxes, that really just makes me really happy.

The trouble, unfortunately, is that really good time travel stories are kind of hard to do, and thus pretty rare. My favorite example of a time travel story is an unlikely one: Bender's Big Score, the first Futurama movie. Not only was it a damn funny movie, not only was it a really well done time travel story, but it also had Fry/Leela romantic fluff. How could I not like it? Then, too, as far as I can tell the movie remained logically consistent, or at least believably so. (One of these days I'm going to watch it again with a pen and paper, and really check that they didn't create any paradoxes. When "one of these days" actually comes around, I'll be a pretty busy guy.)

There are three main schools of thought about how paradoxes are resolved with time travel. The first is the "yay special effects" school of thought, not generally seen outside of movies. With this approach, if you were to go back in time and kill your grandfather, you'll start to fade out dramatically, and maybe have a few minutes to reflect upon your folly as your body parts start to disappear. The second is the No Paradoxes (reactive) approach, in which any time you try to change the past, something else happens which conveniently undoes whatever it was you were trying to accomplish. A good example of this is the (horrible, recent) movie version of The Time Machine. The third, and most logically sound, is the No Paradoxes (proactive) approach, in which you can't change the past, because you were already there, so whatever you did has already happened. This one doesn't play well on the silver screen, so it's the least known of the three.

I know I said that the Futurama movie was my favorite example of a time travel story, but it can't hold a candle to the greatest time travel story ever, All You Zombies by Robert A. Heinlein. It is about a person who is his own father and mother. Think for a moment about the genealogical implications of that, and you'll realize why RAH is one of the greatest sci-fi writers ever.

Tuesday, November 11, 2008

Software sucks

The hardest thing is to go to sleep at night, when there are so many urgent things needing to be done. A huge gap exists between what we know is possible with today's machines and what we have so far been able to finish.
--Donald Knuth
It has been the case for quite some time that there is a huge disparity between the quality of computer hardware and software. As a software guy myself, this is frankly a little embarrassing. Every time I see a computer freeze up, I cringe a little inside, knowing that somebody somewhere, maybe somebody not so different from me, has screwed up. Somehow, though, you hardly ever see that with hardware.

Here's an example. Way back in the early days of Pentiums, Intel released a chip which had a minor bug in floating-point division; for some incredibly rare inputs, you would get results that were off by some fraction of a percent. This happened 14 years ago, and the Intel FDIV bug is still a running joke. Were this a software bug, it would have been forgotten within weeks, if not days. Bugs of that magnitude are just too common in software to care.

Why the disparity? I can think of a few reasons. The most obvious reason, of course, is that hardware is usually much, much harder to replace than software. To replace software, you generally just have to install a patch (and then reboot if your operating system is dumb); meanwhile, replacing a CPU is a pain in the ass. This forms part of a feedback cycle. Generally speaking, hardware undergoes much more strenuous testing than even high-quality software - they simply can't afford the mistakes. (Hell, it's still rare to see programmers that use unit tests on a regular basis.)

Another reason is the relative skill levels. People working on hardware design are usually pretty sharp out of necessity, while people who write software are often, not to put too fine a point on it, idiots. This isn't always the fault of the programmers; the barrier to entry for software design is simply much lower than it could possibly be for hardware design. Even without that, it's difficult to become highly skilled in any one subfield of software design. The popular languages change rapidly, and behind them the underlying paradigms change too.

The hell of it, though, is that perfect software really is possible. Knuth's quote holds more than ever today - so much more is possible than what we've been able to accomplish so far. There is no fundamental reason that software should suck, other than human fallibility, and really, that's an unsatisfactory reason. At a minimum - an absolute minimum - programs should never, ever crash. Is that really so much to ask for?

The answer, from the last few decades, has been a resounding: yes.

Software sucks. :(

Late post: Thoughts on AI

So, I totally forgot about posting yesterday. I blame Hana Yori Dango. <_< In any case, here's yesterday's post.

Artificial intelligence is an interesting field, in that you could get a bunch of AI researchers in a room together, and start a fight just by asking one of them to define AI. This is really no surprise; the term "intelligence" is itself fairly contentious, and you could easily start a fight among a room full of psychologists by asking a similar question. The problem is a little more severe for AI researchers, though, since the concept of intelligence is at the core of their field.

Personally, I split AI into two more or less distinct branches: the ones that are trying to imitate human intelligence, and the ones that are doing interesting research. Oh, sure, putting a human brain into silicon is probably possible, and therefore by extension a computer should be able to mimic a human mind. But really, there's nothing magical about the human mind. Why should we be mimicking it? The fundamental properties of transistors are wildly different from neurons. It makes sense to assume that a silicon mind that actually lives up to its potential would be wildly different from our own brain-based minds.

The real question comes back around, then, to how to define intelligence. Any definition broad enough to cover most of what we consider intelligence is also vague enough to be mostly useless when considering something totally new. Furthermore, most definitions of intelligence are prone to trivialities - if you handed them to a clever computer scientist, they would come back with something which satisfies all of your requirements, but simply doesn't seem intelligent. Even seeming intelligent is a bad definition - within a few years, we'll have programs which can pass the Turing test; they can seem intelligent, but do nothing else.

There are other subfields of AI that are actually pretty cool - machine learning, for example, is some seriously neat stuff. Overall, though, I think it's kind of premature to talk about intelligent computers when we don't even know what an intelligent computer would look like.

Sunday, November 9, 2008

Video desktop: an experiment with user interfaces

So, this weekend my new webcam finally arrived! By webcam standards, it's pretty cheap, but it's enough for my purposes.

But maybe I should back up first, and explain. I have wanted a HMD for a while now, but jeez, those things are expensive. >_< Maybe someday I will stumble upon a bag of money in the street, and if that ever happens, I know what I'll be buying first. I still intend to get one someday, though, so I've actually given some thought to the problems you would have while using one. One problem that you have with them is opacity - When you're wearing the HMD, you can't really see anything else, which limits their usability. The obvious solution, then, is to hook up a camera to the HMD, and have it show you what you would normally see, in addition to whatever you're doing.

Being the kind of guy I am, I decided that that seemed like a worthwhile weekend project. :3

Obstacle 1: Video input. A quick trip to newegg fixed that - I got a $20 USB webcam, and a USB hub which will also be handy for other stuff. Getting it working under linux was less of a pain than I thought it'd be; the linux-uvc driver supports the webcam just fine, and took all of a minute to install. (Dear Microsoft: You could learn a thing or two from Linux about software installation.)

The permissions on the video device were pretty restrictive initially, but a quick chmod fixed that. After that, I pointed the camera out my window and watched the video stream from the webcam with mplayer, which was all I really needed to check that it worked. The video is really noisy, probably since it's not exactly a high-end webcam, but mplayer has filters that can mitigate that if it bothers you.

Obstacle 2: Desktop video. This was much easier than it could have been, thanks entirely to the xwinwrap utility written by David Reveman, who is kind of a badass. For the curious, the script I'm using to start it looks like this:
#!/bin/sh

#FILTERS="-vf hqdn3d=4:3:16:16,decimate"
./xwinwrap -ni -fs -s -st -sp -b -nf -- mplayer -wid WID -quiet $FILTERS tv://
With this, I have the output from my webcam rendering directly to my desktop background.

Obstacle 3: Window opacity. You may be wondering, what good is having a video desktop if you can never see what's on it? Luckily, compiz comes in here and saves the day. Compiz has a plugin that allows you to change the opacity of any window, which is dubiously useful in most cases (other than looking cool) but is seriously useful here. With opacity around 90% windows are still pretty usable, but I can kind of see through them in low-complexity areas (like the white space to the left of the input box on Blogger).

The end result of all this: As I am typing these words, there is somebody riding a bike through this blog post. :D

I think the thing that surprised me most about this project was how easy it was to set up - from the moment I opened the webcam box, to watching cars drive by on my desktop, took almost exactly half an hour. Personally, I blame Linux - if it weren't so darn easy to use, this project could have taken longer. :/

Saturday, November 8, 2008

College Puzzle Blog 2008

Today: College Puzzle Challenge! It went awesomely, naturally. At the time of this writing, it looks like we finished 5th overall, and 84th at UT... wait, no, other way around. 

If you're curious about CPC this year, you should definitely check out the puzzles - the're being uncharacteristically efficient, so the puzzles for this year are already up. 

...the answers are already up, actually. I'll be looking at those in lieu of actually finishing this post. >_>

Friday, November 7, 2008

How to create a decent fansub in two to three hours

Fansubbing is kind of a hobby of mine, and in the time I've been doing it I've collected a lot of tricks for speeding up the process (and then come up with a few of my own). Currently, the only groups I know of that even come close to three hours do so by cutting out major portins of the subbing process (like, say, editing and QC :p); the groups that do decent quality speedsubs generally do so in a 12-24 hour timeframe.

You will need:
1 encoder, with a fast Internet connection (or better yet, a server dedicated to encoding)
1 or more translators
1 timer (the person who synchronizes the subtitles with the video)
2-3 editors / QCers
1 typesetter (the person that places/styles signs correctly, and stuff like that)
Some kind of collaborative editing system, there are a couple of good ones
Plenty of motivation

Step 0. Encoder downloads the raw, and creates a workraw. A workraw is a raw that's had commercials cut in the same way they'll be cut in the final release, and is usually encoded at a low bitrate. With some raws, such as TV-Japan raws, this can be omitted since the raw is already cut pretty well. (30 minutes)
Step 1: Everybody downloads the workraw. (5-15 minutes, depending on connection speeds)
Step 2: Translation (30 minutes or so)
Step 3: Timing (30-45 minutes, depending on the timer)
Step 4: Editing / QC / Typesetting - These three jobs are traditionally separated, but they're similar enough that they can be combined into one step if you're in a hurry. The fastest thing is for all the editors and QCers to work on the script collaboratively, since at this point there should be no more structural changes to the script. Meanwhile, the typesetter can do their thing, and merge in the changed lines. (1 hour)
Step 5: Final encode - During all this, the encoder should have been doing the final encode(s?), and they should be uploaded by this point. (2 hours)
Step 6: Mux - With softsubs, the finished script can be added to the video in a few seconds, from the command line.
Step 7: Party :3

Notes:
Pipelining: You can often get some not-insignificant speedups by splitting the episode into chunks of a few minutes, and doing those individually.

The main problem with this method is the difficulty of getting everybody together in one place at the same time, which is probably why it doesn't happen. In the group I'm in we tried it once, and despite the usual problems associated with trying anything for the first time, we managed to sub an episode of Naruto from start to finish in about three hours. 

Thursday, November 6, 2008

Some neat stuff I saw at Maker Faire

A few weeks ago, I went to Maker Faire here in Austin. Maker Faire is a fair primarily sponsored by MAKE magazine, and built around the idea of making things yourself. Needless to say, there was a lot of cool stuff:

Mad science blocks - These things kind of speak for themselves, actually. Because really, do you know any kids that are getting enough mad science in their lives?

The Diet Coke and Mentos guys - Now imagine this video, but live. It was really neat to see, even though there was enough of a crowd to prevent me from seeing very much. Afterward, they handed out the (mostly empty) bottles of Diet Coke - apparently it tasted minty for some reason. >_>

Robot battles - Do you remember those TV shows they used to have, where the robots would go into an arena and try to destroy each other? (If not, you seriously missed out.) After taking that robotics class last year, I feel like I could probably design a way better robot than the ones we saw; maybe I should try it sometime.

Musical Tesla coils - The video explains it better than I could, actually. This was by far one of the coolest things I saw that weekend.

CNC Lasers - Seriously, who doesn't enjoy watching things getting cut with lasers.

Rattlesnake skeleton bike - Yes, it's an actual bike; no, I didn't get a chance to ride it. Just watching it was pretty impressive in itself, though.

That's all for now; there was more cool stuff, but if I don't start studying for the tests I have tomorrow then I will literally die. :(

Wednesday, November 5, 2008

Late post #1

So, it seems that somehow, in the rush to finish my networks project, the frustration of having it fail for no reason, and the eventual realization (five minutes before the project is due) that the bug I'm chasing is actually in their code, I forgot to blog today. :( Lame justification: not asleep yet, so it's still the 5th. >_>

Here is a blog post which I have only just realized that I have wanted to write for a long time.

5 things I hate about Firefox:
  1. Memory usage - I know, I know, people have been whining about this forever. I have heard time and time again the arguments in favor of Firefox's memory use: It aggressively caches stuff to make browsing faster, it scales its memory usage based on the amount of RAM you have, blah, blah, don't really care. The least it could do is free memory from closed tabs, but apparently un-closing tabs is a common enough case that Firefox needs to keep them around basically indefinitely. On my system the other day, after having Firefox open for only a few days, it was sitting on over four hundred MB of RAM, with one tab open. Here's an idea: Let me manage my own damn RAM. :(
  2. Image scaling - This one stands out pretty badly, now that Firefox 3 supports page zooming. When you zoom in on a page, the text looks really nice, and the images look like blobs of massive oversized pixels. For some reason, Firefox can't do any better than nearest-neighbor scaling; meanwhile, mplayer can do Lanczos image scaling in real-time on an HD video stream. I've heard that image scaling actually looks much better on linux, though, which brings me to the next point...
  3. Halfhearted Linux support - I'll give an example. On Linux, if you don't have Gnome installed, the application selector is just a big blank box. This is a known bug, the solution is pretty obvious (have some kind of KDE and/or generic fallback), but somehow nobody's actually gotten around to fixing it. If you're going to support a platform, then actually support it; don't just put something together that will work for most users, most of the time.
  4. Malicious web pages can really mess you up - Can somebody please tell me why web pages were ever allowed to create windows, move them around, resize them, and do various other things that can crash Firefox, or even your computer? This bug is my favorite example - the problem is well understood, the solutions are well understood, people are actively exploiting it, and it's no closer to getting fixed than the day it was reported. Also, look at the date on the bug. If you know your history, you'll realize something else neat - this bug is almost twice as old as Firefox. The bug was reported eight years ago today, and Firefox was first released as Firefox in mid-2004.
  5. Plugin compatibility breaking - I'm usually an early adopter, so I always have the latest version of Firefox when it's released. Unfortunately, with major upgrades, this usually means a few weeks spent without some subset of the plugins I use. Since plugins are a major reason I'm still on Firefox, this is kind of a big deal. It's not only a pain for me; plugin developers also have it rough, since they have to choose between keeping their plugin constantly updated for API changes, or letting it die a slow death. Is it really that hard to make a consistent plugin interface and stick to it?

Monday, November 3, 2008

Requisite politics post

At the time of this writing, I don't know who's going to win this election. Obama seems pretty likely to win, and that makes me happy, because if I ever had to say the words "President Palin", I'd probably have to kill myself first. McCain seems not so bad, and as politicians go he's definitely one of the better ones, but Palin just worries me.

But, that's not what I'm planning to talk about today. My impetus for writing this post is this. Somehow, I've ended up on the spam lists of both major parties, so I've been reading both sides of what the party faithful are hearing. (I'm kind of like a double agent, I guess?) And let me tell you, there's a huge difference between Democratic and Republican political spam; it's like night and day.

Democratic political spam is pretty straightforward - begging for money and volunteers. The overall mood is pretty upbeat, though, which makes sense, given the whole "yes we can" motif the Obama camp has going. There are definitely some smear emails, but not as many as you'd expect. I'd estimate that less than a third of the emails I get are even about the other guy.

Republican political spam, on the other hand, is just scary. This isn't just me being a narrowminded liberal blogger, either. It seems like the Republican party has decided that the best way to get out the vote is to make the party faithful absolutely terrified of the prospect of an Obama presidency. The emails are full of phrases like "crushing tax hike" or "defeat in the middle east" or "unstoppable liberal majority" or "the Apocalypse". That last one wasn't actually in any emails, but honestly, it wouldn't have shocked me to see it, such has been the overall tone.

If there's one thing I am sincerely hoping for out of this election, it's that Obama's (predicted) victory sends a message to the GOP: We're not as scared as you think you are, and we can't be chased around that easily by bogeymen.

Super five-minute post!

So, I *totally* almost forgot to blog today, but it's okay because I can definitely write this post in the next five minutes. If not for DST I'd be even more screwed I suppose, but it happens. I have a post written in my head for tomorrow already, as it happens, but I'd rather not move it up to today since I don't really want to talk about politics for two days in a row. So, today will be one of the emergency posts I've prepared in my head: webcomics!

Now that Dresden Codak has actually finished the Hob arc, I don't feel quite so bad recommending it to people. It's a pretty nifty transhuman sci-fi story, and the art is really neat too. Pretty much the only downside was DC's weird perfectionism, combined with his tendency toward debilitating injuries, which usually led to comics getting released on a monthly schedule, or worse. DC's regular comics are much less structured than the Hob arc, and were all basically standalone comics; now that the arc is done, nobody's really sure what the comics will be like. Well, except that they'll be awesome.

Another awesome webcomic that everybody should read is Dinosaur Comics. This is pretty much the polar opposite of DC, as the art is basically nonexistent - he uses the same pictures every single day, for crying out loud! And yet, somehow, the writing is incredibly good; of the webcomics I read, Dinosaur Comics is the one that's the most consistently funny.

(Hmm, I'm past my time limit. May as well write this properly, then. >_> Flimsy justification: the day doesn't really end until I go to sleep, right?)

Gunnerkrigg Court: I hate to compare this one to Harry Potter, but the comparison is probably unavoidable - the setting and the mood of the stories is just too similar. The story follows Annie (short for Antimony), as she explores Gunnerkrigg Court, as well as her own mysterious past.

Somehow, five minutes became fifteen, but whatever. Close only counts in horseshoes and blogging, or something like that, anyway.

EDIT: So, apparently, Blogger saves the post time as the time that you *start* writing. Therefore, victory! :3

Sunday, November 2, 2008

The unbearable lightness of beginning

A problem I have always had, and which I don't anticipate getting rid of anytime soon, is my tendency to start projects and then leave them half-done. Over the past few years, I've accumulated some depressing number of incomplete projects, which I left with every intention of coming back within a few days, a few weeks, eventually. Starting things is easy and fun, finishing them is... usually not.

You may legitimately ask, "Why are you bringing this up now?" Certainly, it seems like tempting fate, to blog about my history of not finishing things the day after I've started. But, it's not like tempting fate ever works, and even if it did I have awesome luck. Everything will probably work out just fine. (Is that just tempting Fate more? We'll see, we'll see. :3)

I suppose all projects kind of have the same life cycle - there's the beginning part, where all the core work gets done, when everything's still pretty novel and interesting. Then there's the middle part, where interest slowly wanes until you stop working on it altogether. There's never really an end part, unfortunately; the project ends not with a bang, but with a whimper.

(Aside: this is probably why the UNIX pipe model works so well, now that I think about it. Simple programs that you pipe into/out of have much lower overhead in terms of miscellaneous stuff you have to do to get it working, so a greater portion of your time can be spent on the interesting bit, and you can actually finish the program before you get bored of it.)

Then, there's also the ADD factor; once you've begun something, you're susceptible to random urges and obligations pulling you away, sometimes indefinitely. For example, I have to go do readings for government now

Saturday, November 1, 2008

Na Blo Po Mo?

So there I was, sitting around and planning to do homework or something all November, when suddenly my awesome friend Kiriska asked me to go and write stuff nonstop for the entire month instead. Well, it turns out I'm too much of a wimp for NaNoWriMo (maybe next year), but NaBloPoMo seems a little more doable. >_>

I kinda have a problem with NaBloPoMo, though. Other than "make a post every day", which is kind of vague and easy to squirrel out of, NaBloPoMo doesn't really set any goals, which makes it a little hard to get excited about. To keep myself honest, then, I'm kinda revising the goal, from one post per day to one worthwhile post per day. (Granted, I'd probably do this anyway, but it's more fun if I actually say it, right?)

The trouble, of course, is that I was already kinda overloaded before this month, and I'm not really expecting that to change much. So, expect some occasional inevetable complaining during this month. I figure that blogging will probably cut into my "screwing around on the internet" time, which is good - I really need to cut from it more often, honestly.