Modern Genocide

iaian7 » blog   John Einselen, 18.01.10    

I read a short news article a year or two ago so shocking and so horrifying, I wasn’t sure what to do; words continue to fail me, so my blog post will remain short as well.

Today is a national holiday, celebrating the birth of one of the United States’ most prominent and inspiring freedom and equality advocates – Martin Luther King Jr.

Today also marks the beginning of Sanctity of Human Life Week – a both complementary and ironic juxtaposition.

Today, African American infants are 3 times more likely to be killed than a caucasian infant, and a disproportionate number of Planned Parenthood clinics are located in targeted minority communities.

As countries around the world attempt to recover from, continue heinous crimes of, or secretly prepare for genocide, please remember what’s going on in the US. How can I sit idly by? How can you?

Guttmacher Institute: research on worldwide abortion trends
NRL Current Bills, Legislative Action Center, Elected Officials directory

John Weis, 20.01.10

Thanks for posting about this! I was praying with them on the march at bound4life.com . Also, I’m about to use your mediaboxAdvanced plugin… Thanks for both!

comment  
bookmark  

ProwlPost Automator Service

iaian7 » blog   John Einselen, 17.01.10    

I like to think Prowler is a pretty easy to use widget, but a poster on the Prowl user forums requested info on how to integrate Prowl notifications in Automator. An excellent question; even if you don’t need custom scripting, why not make a simple OSX Service that posts to Prowl? It’s not like the UI is particularly necessary.

It took a bit of trying, and the result is pretty rough, but it works! You may notice I’ve used a “Get Link URLs from Webpages” node to make the HTTPS connection. This is because something simpler (like “Get Text from Website”) inexplicably connects twice, sending double push notifications to the iPhone. No idea why, but at least it’s running ok with a rather repurposed action.

ProwlPost

To install, copy the file to your ~/library/Services/ directory, then double-click to edit in Automator. Update your UID (the Prowl API key) in the “Get Specified Text” node, save the service, and it should be ready to go. You can change the priority, application, and event name as well.

Make a text selection in any app that supports OSX automator services, then right-click to bring up the context menu. Select “ProwlPost” to send the selected text to the Prowl servers and push a notification to your iPhone.

comment  
bookmark  

Removing SVN

iaian7 » blog   John Einselen, 14.12.09    

It’s one of the greatest banes of my existence; SVN should never, ever be used for graphics. I can spend hours trying to get projects committed, and days waiting for them to upload… only to eventually fail, and I have to start over.

So yeah, I really hate SVN. It shouldn’t even be considered in the list of graphic and media file versioning systems to choose from; yet I’m forced to use it every week at work. A constant, painful reminder that I don’t work at a design house, but a development company. Often SVN screws up so badly I have to rebuild the entire directory structure to clean it up. However, the root issue is obviously SVN itself; simply removing the hidden control files can set things right side up again rather quickly (the hidden folders also contain a duplicate of every single visible file, turning a 52Gb motion graphics project into an unwieldy 104Gb). Once the offending SVN directories are removed, I can finally freely move folders of assets from one project (previously subjected to versioning) to a fresh new project, or a project versioned under a different directory, without sending SVN into day-long seizures. Very helpful!

Mezzocode.com has kindly posted an Automator workflow for removing SVN files, and I’ve taken the liberty of updating it for OSX Snow Leopard as a dedicated Finder service (Jason Eisen has also posted SVN and hidden file removal workflows, if you’re interested). Hope it helps someone else as much as it has helped me!

Remove SVN

To install, copy the file to your ~/library/Services/ directory. Right-click on a folder in Finder, and “Remove SVN” should show up in the list of services. There may be a short pause as Finder opens the Automator workflow, but once started it’ll ask for confirmation before deleting any SVN files, then post a Growl notice on completion.

comment  
bookmark  

Microsoft PowerPivot

iaian7 » blog   John Einselen, 12.11.09    

Normally I wouldn’t give Microsoft the time of day, nor would I even know about plugins for Excel 2010. But I happen to work on a lot of Microsoft projects, and I just so happen to be the lead artist on a series of PowerPivot videos (yes, there is still more coming!).

