AS3 Gate and ProgressTracker classes

Slabdabbed a Gate and ProgressTracker class, like the one’s I talked about a few weeks ago, in AS3. Available in the code samples subsection of the Resume/Code Samples page. Includes an adequate test. Not a very real-worldy example, though.

Aside | Posted on by | Leave a comment

Recipe: Cherubed Eggs

Wonderful eggs of my creation.

 6 Eggs
 6tsp Apple Butter
 3tsp Sriracha
 3tsp Creme Cheese (Optional)
 Some Salt


Hard boil your eggs. My procedure is put them in water, get it to a hard boil, then cover and lower temp to 1 or 2 and let that for 10 minutes. NO MORE. Overcooking the eggs is the easiest way to detract from the experience. You’ll know you cooked ’em too long when your yolks come out with a sulfurous dark surface, not the healthy yellow you want.

After that 10 minutes, remove the eggs, crack, and peel the shells off of all of them. Easier to do when they’re hot. Shells are unnecessary for this.

Cut the eggs in half and pull out all the yolks. Salt all your egg whites.

Mix all the yolks, Sriracha, Apple Butter, and add Creme Cheese if you want a little more filling and creamy eggs. Spoon the resulting mix into your egg whites evenly.

That’s it! You can garnish them to make them pretty or add extra seasoning, but I recommend doing the basic recipe once first so you know what you’re working from. I’ve tried adding more traditional Deviled Egg ingredients, but found they don’t really fit. Let me know if you find any interesting additions!

I didn’t bother makin’ them look pretty. Keep an eye on the yolk color. These particular Cherubed Eggs are very balanced and mild. Add more Sriracha if you’re ready for war.

Posted in Personal | Leave a comment

How I became friends with Function Objects [Rock bands and Programming]

I’ve occasionally identified with some self-defining Rock Star archetype many years now. I can’t put my finger on exactly what, and it’s certainly not for some sex, drugs, and sensationalism power trip, but some aloof-yet-serious image served as a touchstone for some of my personal development. Beyond that, I love music and enjoy singing. I’m on the road to mastering the keys and throatstrings, and I’ll probably learn other musical expressions in the future.

I visited Kansas almost a year ago, being the transport of a friend in the process. His band put on a show just before I left and practiced for it the whole week I was there. Getting to see these guys, far more accomplished musicians than I, practice and put on a show was one of the driving goals for myself going on the trip.

I’m a fan of figure-it-out-yourself approaches and I’d call it a personal failure to ask someone to show me how to make music. These people are on a different level than myself, so watching them and participating in the events ensuing was a treat to the researcher’s hunger that didn’t completely spoil my private pioneering. This same will-of-the-novice carried it’s seemingly inherent stumble. It’d lead through a self-imposed embarrassment by zealousness and mirror sickness, being spiritually trapped in an image.

I knew this would happen on some level, but I also knew that what I would gain in experience would be worth any pain of the experience, which I should include with the three weeks of 10-hour work days I paid for the time off work, and even the effort to make THAT possible.

Music was then, and is now a serious endeavor of my life — something I put great care into bending my life to benefit. These events sank in with time, and as all things, it didn’t just go away.


I would later trace back an idea’s origins to this trip. I have images in my head still of messing with pedals and other sound manipulators that use a standard analog audio cable ports (as far as I understand them) to manipulate data (sound) as it streams through.


At the time I recalled this, I was biding the annoyance of rewriting code.
“We need to wait for these assets to load, asynchronously, then begin a single action.”
“I need loading data from many different systems to funnel into one feedback, the all-encompassing load bar.”
Hidden synapse firing. I remembered the function object, with which I’d recently been replacing much older API use of the “Function” class in Actionscript3. As Jackson Dunstan pointed out in his article on the subject, AS3’s “function pointers” are slower than the easily crafted “Runnables”, Function Objects.

Simply put:

class Runnable
 public virtual void run( ) = 0;
interface Runnable
 function run(): void //I prefer the (args:Array = null) parameter

My C++ is a bit rusty. I could come up with a better solution. I’d probably overload the parenthesis operator. I saw stdargs.h for the first time recently. That could be used to replicate my args:Array=null functionality from AS3, but it looks annoying to use.

So the ideas came together and there’s no other way it would’ve happened. It might not be the most novel thing to the world, but I was quite proud of what I was able to create in the way of tools.
By allowing classes/systems to create specialized Function Objects (with references to their roots) that all derived from the same interface, I could allow for, and would later develop, a large number of tools for data-flow and complexity management. Most of these were little junctions you’d create and use in local scope, who would later delete themselves (or have themselves deleted, depending on the language/implEmentation) when their task is complete.

And excellent example and starting point is what I called the Gate class:

Give it a final Runnable or list of them (sort them with priority values to make events!) to fire upon completion. Tell it to create Runnables via public function. When all the passed out Runnables are called, fires the final Runnable/list it’s stored. Can be locked while being set up. Can delete self on completion (Careful!)

This can be tailored to fit a scenario (child class, maybe) like keyed Runnables. Each created Runnable “trigger” has a key, duplicates just open the same lock. Works like an or (||) switch. You could also have it reset after completion for cycling logic, or have them pass data and do math to get numeric filters and funnels. That load bar got a lot easier!

Since they’re faster than Function (pointer) calls in AS3, Runnables make more sense for callbacks, there. I’m quite certain this will never be the case with lower level languages like C++, but if made fast enough, this could offer flexibility well worth the overhead. The ability to store data, in particular, has it’s own benefits to be discovered. For instance, you can store another Runnable as a “Callthrough” callback. Use this new instantiation where you had a callback Runnable going somewhere like a conditional interrupt, data gathering, or filter, like putting a pedal between your keyboard and amp.

