Every once and a while, the weather reports around Pittsburgh are not complete alarmist crap and we get hit with something way worse than anticipated. I can’t remember the last time I saw 18 inches of snow on the ground, but based on the news reports, it was probably in 1993. That would have made me about 15. Consider this another milestone down the path of feeling old.
Erin and I headed out to hit each other with snowballs and I got some shots of my own, local snowpocalypse.
I’ve been learning Ruby on Rails for new job, and that means a lot of frustrating Google searches to find the answer to what you think are really simple questions. Every once and a while, I’d come across a site called Railscasts that would seem to have the answer, but in video-podcast form. Since I was impatient, and because the audio card in my work computer was non-functional, I’d grimace and move along.
Yesterday, while looking for the proper Railsy way of doing dynamic sidebars, it became clear that breaking down and watching the railscast that specifically covered the topic was the right thing to do. An hour and a few failed driver installs later, I had sound and was ready to go.
I shouldn’t have waited this long.
I’m naturally skeptical of video podcasts, or really podcasts of any kind, when I’m looking for the answer to a problem. Generally I can read faster than I can listen, and I have that cranky Luddite gene that makes me skeptical of newfangled ways of doing things. The irony of being adverse to change while working on a newfangled web development platform does not escape me. But sometimes – maybe a lot of the time - you’re wrong, and I was dead wrong here.
Railscasts is run by Ryan Bates. He does great job of covering useful topics and doing it succinctly. Most of the casts are around 5 minutes long, which strikes me as a sweet spot for answering a question in video form without being irritating. I had about a dozen questions about Rails when I found it; questions that weren’t technical enough to look up in a reference guide. It’s one thing to search for the syntax for removing whitespace from a string in Ruby (strip, by the way). It’s another to find something a little higher level, problems you have a technical solution for, but probably not the right one. Railscasts nails these topics, and nails an awful lot of them.
I got lax on keeping up my film education over the last quarter of 2009, but I’m back and ready to keep going. How’d I do in January? Let’s see.
The 400 Blows
Continuing my unbroken streak of disappointment in the French New Wave, I sat through François Truffaut’s The 400 Blows and had only intellectually nice things to say about it. It was well shot. It had realistic characters going through honest, believable situations. But just like with Breathless, I didn’t care. The genre strikes me as so aggressively distant and plotless that it almost wants you not to connect with it. I can see how this movement, at the time it came out, influenced filmmakers and lovers of film, especially in a Hollywood dominated by an oppressive studio system. Even so, I haven’t seen a single French New Wave film that makes me think something other than “I wish I was watching Fellini.”
Dr. Strangelove, or How I Learned To Stop Worrying and Love the Bomb
Speaking of styles that leave me cold, how about a little Stanley Kubrick? There are certainly Kubrick films I like a lot, but on the whole he’s all brain and no heart through too much of his filmography. I put this in immediately after The 400 Blows, and I honestly don’t know if I thought I’d follow one potential disappointment with another, but either way what I got was a surprise: I really, really loved Dr. Strangelove. It was funny and biting and a really good time. This is the first time I’ve seen Peter Sellers and, based on this film alone, the praise of his comic talents does not seem overblown. Also, I’ll be making “precious bodily fluids” jokes for weeks.
M.A.S.H
Somehow, despite my love of Robert Altman, I’d managed to never get around to seeing M.A.S.H. Tsk, tsk. I never saw much of the television series, either, so I went into the movie cold. Verdict: I can totally see how this movie made the successful translation to a television series. The movie is broken into a series of episodes as it is, each one connected by little more than the characters themselves. What better compliment can I give a movie than this: I not only did not hate Donald Sutherland in this, I actually liked him.
Dirty Harry
We begin and end with a disappointment. I guess Dirty Harry is exactly what it tried to be. It’s a mean spirited, nasty little action film about a cop who can’t be bothered with things like Constitutional rights and due process and is proven correct by the end. What can you say about a movie in which the hero tortures a suspect after searching his home without a warrant, rages when said suspect is released because of the violation of his rights then seems to suggest that when the killer then continues to kill that it’s the system’s fault, not the rule breaking cop’s? At least Clint Eastwood is always a good time.
They keep showing this advertisement during the game of Max Talbot and Sidney Crosby competing by shooting pucks into his childhood hockey net: a dryer. Today, I broke down to go watch it. I had to become a fan on Facebook to see it. Maybe I can save you the effort, no?
Not that it wasn’t worth it. If you’re a Penguins fan, that is.
What do you get when you start planning a 52 episode television series but stop early on and turn the project into a film? You get this:
Mobile Suit Gundam F91 is an interesting and difficult film to discuss. Does knowing that the film was supposed to be a full fledged television series cause you to prejudge it, holding things against the film which are not fair? Or does it help explain some of its weaknesses in a way that allow you to appreciate the film for what it is. Both? Neither?
Let’s start here: I enjoyed F91 a lot. More than I expected to, in fact. Despite a flabby middle where the only plot was a convoluted retread of a dozen other Gundam plot ideas, it had a tense, involving opening and an exciting, full-on Gundam battle to close things out. Which, I suppose, makes it the film equivalent to most of Tomino’s Gundam television series. In this one case, film was a kinder medium to Tomino than television; stretched out over 20 boring middle episodes, Tomino’s water-treading can get tiresome to watch.
Describing the plot of F91 isn’t difficult because it’s complicated, but because it’s so banal that the plot barely exists. Set in the Universal Century timeline, F91 is the first Gundam story to take place after the dissolution of the Principality of Zeon. Without his old warhorse of an antagonist, Tomino needed to come up with something new. Instead, he gave us the Principality of Zeon with a different name: The Crossbone Vanguard.
What are the goals of the Crossbone Vanguard? Oh, you know, independence for their colony and the complete takeover of space. Or something. Oh, and their leader wears a mask. Even if you didn’t see him you’d know it because his nickname is “Iron Mask.” As in, The Man in The. There’s some hand waving about the formation of a new space empire, Cosmo Babylon, but other than a lot of talk about destiny and ascendency it doesn’t add up to much. Tossed in is the old standard of Gundam plotting: the lost son/daughter who is actually the prince/princess of the enemy kingdom but is now on the side of the heroes. Or is he/she? Tension!
As plotting goes, F91 is an awkward bridge between former and upcoming Gundam stories. An awful lot of the Crossbone Vanguard stuff mixes well-tread Zeonic ground with some of the odder, less coherent space empire ideas that would get more play in Victory Gundam. The secret princess du jour, Cecily Fairchild, combines two character ideas that Tomino would split in Victory. She’s a blonde mobile suit pilot who’s the romantic interest of the hero (see: Katejina Loos) and the princess whose choice of side seems based on whose ship she’s riding around in (see: Shakti Kareen). Which is to say, Cecily isn’t a very interesting character, and thus neither is much of the plot she’s involved in.
Yet, beyond the daddy issue driven story so common in Tomino’s work, F91 is a lot of fun to watch. The film opens with an assault on a colony – y’know, just like every Gundam – only, instead of it being an attempted theft on the new, advanced mecha, the objective is Cecily herself. The abduction of Cecily forces Seabook Arno (yes, Seabook) to pilot the new, advanced, mobile– never mind, you don’t need me to explain this.
As mecha goes, the F91 is decent looking and not too overpowered, so the battles are pretty to watch. And despite the overplotted nature of the Cecily stuff, it does at least set up Iron Mask as a bizarre, unlikable bad guy who you want to see get into a mecha and be turned into pulp. Also, it was a nice change of pace for the main character’s love interest to be a mecha pilot and not the girl who takes care of the occasionally naked children inexplicably running around the endangered military vessel.
The final battle, with Seabook and Cecily on one side and Iron Mask in a really strange mobile armor on the other, was a surprising amount of fun considering how barely invested I was in the plot itself. It even made me worry about one of the heroes buying it to take Iron Mask out when I hadn’t cared up to that point. As Gundam final battles go, F91’s is one of the better entries. In fact, for the opening and closing battles alone, the film is probably worth seeing.
Unfortunately, F91 doesn’t really tell a complete story. Cosmo Babylon still exists a the end and has more or less trounced the Federation in their only major battle. Iron Mask’s death is pleasant, but like most military villains in Gundam, he was not the real power behind the throne. I understand that the follow-up manga Crossbone Gundam picks the story up and runs it to its conclusion, but I’ve never read it and have no idea how satisfyingly it ties things up – especially since I think it deals with a different group of characters and really only resolves the political plot threads left hanging.
I was expecting to barely enjoy F91. Maybe lowered expectations helped. Or maybe it was just a fun, likable mecha film with enough good going on to make seeing it worth the two hour investment. Certainly, in its own way, it’s a more enjoyable film than Char’s Coutnerattack, even if that film told a better set up story than the grand tale of the badly named space empire. It’s still probably only for Gundam completists, but I think Gundam completists will enjoy the film more than some of the other things they’ll inevitably force themselves through.
It’s something I always tell myself. There are long stretches, even, when I manage to pull it off. Then it falls apart again, probably just when I need to keep moving. It’s why, for all the progress I’ve made, I don’t have to show for it what I want.
Here we are again, then. Looking at the last four months and seeing very, very little to show for it that wasn’t my day job. I’d guess I wrote maybe – maybe – 10,000 words in that time. Even my blog has sat fallow. Blog posts are just a bandaid to feeling bad about not writing enough, I realize, but at least it’s something. At least it’s not just a pile of code that isn’t yours and you can’t even really show to anyone.
I have a finished novel. I have a pretty good finished novel. And it needs to get published. That means I need to send out more query letters, and not wait 8 months before sending out the next batch. That needs to start this weekend.
I have, maybe, a quarter of a new novel. It’s going to need heavy revision when the time comes, but at present, the word count is just shy of 60,000. Considering Broken Magic was around 75,000 in total, that’s not a bad start. I need to write more of that, and I need to write it faster.
And I need to write other things when I hit a wall on the current novel. Short stories. Novellas (oh, yeah, I have one of those finished that I stopped sending out after one rejection letter). Another novel. Anything. Anything at all.
Because if I’m serious about this writing thing, I need to stop screwing around, no matter how good a procrastinator I am.
Now, let’s see how much good saying this out loud does me.
I had some trouble yesterday finding a less than simplistic example of using the form_tag in Rails yesterday and, after griping on twitter about it was called out and told to do it myself. Good advice. Here we go.
In Rails you’ve got two ways to create a form: form_for and form_tag. You see examples for form_for everywhere, because that’s what you use to directly interact with the models you created in your database. But a lot of times you need to create a form that has no interaction with your database and that isn’t mapped to any data model. Enter form_tag.
There are two syntatic differences between forms created with form_for and those with form_tag. First, you typically declare form_for like this:
<% form_for(@person) do |f| %>
And from then on you add fields using the f variable you just defined, like f.text_field or f.select. The other difference is that the way you declare the fields themselves changes. text_field becomes text_field_tag, select becomes select_tag and so on. The reason is that text_field is meant, just like form_for, to interact with a defined object model. All those ones ending in _tag are for unbound forms.
<% form_tag(create_ticket_path, :method=>'post', :multipart => true) do %>
In the example, you see a couple of things. First, when defining a form_tag you can’t just pass it an object and let rails figure out what needs to happen. You need to tell it, first, what URL to point at and, second, what HTTP call to make (typically post or put). Those are the first two parameters. In my case, I have a path defined in my routes.rb for create_ticket, so I can call create_ticket_path to get it. And I’m creating a support ticket, so I’m going to use the ‘post’ method.
The third parameter is where you pass your options, which are roughly the same as the options you can pass form_for. You’ll see in mine I passed it :multipart => true. I do that to define a multipart form so that I can let people upload a file on submission.
The other thing to note is when defining the input fields. When using form_for, you can just pass, say, text_field the symbol for the field you want it bound to. So, if you were creating a field for the subject of a support ticket request, you’d do:
<%= f.text_field :subject %>
Rails figures out the rest. Without the model, we need to do it ourselves and define the field’s id. (If you wanted to have a default value, you’d put it in the second parameter, but for this example it doesn’t really make sense).
<%= text_field_tag "subject" %>
Pretty simple, I know. But sometimes you just need to see how the syntax works, and it felt like every tutorial assumed every form would either use Rails’ models and form_for, or your form_tag usage would be hilariously simple. The full example of the form is below. Just like when you use form_for, if you’re catching this with a rails controller, everything will be available through the params[] array. So, to catch that text_field_tag “subject” all you have to do in your controller is grab for params[:subject] .
File uploads are their own story, but to get you started, it’ll be in params just like everything else. Just be sure to use :multipart => true or your form will quietly ignore that an attachment was chosen.
Have I talked about my new job yet? I’m not sure, and I’m too lazy to look. At least, I know I haven’t really talked about it yet.
Whatever. It’s only tangential to this. I’ll get there later. Oh, and the title isn’t referring to my job. That’s going pretty well. Anyway.
My first real assignment here was to create a web portal to our support ticket system: HEAT. We’d had the system for a year, but my two predecessors had been unable to get a web front end running for it. HEAT apparently comes with its own front end, HEAT Self Service, so why there had been so much trouble was not clear. I started to get really worried when my co-worker told me her nickname for the system: Hate Everything About This.
Ok. So it sucks. But how much can a support ticket system really suck? This would be my third system I’d be throwing code at, and I’d seen some noxious stuff, but nothing that would have kept me from adding a ticket to the system through its API. And you know what? As far as the coding went, I was mostly right. The API worked. I got tickets back. I could create them, too. After understanding its slightly confusing attachment system (you send it a link to the attachment, but save the actual file yourself somewhere), there wasn’t anything all that difficult about it.
Then I loaded up the application itself and started to use it. That’s about when the hate began.
I’ve seen support ticket systems be clunky. I’ve seen them have UIs that were confusing and even nonsensical. I’ve seen an action that should take one click take three. But I’ve never seen a support system so completely embody every single bad design idea possible all in one package.
Let’s say a new ticket just got into the system, into the general queue and isn’t assigned to anyone yet. You see it and it’s one of those things where you can just rattle off an answer and close it immediately. What do you have to do if you want that ticket to show as Closed? Well.
Click on the Assignments tab.
Click New to create a new assignment.
Pick your group then pick yourself out of the nested drop-down lists.
Save the Assignment.
Enter information into the Assignment resolution. Note, this is not the call resolution. You are just resolving your part in the ticket.
Click Resolve for the assignment.
Go into the main Call Info tab and enter Resolution information there.
Now click Resolve to resolve the call.
Click File->Quick Close (you can start laughing now).
If you fail to do any of this, the call will not let you close it. Thankfully, it will at least tell you what you’re missing, but when it tells you you have more work to do closing the ticket than you did to fix the problem, you probably won’t be feeling very gracious.
The whole system is laid out that way. Getting from the list of calls to the list of customers is, at best, perplexing. As is the as-yet-mysterious handling of its Call Groups, which make it very easy to not see a ticket and not realize that you are not seeing a ticket.
I hope that someone reading this is considering buying HEAT and that this post has just made their decision for them. That’d make this all worth it.
No, this isn’t what you think it’s about. Sort of. Ok, it’s kind of about what you think it’s about, but not really. Maybe I should just get to it.
So Joss Whedon decided to write a new Buffy the Vampire Slayer comic and call it season 8. This seemed like a really neat idea when it started a few years ago, and in fact I’ve been an avid reader of the run since it started. The first 20 issues or so were pretty fantastic. It felt like a return to form for a series that, in my opinion, lost its way in the middle of its 6th season and never found its way home again. In fact, its first three arcs – especially “No Future For You”, which brought us an awesome Faith/Giles teamup against an insane British noble with Slayer powers – were funny, tense and dramatic. Everything you want from Buffy.
Then it decided to get all clever on us.
Back in 2002, Spike Jonze and Charlie Kaufman joined forces a second time on the film Adaptation. The conceit was that Kaufman had been trying and failing to adapt The Orchid Thief and, instead of actually finishing that job he wrote a screenplay about trying to adapt The Orchid Thief. The first half of the film was one of the cleverest takes on the trials of writing I’ve ever seen. But as Kaufman’s writer’s block intensifies, he starts taking his fictional brother’s advice (yes, he wrote a fictional brother into the screenplay) and ends the screenplay with exactly the kind of stock, action-packed Hollywood ending he’s been mocking the entire film. Unfortunately, the switch to bland Hollywood film takes up almost a quarter of the film’s running time and never really switches back into something savvier. The joke is funny, in theory. But in making the joke, the film stopped being good, and I walked away disappointed and unamused.
That brings us to issue 21 of Buffy. To this point, all we knew was that the villain called himself Twilight and wanted to destroy, I don’t know, magic and slayers and stuff. And the name was kind of a clever nudge; of course Joss was going to take a little swipe at the other, bigger vampire franchise. You probably couldn’t write a more diametrically opposed vampire series if you tried. But with issue 21, “Harmonic Divergence”, the joke grabbed the wheel and drove the car into a ditch.
See, one of the vampires, Harmony, gets a reality show where she reveals she’s a vampire and, for reasons that are still unclear to me, gains the love of pretty much all the world. Vampires are cool! Slayers are evil! The world’s sudden adoration of bloodsucking demons puts the main characters on the run and in grave danger.
I mean, I get it. The world is holding up as awesome things that would like to kill and eat them. They’re acting like vampires aren’t dangerous. Aren’t scary. Like they should be loved and adored and hung in poster form upon their bedroom walls. Just like fans of Twilight do!!!
And, on the face of it, that’s kind of a funny joke. I bet you could make a great pitch based on that idea, and in fact, it’s very likely that a funnier and more eloquent version of that was the pitch to Dark Horse for this series. Hell, if it was pitched to me, I probably would have laughed and approved it. Only, as written, it’s more clever than it is funny. Sure, in theory, the idea of exploring how the vampires became the heroes and slayers the villains is the kind of on-point pop culture comedy Joss excels at. Just like Adaptation, though, somewhere in the translation the cleverness eclipsed everything else and it became the kind of joke you end up having to explain once you’re done telling it.
I’m hoping the end of the series pulls something off that proves me wrong, but I fear we’ve entered the last act of Adaptation now and I’m just going to have to watch the joke play itself out. If I’m lucky, there will be some actual jokes along the way. And maybe the story will find its way back onto the pages before it’s too late.
Of course, tension isn’t for everyone, and Williams’ devotees will doubtless be blissfully blasting this immaculate album in their sedans on the way back to their cozy middle-class homes.
Oh ho ho! Music journalists taking swipes at boring middle-class people! So trendy and incisive! And clearly from someone who grew up on the mean streets of somewhere rough where they don’t have sedans or middle class homes.