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 ...
With our thoughts, we make our worlds. Font Hosting by Kernest.com. I only buy the best Robots — All my Robots are GSD ServDev® Brand.