play

I’ve actually been holding on to the news for several months now, waiting anxiously for approval to publish the results of a very, very tight deadline. At long last; not only has the first video been posted to YouTube and Vimeo (visit! rate! love!), but I wrote two articles covering workflow development and effects for the series. They’re both in the After Effects tutorials section above: Lipsyncing with Papagayo helps explain the character animation process (along with a custom OSX Widget I wrote for translating lipsync files into keyframes), and Dynamic Paper Cutouts details how the torn and crumpled characters were generated on the fly during compositing.

comment  
bookmark  

Trailers

iaian7 » blog   John Einselen, 2.11.09    

It’s been far too long since I posted movie trailers. In part, I’d like to say, because of the lacklustre performance of recent storytellers. I have no interest in a movie where Jessica Alba plays a woman unable to get a date for Valentine’s Day. Really, it’s not even funny, the woman can’t act. The latest Robert Zemekis abomination even stars Jim Carrey; barely palatable when he’s not a pointlessly-CG old man playing Scrooge. Nor do I, in a particularly twisted piece of irony, want any part in promoting a disaster film that appears to be one long VFX shot set in the year 2012. There may be people in there somewhere, but they’re hard to see, and I doubt anyone cares if they’re saying anything. Apparently watching a digital California crumble into the ocean is more important than a good story. On second thought, I’ll probably watch that. I hated LA.

(no offence to my friends that live in CA, of course, nor any future employers located there; who I am sure are awesome enough I can brave unbearable heat and deadened landscapes without so much as a whimper of despair!)

The other part of the blame, of course, rests with me. I missed a few cool trailers in the past few months, such as Daybreakers (Sam Neil is a vampire, and so is most of earth’s population), Zombieland (America’s own Shaun of the Dead cult classic), and The Men Who Stare at Goats (George Clooney, Jeff Bridges, Ewan McGregor, and Kevin Spacey all in one film!).

Anyway, there are a two trailers that caught my eye this week. First up is a new trailer for Prince of Persia. I normally wouldn’t give this much more than a cursory glance, but the Prince of Persia series (on the original Xbox) is one of the few xbox games I’ve ever owned. Sure, I love a good game of Halo with friends, but on my own? It’s pretty much the only console title to ever hold my attention. Back in 2004, it was, well, kinda beautiful! And now? It’s going to be a film. Don’t get me wrong, that’s usually a horrific proposition, but Prince of Persia should have some decent story arcs to play off of, and given some good writers, the right actors, and action packed cinematography, it could pull off a feat that no one has, to the best of my knowledge, pulled off before; a decent film based on a computer game. Unfortunately, I do have a lot of issues with the cast. Somehow they skipped a thousand actors better suited for the role, and hired Jake Gyllenhaal as the lead. Sir Ben Kingsley is even deplorably typecast as a bad guy. But it’s sometimes hard to tell how things will come together based only on the trailer; can’t say this will actually pull through, but I’m hoping it’s cool.

DreamWorks films are hardly a shining example of animation or even basic film making – compared to Pixar (the end-all/be-all of good storytelling … and they’re pretty good at 3D animation too), the films from DreamWorks Animation just don’t measure up. Maybe they’re not quite as family friendly, maybe the animation quality isn’t as good, maybe the story isn’t worthwhile, maybe they’re just dumber … usually it’s all of those issues and more. Of course, any diatribe of mine against Dreamworks must be prefaced with an acknowledgement that I really liked Shrek. Yes, it had many of the aforementioned issues, but I found myself identifying personally with the whole pretty/ugly dichotomy (probably why I loved Hellboy so much as well!). I enjoyed it enough that I even like the second film a little. And to be very honest, I did watch Kung Fu Panda. Not a great film, but the character rigging really stood out – as someone who’s done 3D for a wee bit of time, good character TDs are unsung heroes.

