It's not worth doing unless it's worth overdoing

Category: Uncategorized Page 1 of 9

YouTube Shorts Lip Sync Animation

This started as a doodle that I ran across in one of my old notebooks and I thought it would make a fun animation. I used the Voice Memo app on my phone to record the audio track (badly). Then, DragonFrame to help me create a dope sheet and shoot a pencil test of the animation. Based on the initial pencil test, I tweaked the animation until I was happy with it. Next, I re-drew all of the frames with a black Prismacolor pencil and shot the whole thing in DragonFrame again…

I decided to release it as a YouTube short (as an experiment). YouTube pushed it out to 100 people per hour for the first six hours. Apparently, it did not get the sort of engagement that the algorithm craves, because after that, YouTube basically stopped serving it up. Now I only get a handful of views each day on it. YouTube appears to be looking for Shorts that grab an audience and drive some sort of engagement within the first few hours. Aside from internet fail compilations, I think that Shorts are probably best for creators that have already cultivated an audience with their video content. Full videos are also more likely to have a “long tail” and get views long after their initial release.

Regardless (or is it irregardless?) of my failed YouTube experiment, I had a lot of fun creating this and I hope you enjoy it.

Fix for Cordova error: Android target: not installed cmd: Command failed with exit code 1

I was trying to set up Cordova on my windows laptop this weekend. I followed all of the setup steps and ran

cordova requirements

but got this error:

Android target: not installed
avdmanager: Command failed with exit code 1 Error output: Exception in thread “main” java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156) at com.android.repository.api.SchemaModule.(SchemaModule.java:75) at com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81) at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213) at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)

A quick google search turned up lots of ideas for fixing the issue, including:

  • Downgrading to JDK 8 (Don’t do this – it’s outdated advice)
  • setting the environment and PATH variables (I did that already)
  • reinstall the JDK (I tried this – no luck)
  • create an AVD (This needs to be done, but still didn’t solve my issue)

Here’s a link to a helpful Stack Overflow thread that goes through some of these options.

I work on a Macbook for my job and I’m not too familiar with Windows dev tools setup. I spent hours trying to sort this out. Then I realized that Windows has TWO places to set environment variables: One for USER variables and one for SYSTEM variables:

So, I started going through the system variables. When I opened up the system Path variable, I saw my problem:

The JDK path was declared multiple times in the system variables. The image above is just an example – I actually had FOUR different JDK paths declared in my system path! Most of these paths pointed to non-existent JDKs. I removed all of the bad JDK paths, leaving only the path to the JDK I had just installed. Presto! My error went away!

Cordova requirements now threw a new error about not being able find ANDROID_SDK_ROOT, but that’s an easy fix. Just add a new User Environment variable called ANDROID_SDK_ROOT and give it the same value that you should already have for ANDROID_HOME.

As always, I hope that this saves you a little time and you won’t spend hours tracking down this issue like I did.

Christmas in March

I posted this video to YouTube back in December last year and we added a QR code to our Christmas cards that took people to the video. It was a fun project to create the puppets and then shoot a quick video with them. Enjoy!

Anniversary Stop-motion Animation(s)

My wife and I celebrated our 14th wedding anniversary this year. I wanted to create a short stop-motion video for her. Here is what I came up with…

The first attempt is a quick and dirty Lego animation. It’s obviously pretty rough, but keep in mind that we’re all quarantining in the house together ALL THE TIME, so I can’t get any alone time to work on this unless I stay up and do it in the middle of the night. This was shot on an old iPhone6, using EpocCam to connect it via Bluetooth to Stop Motion Studio Pro running on a Surface Pro 4. I used EpocCam because Stop Motion Studio Pro’s built-in Bluetooth hookup just didn’t really work. The EpocCam software didn’t work very well either: the bluetooth dropped out a lot and it was hard to reconnect. I still like the walk cycles 😀


This next attempt was also shot using the old iPhone6. This time, I connected it via USB cable with iVCam. This worked a little better – once the the connection was established, it didn’t get dropped while shooting. But… getting Stop Motion Studio to recognize the iVCam was problematic. Again, I did this in one marathon shoot in the middle of the night, but if I had turned everything off and come back the next day to start shooting again, getting the iPhone reconnected would have been a real problem. I didn’t create enough in-betweens when moving the blocks, but I still like this one


After all of my technology issues creating these videos, I bought some real animation software: DragonFrame and a Canon EOS Rebel Digital SLR for future animation work. It’s been really great to NOT spend hours fighting with the camera setup and spend that time animating instead. I hope to post some videos shot with the new setup soon!

Page 1 of 9

Powered by WordPress & Theme by Anders Norén