prog: (Default)
Felt at loose ends this morning, so threw myself into Appleseed work, finishing a major phase of an interesting job that involves knocking PDFs around in novel ways. Emerged from a rare fugue just in time for supper.

I can't complain about my life too much when stress-relief means doing billable work.

(Also, I enjoy the chance to work with graphics, instead of just text. At the end of a work-phase the accumulated think-through doodles in my notebook look cooler.)
prog: (rotwang)
This SXSW talk from Merlin "43folders" Mann and John "Daring Fireball" Gruber has become my personal north star for the moment. (Here is a transscript.)

It boils down to this: If you wanna publish something awesome on the internet, figure out what really and truly obsesses you. Then follow it. Let your desire to be awesome lead you, versus your desire for ad clickthroughs. If you succeed, then further success shall come.

This is lining up to be my guiding principle for a lot of what I hope to do in the foreseeable future.

(Image credit: moleitau, after this.)
prog: (Wario)
Nifty new Planbeast feature: Personalized Planbeast cards, little images saying what you're gonna do next on XBL, with links going to the event's detail page:

Join Jmac dot org and others at, the free scheduling service for Xbox Live games.

Thanks to [ profile] daerr for gadflying me into doing this prior to my starting to post on alien forums to spread the Planbeast gospel. (Yes, guess what's going to go in my signatures, there.)

Haha, and of course I just noticed that the time zone setting on them appears to be screwed up. Still digging. Update: Fixed.
prog: (Wario)
OK youze guys, after hearing about Microsoft's GDC keynote and its plans for XNA, I'm hot to buy an XBox. I mean, I kinda have been for two years, but I can more or less afford it now, and my justifications have never been more solid.

I understand (with Wikipedia's help) that it currently comes in three sizes, and that (correct me if I'm wrong) I want the middle-weight "Premium" one, versus the "Arcade" or "Elite" ones. (Sigh.)

What on-disc games that are available right now should I get? (Fritter me not with your talk of pre-orders.) What downloadable games should I get? Assume that Portal and Rez are already in my imaginary cart.

Any other things I need? Extra controllers? Who what?

I'm just going to play it on my old crappo TV for now. Yeah, I know.
prog: (Default)
Any of y'all disciples / detractors of Getting Things Done?

Entering into another transitional state as I am, I have an opportunity to sniff at new productivity philosophies. This one seems to have a substantial amount of cred among full-time net-babblers, but not necessarily among anyone I know personally.

Still, I am starting to get the impression that my own "four pillars" system may be an attempt to implement it without actually having read any of the source material (but being vaguely aware of it for years).
prog: (Default)
They say that every Perl hacker's journeyman project is an HTML templating system. I'm learning about a variant, running into clients who each developed their own SQL abstraction modules before hiring me. Like every other SQL abstraction module, it really has just one purpose: an attempt to avoid having to embed one programming language (SQL) inside another one (Perl).

To this I say: Bleah. I used to agree with this sentiment, and for years used modules like Class::DBI, which treat tables as classes and rows as instances. Clever, and easy to work with! But now try doing a right join. Ha ha, no, I know: show me how do to a subselect with that. Yeah. Either you punt and shove raw SQL into your code anyway, or you insist on doing it "Perlishly" with loops and checks, in which case a query that should have taken a tenth of a second takes several seconds or more.

In fact, I'll wager that your code is already running at horrible efficiency because you're pounding the crap out of your DB with unneccessary loop-based SELECTs instead of carefully doing case-by-case SQL queries that get exactly the rows you need, each holding exactly the columns you care about, every time you call an information-seeking object method. I'll also bet your INSERTs are ass-slow because you're not using bind values in them. Actually, you're not using bind values anywhere, right? Yeah, see.

My friend, if you're going to work with a little raw SQL, I argue you're already blown it, and may as well just let it all hang out, throwing out your half-useful abstraction layer. There is no sin in openly acknowledging that you're using an SQL database by actually writing SQL. If the fastest way to get some particular information out of the DB is to write a crazy-long and baroque query, then you should do so. Let the database do the work it's optimizied for and stop treating it like a set of config files that you'll need to write your own logic around.

Another way to put it: If you're writing nested loops in your SQL-driving Perl, you're probably doing it wrong.
prog: (Default)
Call me Cory if you must, but I found the lead graf of this story about Apple's latest response to iPhone hackers very disappointing.
“It’s a cat-and-mouse game,” said Steve Jobs. “We try to stay ahead. People will try to break in, and it’s our job to stop them breaking in.”
And by "people" he means "customers". I mean, by definition. The iPhone is a hunk of hardware that has been purchased for hundreds of dollars each by the people in question; there's no other way to obtain one. And Steve Jobs, who happily took their money, stands here and baldly states that it's now Apple's job to thwart their own customers against using their purchases as they like.

Gawd. I dunno.

And this isn't even getting into the conventional wisdom that these insulting maneuvers are all futile anyway, since any sufficiently charged-up hacker base will always circumvent your barriers within moments of their release...
prog: (Default)
Hey folks. I didn't go to Origins; the Andys didn't wanna and the timing just didn't seem right. I am giving myself another day or three to decide if I wanna go to Gen Con. I don't have a really solid reason to go, since Volity is in such a weird transitional state. Networking is good, but until the web client's in full beta it all feels uncomfortably premature.

In any case, the Great Work continues. Today saw [ profile] classicaljunkie off to Houston as I have for the last N Sundays (which means I stand in my doorway and wave bye-bye as she schleps her stuff away) and then turned to work on the web client. Right now the going is rough, and unavoidably a little frustrating, as I'm finally starting to interface my crazy library stuff with the website. Who knew, for example, that you can't make AJAX calls to a host other than that of the website making the call? Er, well, you probably did, sure, but the issue's never come up for me before, and since prototype.js treats this with silent failure[1] I got really hung up on it. A phone call to [ profile] daerr resolved this.

I think I need to mix up my life a little more. Monomania is expensive, especially when you're working alone (or have the unavoidable perception that you're alone, even if you're not really). Focus is great, but there's a subtle gradation of diminishing returns, and sometimes the march can turn into a slog hours or even days before you notice. There's a constant assumption that whatever you could do is less important that The Project, and so you keep working on it, even when you really don't wanna. (Or worse, and too frequently: you really really don't wanna, and so you do something truly time-wasting instead.)

Right now I enjoy some variety because of the contracting job that I'm obligated to do, and I have no trouble letting myself context-switch into it three days a week. But that's still a task with the morphology of sitting on my ass planning and typing code, and anyway, that's my day job. It's also the only part of my week-by-week schedule from a couple months ago that I've stuck to; since writing that plan, I have spent exactly zero Sundays on video projects, for example.

OK, listen: Tomorrow, monday, after work, I'm gonna map out a plan for the next two months. On the Volity blog I called a shot that had me hitting a certain milestone with the web client by September 15. I'll scatter some subgoals between now and then, and then see if that doesn't show some places where I could fit in some other activity as well.

[1] No, I didn't try setting up an onFailure handler. But really, this seems like a job for exceptions. And now you'll explain to me how the architecture makes that impossible, sure, sure.
prog: (Default)
I wrote the most beautiful little Perl program for a client last week, the first small, complete program I've created since reading Perl Best Practices. It performs an analysis of potentially enormous amounts of company data, but it's wicked scalable. The client will be able to keep the program lodged in its cron schedule even if they later find themselves managing millions of user-run content channels (they're just into five digits now). O to the (l to the o-g n), yo.

This is the first time that, faced with a small-scale task, I encouraged myself to think of a way to make it scale better than the most obvious solution. And then implemented and documented this solution in an aesthetically pleasing way. I swear to god I've been logging into their server just to admire my own handiwork. I haven't done this in a long time. Actually I may have never done it with source code, only with my art or prose. This is what that book has given me.

It's most likely that I spend so much time on enormous projects that it's not clear to me how much I've grown as a programmer until I get the chance to use what I've learned in a small space like this.
prog: (Default)
It has been a full weekend.

Saturday saw a lot of Volity hacking, breaking ground on the web client's server-side component. Once the complete skeleton is built I'll commit it as v0.1, but my fugue state didn't last more than a few hours and I had to be all "whoah" and raise my hands and step away before I could quite get there. Maybe I'll finish it today. Anyway, this will be the first Perl-based Volity sub-project that I've started since I got religion via Perl Best Practices, which taught me to start major projects by writing the tests (and, in so doing, designing the interface) first. So that's exciting. If you're me.

In the evening, [ profile] radiotelescope, [ profile] cthulhia and I saw Day Watch, the sequel to last year's Night Watch, a.k.a. the crazy Russian vampire movie that everyone except for me and the people I saw it with hated. I liked this movie too, though not as much as the first. It replaced the crazy imagery and action of the first movie with some fun plot development. I dug it, but I missed the other stuff. It also contained one completely irritating character, who (among other things) failed Mo's Movie Measure the instant that she was able. Worse was that this occurred during an egregious and overlong "Freaky Friday" sequence, and so I spent five or six minutes in a sustained wince in the middle of this otherwise enjoyable flick, and that was unfortunate.

Sunday was [ profile] classicaljunkie's birthday! Following plans that [ profile] dougo initiated a while ago, and also accompanied by Cthulhia, we drove to Kimball Farms to play miniature golf, or "putt-putt" as CJ calls it in her native language. I hadn't played since I was a kid but I'll be damned if I still didn't have reasonably good chops for it. My friends laughed when I said it was all the golfing video games I play, but I wasn't entirely joking! The place has two courses, and we played both, with me winning the first round and CJ the second (after Cth left), though the point spread was fairly tight.

The courses were enjoyable but rather bland, with one real standout whose like I had never seen before: one hole split in a vee a few feet away from the tee, with one arm snaking towards the cup in the usual fashion, and the other dumping into an artificial stream. As it turns out, the best solution involves purposefully putting into the water, which carries your ball under a platform and through a hidden tube, ejecting it right at the cup. But there's no explicit documentation about this; you either need to watch someone do it, or be intrepid enough to figure that there had to be some reason for the hole's stairway-to-nowhere design, making the leap of faith yourself. Doug was the brave one in our party, and he and I both got holes in one.

The rest of the course was really nothing special, but I just couldn't shut up about that one hole. Great design!

Also did some unexpected networking: the dad of the family playing behind us turned out to be a publisher of some computer and video game magazines from the 1980s and 90s that I loved as a kid! He couldn't help but overhear Doug and I talk about Volity and iPhones and such, and we chatted for a while. he was interested to hear about my startup, so I need to email him a little follow-up today. Had no business cards on hand, but wrote my info on the back of an extra scorecard for him.

Then we went to dinner with [ profile] dictator555, at Pigalle, in the Boylston vicinity. This was the first time I'd really experienced a fancy-dan restaurant where you pay exorbitantly for very little edible mass. It felt like something from a New Yorker cartoon. I ordered a $15 a menu item describing itself as gnocchi, and it meant this quite literally, featuring a gnocchi, one single piece, on a little bed of vegetables; an island in an otherwise large and empty plate. I did appreciate this, though perhaps not in the way they meant me to.

It was delicious, what there was, and I also quite enjoyed the sampling that my dining companions allowed me from their dishes. I said that I'd consider returning the next time I felt the need to really impress someone.
prog: (Volity)
OK, I lied: one more obsessive Tic Tac Toe Testbench example. This one's totally worth it, though: an example of a Volity UI written in Flash and JavaScript.

Yessiree. It looks and works much the same as the pure HTML example because it's a port. Code-wise, the only real difference is that there's a SWF file in the mix, and when the JavaScript decides that it's time to update the visuals somehow, instead of twiddling with DOM or CSS, it fires a command into the SWF via an ActionScript ExternalInterface callback. It's not doing anything that isn't standard Flash/JS technique.

This is some truly exciting stuff, and a huge validation for me. I wanted to prove to myself that this actually works! That it does says very good things about the prospects for other embedded-applet-style Volity UIs, too.

Everything's all in up Subversion for your examination, and here is the source zipfile. Now I will carry on and start making the real client.

(And if the Flash looks like butt, it's because it's the very first Flash thing I ever made. Everything I know about Flash programming I learned in the last two days. Props to Chafic & Joey, and a nod to [ profile] misuba for first mentioning Flex to me a while ago.)
prog: (Volity)
Finally. Sarissa did indeed ease my XML suffering; thanks for the pointer, [ profile] jaq! Lots of other hangups to overcome, but nothing that stumped me. Much was learned.

Here's the same boring old Tic Tac Toe demo which works in MSIE (and, afaik, everywhere else) now, and here's a zipfile of version 0.2. Everything's up to date in Subversion.

Now that that's done I will stop seeming to obsess over this one example and start making some more interesting prototypes. Much of this suffering was done over JavaScript library code, so it should all carry into the future nicely.
prog: (Volity)
[crossposted to [ profile] volity_forums]

I'm pleased to announce the initial release of Testbench for HTML-based UI files. This is, in effect, our first step towards a fully web-based Volity client. As with SVG Testbench, this program allows for incremental testing of a Volity user interface while you develop it. Once everything works as you expect in Testbench, the UI is ready to be loaded into a Volity HTML
client for playtesting.

The hitch here is that there is no Volity HTML client to test against right now. It may seem strange to release a development tool targeting a client that doesn't exist yet, but since Testbench is really just a stripped-down, offline version of a full client, its development ended up being a natural proof of concept. Furthermore, since the Volity's UI programming API is stable, anything that works in Testbench today should continue to work once plugged into a real client later on.

You can play with an online demonstration of HTML Testbench here. The downloadable application includes that Tic Tac Toe example, with easy-to-examine source code.

Sadly, it doesn't work in MSIE yet. Compatibility with all major browsers is early on the to-do list. In the meantime, we recommend Firefox. (With the Firebug plug-in installed, it's among the best web development platforms you can find.)

You can find testbench in our subversion repository, in /trunk/webclient/testbench. Here is its full README. You may also download it as a zip file here.

Feel free to post in the forums or contact me directly with any comments or questions about this project. Enjoy!

And now, back to money-making mode. I am feeling antsy about being away from it so long. This is a feature.
prog: (Volity)
Sexier version of that HTML UI demo. This Testbench port now has full support for Volity's JavaScript API, as well as its translation token protocol. Also, it no longer has Tic Tac Toe hardcoded into it, but you wouldn't know it to look at this. It's running TTT as a module.

I'm calling it feature-complete. Will document n upload n announce tomorrow.

Some notes carried over from the last post's comments (which, I have to say, charged me up quite a bit):

Both the Testbench application and the Tic Tac Toe UI are pure HTML/CSS, scripted with plain ol' JavaScript. You can look at their source if you dig around with your browser, but it will be all up in Subversion soon.

UIs don't have to be pure HTML, though. Our intent is that they can also be Flash, Java, even SVG applets, so long as the developer uses a JavaScript bridge that can pass messages between the embedded component and its container.

Yes, I want a demo of a Flash-based Volity Tic Tac Toe UI. I'd have already made it myself, if I knew any Flash. Maybe I can find someone else to help with this.

We have no plans to drop SVG or Gamut support. However, if my current feelings that the web-based client will be far more popular than Gamut bear out, we're likely to focus a smaller portion of our development energy on SVG stuff.
prog: (Default)
I'm going to be mostly hermity this weekend. Between the web client and preparing the Ignite presentation (which I'm now informed has a strict 5-minute time limit), I'm going to be partying like it's 2006.

I have caught myself implying to people that I'll actually have a usable client done this weekend, which is actually quite silly of me. My more realistic goal is to get a truly feature-complete Testbench beta done, shared and announced. It will be a downloadable application that you'll run locally, even though it's all browser-based.

Testbench and the full client will end up sharing a great deal of JavaScript code, so I'm taking extra care to write clean and portable functions here; I'm really working on both targets at once.

The client itself is a monstrous huge project. The key backend component is fairly simple, and is what I have in mind when I talk about how quickly I'll be able to put it together. It's writing a decent web application around it, one usable by the general public, that worries me. Well, we've already set many precedents and components down with the design of the website itself, and I have a feeling that the client will, in the end, become an inseparable part of the site, dissolved all throughout it.

No, I am not willing to change my statement that it will be in beta by the end of this year. If anything's changed, it's that I'm now completely confident that it can actually happen.

But now it is 9:30 and I've run out of power to keep slogging at this thing. Maybe I catch up on "Lost" so I can have conversations with certain friends of mine once more.

I suppose I'm feeling OK for having skipped my evening coffee, as I will continue to do for the next four weeks. Sigh.
prog: (Volity)
It's worth a personal blog entry, if not a Volity blog entry: Demo of an HTML game UI, running in an HTML port of Testbench. Testbench is otherwise a Java program that Zarf put together a while ago for testing SVG UIs.

This demo is probably boring and meaningless to you unless you're deep enough into the Volity trip to see where I'm going with this.

I am really on fire about the web client and don't wanna work on anything else. But I must! I'll suffer through one day of worky-work and then spend the rest of the week on this. I think I can make Web-Testbench feature-complete and also make good headway in the client as a whole before next Monday. (Yes, I realize I have a presentation to put together, too.) As things are for-real completed I'll announce them on forums.
prog: (Default)
I went into last weekend feeling really weird and doomed and came out of it... well I guess I still feel doomed but at least it's the good kind.

Saturday was a day for conversations. I had a conversation with [ profile] daerr about the Volity web client, and later had another with [ profile] classicaljunkie about the nature and direction of our relationship. I now feel on much better footing with both.

For the first time in a long while, Volity suffuses me with the IT'S LATER THAN YOU THINK sense of dread, the way my gut feeling manifests itself when I'm on the right path. It feels awful but it is a good thing. I put all of Sunday into the first real I know exactly what I'm doing-quality work into the web client. As I write this, I am almost done porting Testbench into HTML. If you know what this means, this ought to be exciting to you. At any rate, there will be more public announcements and demonstrations when it's ready.

Yes, Sunday was supposed to be my first day for doing video production work, according to my new weekly schedule. But, the schedule's meant to be broken, and my being on fire about something acts as a trump here.

Yesterday wasn't really the weekend but I'll mention anyway that I spent most of the day doing good work for the webby client, and then I watched Eraserhead for the first time. Now I have the idea in my head to try grinding it down to a 20- or even 10-minute short and seeing if it turns into a whacked-out surreal comedy. Also making one of those joke fake-out trailers out of it. I think there's just enough dialog in there to make a trailer that depicts it as a romantic comedy. She's got a wacky family, and he's got some kooky hangups! What could possibly bring them together?

On Saturday D also set me up with all of the Heroes and Lost that I haven't seen yet. In the case of Heroes, this was most of them. The three of us watched a couple of episodes all together that evening, and CJ and I have been catching two or three at a time since then. (She's already seen them all and is a huge fan.) I like the show but I don't loooove it. It feels very tropey to me, in terms of both style and content. I have already read The Invisibles and Astro City and other superhero (d|r)econstruction efforts, and here is yet another one that clearly follows their lead, albeit in a new medium with decent production values.

