Stupeflix is perhaps aptly named, but nonetheless a cool tool for putting together a quick video. I could see using this for a graduation slide show or other celebratory event that yearns for a retrospective, but when I’m not up for losing myself in AfterEffects for several days to make it happen.

The sign-up is very easy and I’m quickly brought to a screen which is pre-populated with images and a soundtrack. I created a video of this, just to get the hang of it.

Stupeflix Editor - Video creation made easy

It’s a good thing they offered that, since once I cleared the screen to start my own project. I had a “deer in the headlights” moment while I stared at a mostly blank screen and pondered what to do next. (A few big buttons in the middle of the screen at this point would be a vast improvement to keeping me “in the flow.”) Admittedly, it only took me a few seconds to spot the “Add Images” button at the bottom on the screen.

I found it odd that you can’t add a soundtrack till after you add images (there’s a menu under the subtle [+] in the upper-right of the image below). My first instinct was to start with a soundtrack. Nevertheless, I could upload a bunch of images at one and they’ve implemented the most fabulous upload feedback I’ve seen yet:

Stupeflix Editor - Video creation made easy-1

I was screwing around with the UI and seeing what would happen if I dragged an image from the desktop… the browser went to another web page and ACK! I just lost my whole project. These guys are in serious need of a “save” button. Ugh.

Nevertheless, I persisted in my quest for a quick video fix. I re-imported the images and put together a video in about 20 minutes, then spent 15 minutes looking for a sound track. (Thank you, Internet Archive and Liquid Stranger. The music is “Quota Tapeloader.”)

You can check out my final video and the xml that describes it. The effect are semi-randomly generated (with some effects depending on the number of photos in a group). I could control them, if I were motivated, by editing the xml by hand. It’s a neat way to give your early adopters a ton of control while your UI catches up.

Overall, this is really neat. Kudos to the Stupeflix team!

I’ve spent a lot of years creating developer tools. Even for the software that did not target developers, there were always APIs for other vendors to create extensions or to use internally between different modules.  One the interview questions I like is “have you ever designed an API?” followed by “what do you (would you) consider in designing an API?”  There’s typically a trade-off between flexibility and getting the job done concisely and with a great engineer this usually turns into an interesting conversation.

I’ve been using Rails for a while now and one of the things that seems awesome at first is the breathtaking speed at which you can create a basic web application with full XML and JSON APIs.  For someone who doesn’t love picking which XML parser to use and digging through a DOM just to hook the client and server together, this is a beautiful thing.  However, I’ve noted a peculiar absence in conventions for API design, and a void in tools for testing and documentation.  (I am relatively new to Rails, so if I’ve missed some obvious resources, please let me know.)

Rails seems to assume that you want to expose your database object model transparently through your API.  In my experience, this is rarely what you want to do. In fact, it is a crazy way to live.  It kind of assumes that you have just one engineer that writes the client code and the server code and updates them both all the time.  This makes complete sense for HTML which is closely integrated with the Rails model and controller code, but not when you have multiple code bases in various languages which are using the web services.

Instead, I typically think about the use cases that the client software needs and craft an API around that.  Usually this is a small subset of the internal objects and methods.  Also, in writing client-server software (which is what you are doing with Ajax, Flash or a mobile app), you want to keep the number of network requests small.  For common use cases, it is a good idea to bundle calls together.  There are a lot of approaches to this, and I’m currently looking at the Rails 2.3 nested model feature, but I think that solves just one common use case.

The other challenge with developing APIs is that over time your software changes… maybe your first version was wildly successful and now you have thousands (or millions) of people who have installed your code on their phone (or desktop).  Now when you refactor your core models to improve performance and don’t change any behavior, you certainly don’t want to break everyone’s app or make them download new software. Even if you add features, you probably want the old versions of the app to keep working while you encourage people to download your new, better thing.  There are a lot of well-used approaches for fixing this too.

I’d hate to see CORBA added to Rails, but this seems like an area where conventions (and maybe a little shared code) would be valuable.

It has been two weeks since I posted about the pr0n talk and at times I felt pretty tired of all the bickering; however, the quiet positive voices continued saying “stay positive,” “stand up and be counted” and “how about a community where women are valued for their ability to program and not by the thickness of their skin?”  Even DHH wonders how to get more women involved.

Some folks started talking about what could be done on the positive side.  This isn’t something the ever-so-logical crowd is doing by the numbers.  We aren’t focused on quantifying a result. If everyone does what they can, then it will make a difference. There’s no corporate leadership needed to consult or lobby.  The power of open source software is that anyone can decide to be a leader and create the community we want to be a part of.  Open source is not only about creating creating the core software.  It is about all of the stuff that goes with it: documentation, sample code, tools and plugins and the people who make everything happen.  How can we pull together and magnify efforts that the majority of folks are already doing?  Things like…

  • When we ran into a question using Cucumber and my colleague posted on the forum in the afternoon. By the time we started work the next day, a volunteer had answered the question and updated the docs!
  • In learning Ruby and Rails, I posted what I thought was a language question to the Ruby forum. It turned out to be a specific Rails unit testing question, but people were nice and gave detailed responses on the Ruby language syntax and one guy even researched the Rails question and answered it.  (Notably there were no snide comments that I posted on the wrong forum, just people who took the time to help me.)

The community really is great, but we want it to include a more diverse set of people, reflective of society as a whole.  We brainstormed some ideas and decided on what projects to start up based on there being someone willing to step up and take the lead.  Mike Gunderloy whipped up a webpage, with a logo by Bruce Williams. I’m sure that there are other folks with ideas or already on-going projects on how to create an inclusive and friendly Ruby on Rails community.    Here is a list of projects so far:

  • Workshops: Sarah Mei and I will be publishing our workshop materials and collecting links to resources for anyone who wants to start their own.  Have you taught Ruby on Rails and want to share tips or lesson plans? Do you want to help with the workshop in SF?  Have one where you live?
  • Teaching Ruby to Kids: I’m looking into teaching Ruby in middle school.  I’ll collect and post resources.  Send links, share your success (or failure) stories on the list or help with the website.
  • Current Blog Information Locator: Do you remember when you learned to look at the date on a blog post first and back track in your mind to the corresponding version of Rails to imagine if the blog post is relevant to your project? Elad Meidar has some ideas on a fix…. do you?
  • Online Mentoring Application: there are some many great folk in the community willing to help.  This app could match up beginners with experts.  Even an expert at one thing may be a beginner at another.
  • Courseware for Newcomers to Rails: Dana Jones and others are working on an outline.  If you have ideas about teaching beginners or have some writing skills, consider joinin the crew.
  • Code Reviews for Students: join Mike Gunerloy and others to help students learn best practtices.
  • Ruby Challenge: Marianna Kenesy has some neat ideas abour programming puzzles that might draw people in and help sharpen their skills.
  • Pro Bono Site Work for Non-Profits: Mike Breen is taking the lead to organize people into teams who will volunter to build applications for non-profits.

Join one of the intial projects or suggest your own project.  There’s a public mailing list and folks are working on a web site. What do you think? What are you doing or do you want to do to be a force of positive change?