It’s a less strong-arm hierarchical method of data-flow. It can also do complexity-flow, something I’ve not heard much about, even in concept. It takes some intuition to use well,  I think, and I wouldn’t use it densely in group projects without strong documentation and, of course, agreement and comprehension. Flexible code is always worth the effort in my eyes. It tends to be more reusable and generic, ie Elemental.

Sorry I don’t have code to offer with the above example. I didn’t think it was too hard to grasp, and you can write your own :P

Posted in Game Craft, Music, Personal | 2 Comments

Costume Craft and Makeup

I was the Elephant man this Halloween. Made the costume out of bolts of fabric. No experience there, save some sewing, and I think it turned out well. Tried to mimic the David Lynch movie costume (on budget in a weekend.) Hood material was too stiff.

Almost a year ago I dressed as Dead (from the black metal band Mayhem) for dead-rock-star day at work. Good excuse to learn to do grease makeup and how to work a wig. Turned out pretty well I think.

Posted in Makeup, Tailoring | Leave a comment

Remember, promise is bad practice.

It’s been too long since my previous update. This site has been a nice container for my works from school, but there’s not been much reason to “blog” and I’m not into bullshitting myself.
This definitely began poised to be a public record of works and research. Lately, what’s been growing in importance is my creativity, as it’s too long hid behind the looming shadow of my deconstructive, analytic faces. I hate to let one fall or stagnate. I’ve traded alot of time for the experiences of various crafts to find my muses.
I’ll be compiling some previous works here for show soon. Don’t act interested if you’re not. This is a public promise from me, to me.

Also, I live in a house now. Shit’s bitchen.

Posted in Personal | Leave a comment

After Years in Dark Tunnels Post Mortem

Been nearly two months since the release of After Years in Dark Tunnels and I’m way overdue on this report. I’m not very experienced at these, so it’s ended up shorter than I feel it needs to be. A developers log (non-public) may be necessary in the future.

After Years has received over 45,000 views since it’s release, and the comments seem to be split down the middle between people who loved it and felt a strong emotional impact, and those who seem to not have given it much of a chance or quit very early on.

To me, this says that the game’s core concept was very solid, but that the game was hard to approach. Being that one of the major goals of the design was to make players discover how things worked (prayer, especially) this isn’t hard to imagine. Even more so with the way games are hand-feeding players these days :P

Of course, that’s not all that the unsavory reaction can be chalked up to. Weak instructions make a fun experience, but more could have been done to at least smooth out some confusion. Explaining the double jump would’ve been good. I think that’s the biggest one.

The game took a total of 8 months to complete after the design was ready, and while both of us were in school.

Vision was well maintained! Throughout the whole process every overarching metaphor and placement detail was passed through the test of “Does this promote the idea this design was made to promote?” We almost made some major cuts, but I feel that the vast majority of what’s in the game is succinct.

Small Team! One designer/Artist and one programmer made for quick return on changes and easy flow of ideas. Being that we weren’t strapped for time or under someone’s management, we were able to mull everything around until it was great (or until we got tired of it and shipped.)

Communication-wise, we were alright. There were however some major miss-communications about when things would be done. A lot of this can be counted towards not having a whole lot of experience doing this process (from both a communication perspective as well as technical skills applied.) I think the biggest lesson that can be pulled from it is that without a producer to always have the producer filter of “If you tell me something, it should be the worst-case scenario first,” a group must communicate intention with information to a degree. The responsibility is on everyone to make sure we don’t go telling someone outside a completion date that isn’t realistic because the parameters for “completion” weren’t thoroughly explained.

Tools were also a problem. A good 3 months were spent on a tool (tile editor) that was eventually made obsolete by a design change. It was completed anyway because the design change was late in it’s development, but it was made useless by compatibility issues. I’m thinking designs may need to be a little more concrete by month 4 of a project than they were in our case.

Release itch. By the end, we’d hyped up it’s release quite a bit amongst ourselves and friends and as the game reached a shippable state, we rushed it out the door when better placement and opportunities. While most of this just would mean more money, which I don’t care much for, I still see the need to eject to be counter-productive.

As a first project, it kicked ass. As an art piece, it kicked ass. Themetically it’s not exactly my thing, but I enjoyed it very much, regardless, and had a lot of fun making it.

Posted in Game Craft | Leave a comment

The Ravenous Flender strikes the earth!

A very eventful middle-of-the-week. Maher and I have released, as of last night, our first publicized independent game, After Years in Dark Tunnels! We’ve gotten some expected flak from being different, here, but overall we’re loving the feedback. Postmortem to come.

In the wake of this release, I stayed up late fixing bugs and found myself waking to a phone call the next day as Dustin Clingman gave me, in my daze, the opportunity to join him at ZeeGee games for a paid internship, noting the game above being a major component to their interest in me! Goin in tomorrow. Exciting shit!

Plight of the Worm, my next project, has been quite behind schedule for a while since the job-hunt and getting After Years out the door became priorities. I’m gonna be focusing a lot on proving myself to the fine folks at ZeeGee, so I expect it to be a month or two at least before I’m nearing completion on that game. We’ll see, though!

Far off prospects are looking hazy as ever. Possibly some involvement in a band and maybe mountain climbing in the far future!

Posted in Personal | 2 Comments