Well, enough of that, and now that my soap box is handily stowed away in an easily retrievable location, I can finally get to the trailer for How To Train Your Dragon. A DreamWorks film I may not hate! It’s written and directed by some of the same people that did Lilo and Stitch, not a favourite movie of mine, but strangely charming. I’m hoping we get something similar from this film – a little odd, just enough quirkiness to be endearing. I’m actually looking forward to how this turns out! Be it the dragon design (more unique than most, I would say, even cat-like), the overly dry comedic delivery (heck, Craig Ferguson is involved, clearly recognisable in the trailer!), or the wetter, grayer palettes employed by the look department. Of course, it’s also being made for stereoscopic projection. That’s a whole other diatribe, and there’s just not the time. At least, not right now. Maybe the next blog post.

For now, let me know your thoughts in the comments!

Adam, 5.11.09

Have you seen or played the most recent Prince of Persia game? Jake Gyllenhaal seems like a reasonable fit for the prince in that game, both in appearance and personality.

Aaron Mustamaa, 22.11.09

P.o.Persia looks like quite a treat for the eyes, story notwithstanding. I in particular fancy the 80’s reflective chrome Syd Mead revival-esque titles myself. =]

comment  
bookmark  

Apple's Colour Picker

iaian7 » blog   John Einselen, 19.10.09    

I have had a seemingly long and sordid history with digital colour calibration. Back in college it was all about matching print output. Then it was web-safe (as in not web-safe). Then video chromaticity, gamma values, and black level IRE. Now I’m just constantly screwed by Apple and the OSX colour picker – it’s perfectly simple, has an easy to use colour swatch system, and … never keeps the right colour values. Ever.

In Lightwave, if I select a colour with a hue of 30 degrees, saturation and value set at 50%, next time I open it in the OSX colour picker? It’s a degree off, and perhaps 7% darker. Inexplicable. Same thing happens in Apple’s own developer tools, albeit without opening the colour picker at all – just by editing an element’s width or height in Dashcode, for example, can cause the object colours to: darken, skew, desaturate, and, if you have an alpha value selected, slowly fade into oblivion. It’s maddening I tell you!

What’s worse, Snow Leopard apparently is expanding colour management issues to inconsistently do the same thing to random UI elements. Such as the dock icons, which are now a pale imitation of their former glory, while still showing up in full vibrancy when viewed in a finder window. Utterly inexcusable.

It’s truly a bad position for Apple, as they have typically catered to those with keen eyes for colour – with colour management and ICC profiling built into the very OS, you’d think this the type of thing that wouldn’t happen. I’ve always loved the monitor calibration utility, but I have serious doubts as to how it’s affecting colour values across the board.

Yet, (and perhaps this is the mark of a sold-out fanboy) even with all these issues – the OSX colour picker is pretty dang helpful, if only because it is ubiquitous. I don’t trust it like I used to, but there are some plugins and tools that can make it, perhaps, useful again.

From Panic software, there’s the Developer Color Picker for easy copying of values for any number of Apple development tools (including full declarations for HTML or CSS code). There’s also the HEXcolorpicker for simpler HTML and CSS styling. You can even get Kuler integration with Mondrianum, which lets you load and browse colour schemes created with the online Adobe tool.

Mac OS X Hints posted an article recently detailing the simple steps needed to make the system colour picker into a standalone application. Especially useful when picking colours, as you’re able to use the magnifier icon to select any pixel value from, well, anywhere on your screen!

There are plenty of other plugins are out there, let me know if there’s something I should add to the list above.

comment  
bookmark  

Alphanumeric sorting

iaian7 » blog   John Einselen, 8.10.09    

I came across a dark realisation last month – Javascript sorts lexicographically, not alphanumerically. After days of failed attempts and scouring the web for snippets, I finally came up with my own solution.

The first few lines are designed to prep results from an OS X file array (quite useful for developing Dashboard widgets in Dashcode!), but can be easily modified for other situations. The most important part to note is the .split(/(\d+)/) regular expression. This both splits and returns the string at every numeric section, giving us an array of alpha and numeric chunks. Each chunk is then compared; if one is greater or less than the other, the function returns the sorted value. If not, it keeps on checking to the end of (in this case) the file name. Not only does it allow for very specific alphanumeric sorting, but easily customizable results as well. For example, OSX places file names with a longer alphabetical string at the end before those with the same, but shorter, titles. This script accurately mimics the same behaviour.