I find the production itself diminished for being riddled with visual clichés. Oh, a character is walking backwards? Wait for the hand to come out and grab the shoulder! Yes, there it is. BUM BUM sez the soundtrack. Yeah, shut up. Actually I do have to say shut UP out loud at the voiceover that randomly reads different episodes in and out with Winfrey book club psychobabble.

Also, the depiction of severe neurological trauma on a conscious body continues to be the only visual that can really squick me. And boy there's a lot of that on the show. Insert standard frustration that you can show living brains getting liquified on American TV, but not boobies. Boobies are bad. Also swearing.

I have some really hairsplitting whines about specific bits of content on the show, but in every case it comes down to "that's not how I would have written it", and if I'm imagining myself on the show's writing staff, that has to mean that I feel something for it. And I do; when it's fun, it's really fun. And it's fun more that it isn't.
prog: (The Rev. Sir Dr. George King)
Google and Wikipedia aren't coming through for me on this one:

Imagine that we have a utility which, in the course of its duties, reads and writes files to a file system.

What sorts of behaviors would make it not NFS-safe? I thought NFS was totally transparent to man and beast alike, but perhaps this is not quite so?

Perl 6

Apr. 26th, 2007 11:38 am
prog: (monkey)
I feel the gentle winds of conventional wisdom buffeting me towards Ruby.

Is there a practical reason why I might want to do this? Coz if I learned it just for S&G but then didn't immediately start using it for serious, I'd forget it.

"Dude, Rails" is not a sufficient reason, unless you can tell me why I'd want to use Rails over any Mason-based solution.

(Referring to Ruby as "Perl 6" is from [ profile] xach, and the funniest in-joke I've heard all week.)
prog: (Default)
This week is Blank Verse Blog Week, an invention of my dear friends, the Freaks. They've been at this for several years; I don't do it coz I'm lazy. We're already a couple of days into it, but it's not too late for you to start, if you're into that sort of thing.

My colleague Zarf has started a Sourceforge project about Boodler, his wonderful soundscape generator. Several years ago he developed it up to a point where it was useable if you wanted to monkey about with Python-based command-line interfaces and manually manage your own sound libraries. I found the program's output sufficiently nifty that I would go through the ordeal - much of Perl & XML was written with its ebbing and flowing rainstorm module as background sound - but of course most people can't hack that. He and some other folks are now working on making the thing more accessible. There is a mailing list.

What other projects should I know about?

June 2014

1234 567


RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 20th, 2017 11:49 pm
Powered by Dreamwidth Studios