A few months ago I shutdown my code sites because my poor virtual server was getting overloaded (too many sites requiring too much RAM). (The code sites are the easiest to "shard" out of the server because most of the content is built/cached from source control artifacts.) I set up a second virtual server with the intent to get things back up quickly, but then I decided it was time to update some of the "Darcsforge" code and "back up quickly" became "whoops, I meant to do that months ago" thanks to other priorities. This weekend I've been hacking on Darcsforge and slowly getting things up and running on the second server.
I've made some pretty cool strides forward, including the South migrations for Darcsforge applications. One of the things that I felt was holding me back was a feeling that I needed to get the models "perfect" and "publishable", and having a trusty migration tool is very nice net to have under me, working hand in hand with my good friend darcs.
Part of what spurred me to work on it is was the notice that my simple Magnatune addon for Banshee is being pushed towards approval as a debian package by Jo Shields, which is actually somewhat exciting for me as it would make the first code that I've originated to become debian packaged. It will also be interesting because it will mark my addon (a quick "weekend hacking project") into an "officially unofficial" addon, particularly because it may end up being one of several keys in the switch for Ubuntu default from Rhythmbox to Banshee. (I, of course, am in favor of the default switch as Banshee is definitely my Ubuntu media player of choice to the point where it is one of ...
My first project for my small startup Enlark is pretty far along (even if it still feels at times so unfortunately far from publishing and more usefully: revenue). It seems to be past time that I put serious thought into the next (and possibly next + 1) project and started them into some sort of real development pipeline...
Up to this point I've still basically assumed that I would be dipping my toes back into the world of the gainfully employed, but the job market still seems unfortunately clogged with people with more "experience" than I have, or at the very least less physical distance from city of residence to job application. The other assumption was that I might perhaps bootstrap from the current project, but I feel that bootstrapping in any reasonable term to the level of development that I'd prefer to be working at seems roughly out of the question.
This week I've been very seriously asking the hard questions about what it would take to push my startup to the next level, to at the very least push things to the point where I can pay salaries, get a few more employees involved and potentially try to shoot for the stars with some large, satisfying project idea. That is, I've been asking myself and others about the chance that I can take the experience that I've gathered from my first project, adding in any complementary experiences that I might need from trusted friends in my professional network, and sell it to investors.
I think that I can do it. My head is swimming with visions of business and marketing plans that need to be written, demos that need to be prepared, and speeches that need to be made. I think that I have ...
I wanted a slugify [1] tool for a form that I was working on and was using jQuery elsewhere, so I quickly found a jQuery slugify on Django Snippets. The problem that I ran into was that I wanted to support slugifying multiple inputs (concatenated with spaces), which is something that Django's Admin's provided pre-populated fields-based slugify JavaScript handles. I was also surprised to find that the snippet I found didn't lowercase the input. Below is my simple modifications to handle multiple inputs in a jQuery selection:
// Based Upon DjangoSnippets: http://www.djangosnippets.org/snippets/1488/
jQuery.fn.slugify = function(obj) {
jQuery(this).data('origquery', this);
jQuery(this).data('obj', jQuery(obj));
jQuery(this).keyup(function() {
var obj = jQuery(this).data('obj');
var oquery = jQuery(this).data('origquery');
var vals = [];
jQuery(oquery).each(function (i) {
vals[i] = (jQuery(this).val());
});
var slug = vals.join(' ').toLowerCase().replace(/\s+/g,'-').replace(/[^a-z0-9\-]/g,'');
obj.val(slug);
});
}
Usage is just like the other snippet, but supports selections like:
$(function() {
$("#id_brand, #id_name").slugify("#id_slug");
$(".prepopulate_slug").slugify("#id_slug2");
});
| [1] | For the uninitiated, Django brought the term "slug" to web design from the newspaper world. In a newspaper a slug is one of those short one or two word summaries used to help someone find the continuation of a story. In web design this refers to a URL segment that often replaces a ID number with something more memorable and/or descriptive. (For instance, the slug for this very blog entry, as you can see in your address bar, is django-snippet-jquery-slugify-supporting-multiple-) Because slugs are best when related to some other text in an object, such as my blog slugs come from my blog titles, there are several useful ways in Django to auto-convert (or slugify) some input. |
Spent most of this week in transit. Today I'm exhausted and a tiny bit jet lagged. I went to Palo Alto's California Avenue area and interviewed with a small startup in that area. I learned much from the trip, but unfortunately I did not learn some of the things that I had been hoping to learn coming into this week.
I wish I had had the money to have invested in making the trip seem ultimately more worthwhile with respect to my considerable "geographical disadvantage". (I've decided to refrain from ranting, at the time being, about my hatred of the airlines and the absurdity of their hub layouts and pricing schemes.) Certainly, I particularly wish I had had the chance to spend more time going "door to door" with some of the other companies in the Bay Area, particularly the San Rafael area, in one longer trip.
The joint is one of those few places open this late on a weekday evening. You hover over a plate of greasy food, biding your time for the anonymous meats to give up the ghost and finally die. A cup of coffee is at hand, from which you gently sip, the warm comfort of the dark beverage sluicing caffeine through your tumbling mind. You know the coffee only exacerbates your late night existence, and yet to not finish this cup would seem like a shameful waste of a good friend.
A couple at the bar nearby is telling a deep dark tale of tragedy, anger, and even a tinge of lust. Beyond the general emotion of their tale, you can't fathom a bit. Their domestic dispute is entirely a foreign language to you. Even when they speak in English they speak in riddles and your mind fails to latch on to any sort of contextualized meaning at all.
The joint's night manager isn't interested in your thoughts other than barest obsequiousness necessary for what he hopes will elicit a good tip. His hand is quick to the carafe whenever your coffee seems low. His weary half-smile manages to seem slyly conspiratorial whenever he does so.
Maybe you'll head for what purports to be home in this city after you finish this next cup of coffee...
May's Topic
The topic for May asks us to explore the themes of a piece of non-interactive art as fodder for a game.
Gianfranco Berardi of GBGames in his May Round Table post explores thoughts on a game based upon Michaelangelo's The Last Judgment. He ends with a challenge to discuss Edward Hopper's painting Nighthawks. I've decided to tackle that challenge.
Nighthawks is one of those paintings ...
I have developed an interesting love/hate relationship with Sony Online Entertainment's Free Realms. The game is nothing but puree du MMO at nearly its finest. I tend to describe it thusly: it's Guild Wars, but... you know, for kids... with a bit of Puzzle Pirates thrown in. Those two comparisons particularly stick out in mind to describe the game, but there's bits and pieces that I've recognized from all over the MMO spectrum, including from my stints playing Disney's ToonTown and the more recent Cartoon Network's FusionFall. [1] Then there's a little bit of Mario Kart, the Petz series, and even a collectible card game for good measure. It's hard to find a more vasty collection of "kid-crack" games under one massively-multiplayer roof.
To be perfectly honest, I've spent most of play experience in a sort of "perpetual deja vu". Just about every game mechanic is borrowed from somewhere else. However, the game is executed admirably well. There certainly is a high degree of polish to the art and visual style. I've encountered more than my share of bugs, but I'm sure that most of them have been combinations of growing pains (two million registered players in a month is certainly strong growth, even if probably only a fraction of that is yet monetized) and what seem NAT traversal issues, which I have some small bit of control over. [2]
Allow me to use my earlier main referents to frame the remainder of my discussion: I think the game compares very favorably to Guild Wars. I've pointed out before that I'm not a huge fan of Diablo-style RPGs, and still have yet to complete even the original Guild Wars campaign, but I fell in love with ...
I've got post ideas for some of the deeper themes of Synecdoche, NY, but figured it might be more fun to open debate on one of the possibly sillier themes. Synecdoche is obviously a movie about the "small horrors", the horrors that occur to a person naturally through the course of decay. Decay is an obvious, deep theme of the movie. The film was always meant to be that sort of a horror film, as from this Synecdoche interview at AICN:
...what happened was that Spike [Jonze] and I originally were approached by Sony to do... to do a horror movie, and we talked about ideas and we wanted to do something that sort of wasn't attached to the genre notion of horror, and so we were talking about things that are scary in the real world, and in our lives...
I think that perhaps the truly amazing part of Synecdoche is that it also merits the debate over whether or not the movie also contains large horrors. The movie wraps us up in all of the small horrors, but then leaves enough ambiguity if you start to wonder about what is happening at a larger level that there is certainly room for interpretation. I shall provide one interpretation, what I consider a "silly" interpretation and I certainly have very little idea about its overall validity, but it is a fascinating angle of the film to talk about: I think that Synecdoche is "secretly" a movie about a Zombie Apocalypse, and if it is, well then I think it may truly be a hallmark film for Zombie Apocalypse films.
First of all, I think its important to start from the realization that the point of view of the film is largely Caden's, and even when Caden is ...
Just published my first arc with the City franchise's Architect system. If any heroes or villains that might read my blog are interested in trying it, it's Arc #145654 "Iniquitous Inventions, Inc.". The story is a fairly simple one, although there are a few complex things I tried to do that I don't think quite worked as planned, revolving around my primary City of Villains character, a (now) Level 41 Bots and Bubbles male Mastermind named Inique (feminine form for a latin word for sin, related to the English word iniquitous, which is not to be confused with ubiquitous or even unique).
When I first started playing this particular villain "way back" in 06, what I sort of imagined doing with the character is basically what plays out in the arc: define a nemesis hero for him, and then place him and whatever goons I put together into silly situations for heroes to narrowly escape from. (I was a little disappointed at the time to find that City of Villains was just sort of a "grimier skin" on just about the exact same game.)
This arc is definitely a little on the silly side, but does flow naturally from what I had been doing with the villain from quite early on. As a robotic mastermind, the character has 6 robots that he can call on to do his evil bidding. When I first started playing that character, robotic masterminds were something like a dime a dozen and it quickly became apparent to most of us that we could rename our pets, our robots, and add some differentiation to the robotic hordes that would sometimes show up in a team mission. My theme for Inique's robot names quickly became "household appliances" and so the names of the ...
The PAX 10 application deadline is Saturday the 9th, and Derby (the deadline I've been using for weeks) is this Saturday. I've been working on something of a tangent to the game itself this week, the Awards system. Certainly a bad time to run the gauntlet for a tangential feature that is mere "polish" when there are bugs left on the list. However, the Awards menu items are the only remaining items on the menu that don't do anything. The PAX 10 submission wants a strong Beta, and for recent weeks I've been using the percentage of working menu items as a rough estimate of beta-candidacy. Certainly Awards are "polish", but like Help screens they help all the more with the feeling that what I'm working on is a "real game".
I'm hoping to have a chance to do a deeper write-up, if not a full fledged article on this week's work towards the Awards system, because I would like to contribute deeper to the communal spirit. Particularly because I started with a sample from Ziggyware, expanding it to better fit my needs. But also because this is one of those areas where XNA games have to fight to appear nearly as polished as the 360's in-built Achievements. Better "Awards" or whatever we call them, I think, are needed to gain some sort of legitimacy foothold with "normal 360 players". The sample I expanded upon was started in this first Awards article by Nick Gravelyn and expanded a bit in this second Awards article by Daniel Hanson.
Until I get a chance to write that deeper write-up/article I figured I would release early. Until it finds a more permanent home, here's a simply hosted AwardsDemo.zip.
I've included the ...
The last few weeks have been a bit crazy and there are probably a handful of posts that I've wanted to make. They probably still deserve individual posts, but I'm going to just do it as a bunch of snippets.
My maternal grandfather passed away a few hours before my birthday. I will miss him, and I've been meaning to write some sort of memorial thing, but the words haven't come yet and I've been preoccupied. Now both of my grandfathers have passed away, within the span of almost exactly two years. So it goes.
I used a bit of my birthday money towards a couple of games. Perhaps the principle poor choice was to spend another month for City of Heroes/City of Villains, and I say that in a loving fashion. Certainly I've already spent more hours than I planned to within the Rogue Isles. The game is certainly as slot-machine addictive as ever, if possibly more so with even more flashy things that go ding every so often and the near elimination of my biggest arch-nemesis of all, debt, which was arguably a silly idea in the first place.
The particular reason for the visit to Paragon City and the Rogue Isles was to play with the new Architect system. First of all, I feel that I must point out that I feel a little queasy every time that I see a press release, and unfortunately there have been several, proclaiming that the Architect system is the first of its kind, ever for an MMO. It's possible if you narrowly define MMO to include just the Diku-derived graphical MMOs that have been a steady progression from the EverQuest template, that it might be considered the first. But as someone whom ...
It's one of those gray Floridian days where you feel like just curling up with a book, here on my "working" vacation. [1] Today I got a bit of an earlier start than I might intend on such a gray day and have been working my way through Inside Straight, a Wild Cards mosaic novel. I got a paperback copy of the book out of LibraryThing's Early Review program [2], so I've got a review promised that you can expect to appear on this blog, but consider this a midway warmup to that review. I'm going to apply some of my thoughts on the novel to some of my recent ruminations about game and world design, so this post isn't exactly a review anyway.
I have a huge interest in shared worlds and Wild Cards is a shared world that I've spent a reasonable amount of time in. Wild Cards is a shared world series that is only a few years younger than I am and at this point encompasses 18 volumes, the shared effort of over a dozen writers and the steady editorship of George R. R. Martin, now perhaps better known for his high fantasy series. The basic premise is a world with super-powers (due to an alien virus referred to as the "wild card virus"). It's a (sometimes quite dark) funhouse mirror of our own history, but filled with heroes ("aces"), villains, a deformed under-class ("jokers"), plague deaths ("black queens"), assassinations and alien invasions.
The series has some of the seriousness in tone and literacy of the post-Watchmen era of comics, as if perhaps reading novelized excerpts from some post-modern comic canon. As much as it speaks of our own history, it possibly has more to say as what ...
March's Topic
Can and do games exhibit authorial intent, as might a book?
Auteur theory, in films at least, suggests that a "creative visionary" can truly lead a team project and have an authorial influence on all, or nearly all, aspects of the project. Some people don't believe that an auteur can truly lead a creative vision across a project, particularly because a modern Hollywood film consists of work contributed by hundreds of people, many of whom never work directly with each other.
I certainly am a believer of a broader view of Auteurism. I certainly think there are Auteur directors that definitely leave an indelible mark of themselves upon the screen. But I also think that the definition of an auteur, of someone with an authorial impact on a film, expands to fill many of the creative roles in a film. At one point I had my film collection broken down by the Directors, Writers, Cinematographers and even Actors that I think bring something more to a film, and can elevate a film to greatness. The idea that these individuals leave indelible marks on a film's DNA, and to me that is a definition for "authorial".
I watch a lot of DVD special features. It's a habit of mine to try to watch most of the non-commentary special features on each DVD of mine. I also realize that it can be something of a rare habit, as not a lot of people care for special features. One thing that I have noticed in my special feature watching is something that should be practically common sense: good auteurs find talented people to work for them. Delving into special features you will find auteurs' love letters to the editors, costume designers, cinematographers, set designers, and what have ...
I've been thinking about keeping better track of some of the cool tips and tricks for use in my source control system of choice, darcs. Here's a couple of quick tips for working with darcs changes:
It is quite common to want to know how many patches have been added to a repository since the last tag, for instance to review the changes since the last major build so that you can write release notes before tagging the next build. The --from-tag matcher is exactly what you need. To select the last tag you don't need to remember what it was, you can let darcs do that format. Keep in mind that the matchers accept regular expressions and that the --from and --to matchers select the first matching patch they come upon. To get the changes from the last tag is as simple as:
darcs changes --from-tag .
The dot is a RegEx that matches anything (and hence everything), but since --from-tag stops at the first tag that matches, it shall always stop at the most recent (thus last) tag. It might be useful to note the difference with:
darcs changes --tags .
If you run this second command, it shows that the RegEx does indeed match every tag in the repository and the output should look similar darcs show tags.
As with any other darcs changes call, don't forget that you can add --count to get just the number of patches rather than a change log and --interactive for patch-by-patch inspection.
On the heels of my own post referring to Derby, I was referred to an article at The Urbanophile about Louisville marketing itself as a Vice City (via Broken Sidewalk) and in commenting chanced upon this spirited ad for Louisville. I certainly think "Just Add Bourbon" is a more interesting slogan than "Possibility City". Oddly enough, the ad appears to be from GLI's [1] Community Branding Project, or at least it's on one of their YouTube accounts. Needless to say, I think there is some benefit in chasing after a more Vice-filled "New Orleans of the North" campaign.
| [1] | Greater Louisville, Inc., the Chamber of Commerce |
First of all, my alma mater's historied men's basketball team, the University of Louisville Cardinals, has just defeated the beast that is the Big East winning both the Regular Season Championship Title and the Big East Tournament Championship Title, and are the Big East Champions, without any more doubt left for naysayers. It's exciting and there's certainly more excitement to come.
Moving on to business: I'm really excited at the progress of my game. (I've been working hard to bring a fun card game to the monitors and HD screens in people's living rooms.) Other than sending out resumes, I've pretty much been working on the game full-time and things really started to show up this week. Programming can sometimes be frustrating because a lot of work can be done and very few visible results come from it (because "stable" and "conceptually clean" and "expandable for the project's next needs" rarely is directly visible). Programming can also sometimes be amazingly thrilling when one small change makes a project visibly sing stronger to its audience. This last week has seen a few long running rewrites hit right into a few tiny tweaks (leveraging the rewrites) to produce a build that I'm quite excited with.
Today I had two good friends stop by for a few good hours of playtesting. It was great to get feedback from fresh eyes to the project and played through a good chunk of the game content. I'm working on making these playtests at least somewhat regular from here on out. At least through the end of March, with (vacation) schedules the way they are we seem somewhat stuck to schedule on anything tighter than an ad hoc basis, but hopefully April will provide opportunities to ...