function sortAlphaNum(a, b) { var x = a.split("/"); var y = b.split("/"); x = x[x.length-1].replace(/\\\s/g," ").split(/(\d+)/); // the split formatting is imperative, everything else can change y = y[y.length-1].replace(/\\\s/g," ").split(/(\d+)/); // the split formatting is imperative, everything else can change for (var i in x) { if (x[i] && !y[i] || isFinite(x[i]) && !isFinite(y[i])) { return -1; } else if (!x[i] && y[i] || !isFinite(y[i]) && isFinite(y[i])) { return 1; } else if (!isFinite(x[i]) && !isFinite(y[i])) { x[i] = x[i].toLowerCase(); y[i] = y[i].toLowerCase(); if (x[i] < y[i]) return -1; if (x[i] > y[i]) return 1; } else { x[i] = parseFloat(x[i]); y[i] = parseFloat(y[i]); if (x[i] < y[i]) return -1; if (x[i] > y[i]) return 1; } } return 0; }

Lastly, we ask Javascript to sort an array using the above function, like so:

array = array.sort(sortAlphaNum);

Let me know if you use this in any projects, I’d love to know! emoticon

comment  
bookmark  

Widget.System Limitations

iaian7 » blog   John Einselen, 26.09.09    

Development of the “Chroma”: dashboard widget has been moving along nicely, but I hit a pretty catastrophic error today; the library file was getting truncated. A lot of changes have been made recently to the formatting of the data, so the most plausible culprit was myself. Surely, somewhere in the reading, modifying, and writing back to the library file via command line interface, I’d screwed something up.

After 4 hours trying innumerable possibilities, hacks, tests, and workarounds (all of them failed), I discovered it wasn’t me at all; my macbook was limiting the outputString from widget.system to 4096 bytes. What truly makes this bizarre is that the Mac Pro at work does not have this same limitation, and they’re both Intel 64bit processors running the same version of OS X. I still don’t know how this is even happening; most online sources claim running widget.system asynchronously removes the limits. Well, I now have plenty of proof that says otherwise!

The good news? I finally worked out a solution. Using the myCommand.onreadoutput function, I was able to add each block of 4096 bytes back into a full length javascript string. Perhaps not the most elegant solution, but should work across all systems.

var libString = ""; var commandString = "cat /directory/file.txt";

function getLibrary(event) { var myCommand = widget.system(commandString, processLibrary); myCommand.onreadoutput = processLibraryConcat; }

function processLibraryConcat(event) { libString = libString+event; }

function processLibrary(event) { // library processing should use libString (full length output) // instead of event.outputString (truncated to 4096 bytes) }

comment  
bookmark  

Dashboard Development

iaian7 » blog   John Einselen, 14.09.09    

Last summer I had been working on a project that required a rather large amount of lipsync animation in a short amount of time, and developed a workflow involving Papagayo, Lightwave endomorphs, and some custom javascripts to translate between the two.

Hobbled somewhat by the lack of system integration and javascript security limitations, I had to copy blocks of phoneme frames in, and copy out blocks of translated keyframe data. The project died down, and I didn’t need to revisit the workflow till early this summer. That’s when I finally gave widget programming another chance, and got into using Dashcode, part of Apple’s free Xcode development suite.

Let me preface by saying — Dashcode has issues. Long standing issues that haven’t been fixed for quite some time, even through several update cycles. Colour values inexplicably shift during editing object properties (degenerating into a completely different value headed inexorably south), objects loose properties, elements take on properties from other elements deleted the week before, etc. But once that’s out of the way (and you learn to watch out for disappearing styles), it’s a pretty cool system. Not only did it open up doors for interfacing with basic system events (dragging and dropping files, could it really be any easier to translate a .moho file?), it opened up full access to the OSX command line as well. All using a familiar javascript basis.

And that’s the back story to how I started developing a small collection of utilities for Mac OS X, and my earlier post introducing iaian7.com/dashboard. It’s mostly stuff I’ve needed at work — first the lipsync conversion utility, then a widget to help calculate screen resolutions and ratios.

Yesterday I finished up the the latest addition to my collection; first public release of Chroma, a basic colour conversion utility and swatch library. I also posted everything to macupdate.com I certainly didn’t expect such a dramatic response, but traffic has increased substantially with scores of downloads for each widget just within the first hour or two. I sure hope I don’t regret this, there simply isn’t time for me to keep taking on more projects like this! Even so, I really hope they prove useful to others, and plan on continued development as I have time. Hope you enjoy!

Prowler — interface for the Prowl push notification platform, letting you send notes instantly to your iPhone or iPod Touch.

Sheets — generate sprite sheets from image sequences or group selections. It requires an ImageMagick command line installation, but I have yet to find a good Photoshop solution for this, and Sheets doesn’t crash as often. Oh yeah, I went there!

Chroma — a colour management and conversion utility. The library is a little basic so far, but I’m hoping to continue developing the feature set to include more features and better management. The data is all there (swatches are given a group title and name when added), but how it looks and performs is yet to be defined. For now, I’m just excited to finally have a good solution for colour swatches and web development.

Feel free to head over to MacUpdate.com to rate and leave comments for Lipsync, Ratio, Prowler, Sheets, or Chroma.

comment  
bookmark  

Syncing via Dropbox

iaian7 » blog   John Einselen, 11.08.09    

I’ve been a long time fan of Dropbox. Not only does it let me sync files across computers, but it does it seamlessly and reliably (I’ve never once had a file corrupted or lost). A free account gives you 2Gb of cloud-synced storage space, with updates pushed to any connected computer running the menu bar app. Paired with Fruux for automatic address book, calendar, and bookmark syncing, you can get a fair bit of Apple’s expensive MobileMe service for free.

However, one problem with using Dropbox as a sync solution is that it doesn’t sync multiple locations – only a single Dropbox folder located, usually, in your user directory. Some applications have catered to this, such as 1Password’s development of the Agile keychain. Most, however, do not.

The answer? Symbolic links. Based on the excellent tutorial from SmileOnMyMac.net, this is a sample terminal command for setting up the Snippet database to sync using Dropbox (all one line):

ln -s ~/Dropbox/Sync/SnippetDB.plist ~/Library/Preferences/SnippetDB.plist

Make sure you copy the actual plist file to your Dropbox/Sync/ folder first, but that should take care of it. I’ll be running through a few tests in the next few days to make sure it operates smoothly. If my past experience with Dropbox holds true, it’ll be completely painless. It should also work with any similar application setup, just update the above directory links with the appropriate file locations (keeping in mind that not all apps play nicely when files are updated while still opened on another computer).

Addendum: Microsoft’s Live Mesh offers 5Gb free storage, and syncs any folder you select. However, it’s exceedingly cumbersome, requires a full dock-based app to be running at all times, and is easily confused when content changes. I’ve never used it for syncing preferences or databases across computers, because it’s nearly unusable just for storing files.

Iaian7, 13.08.09

My elation was short lived when I discovered Snippet does not play well with a db.plist file that is changed outside of the app itself. The Dropbox sync technique holds true, Snippet just can’t take advantage of it.

Iaian7, 27.10.09

Here’s an example command line for syncing YummyFTP bookmarks:

ln -s ~/Dropbox/Sync/YummyFTP ~/Library/Preferences/Yummy\ FTP/Bookmarks

Iaian7, 4.12.09

Command line for switching Lightwave’s plugin folder to Dropbox:

ln -s ~/Dropbox/Sync/LightWave3D ~/Library/Application\ Support/LightWave3D

adijuh.com, 19.01.10

Dropbox is designed to simply sync files and folders, but you can use it to trigger other tasks by simply adding files

comment  
bookmark