Monday, May 16, 2011

Creating movies from still images

I've been trying several ways to create movies from a set of still images. I find commercial packages to be too expensive for this simple task. Blender does a good job, but I prefer the simplicity (and script-ability) of a command-line tool. At first I tried MEncoder, but I could never find options that would produce a decent result. There were always too many compression artifacts.

What I've settled on is ffmpeg. I use the following command:

ffmpeg -r 30 -b 1800kb -i image%d.jpg movie.avi

The %d is the number of the picture. This seems to produce a decent balance between file size and output quality.

Wednesday, October 27, 2010

Creating a brick wall with Blender 2.54

I have been wanting to create a brick wall with Blender. I found this tutorial to be very helpful. It works well if the camera is not very close to the wall. It is fast and easy to put together.

It is also possible to put together a brick wall with an array modifier. But what really inspired me was the example script for creating castle walls available here. That script did not work for the current Blender 2.54 Beta version. So I thought I would work on creating my own script.

Here is a development version of my script. I thought I would post it here so that others looking for Blender 2.54 Beta scripting examples could find it

 import bpy 
 
 row_count = 8        # Number of rows
 bricks_per_row = 15  # Number of bricks in each row
 cube_x = .25         # Length of each brick
 cube_y = .25         # Width of wall
 cube_z = .125        # Height of each brick
 row_gap = .01        # Gap between each row
 brick_gap = .01      # Gap between each brick
 
 # Calculated values
 offset_amount = cube_x/2    # Staggers bricks
 rescaling_factor_x=cube_x/2 # Used to size the brick
 rescaling_factor_y=cube_y/2
 rescaling_factor_z=cube_z/2
 
 # Loop for each row
 for row in range(row_count):
     # Calculate if we stagger this row
     offset = row % 2 * offset_amount
     # Loop for each brick
     for index in range(bricks_per_row):
         # Add the brick
         bpy.ops.mesh.primitive_cube_add(
             location=(index*(cube_x+brick_gap)+offset, 
             0, 
             row *(cube_z + row_gap)))
         # Resize the brick
         bpy.ops.transform.resize(
             value=(rescaling_factor_x,
             rescaling_factor_y,
             rescaling_factor_z))
         # Bevel the brick
         bpy.ops.object.modifier_add(type='BEVEL')

Thursday, September 9, 2010

Agile Programming

A fellow U of Idaho alumni hit 'reply-all' to recent survey request sent by Idaho's computer science department. It was a shame that Idaho sent out the e-mail allowing this, and also that a graduate would make use of this fact. What really got me going was the e-mail:

With all due respect, this "survey" feels like a complete joke and hardly gives me any confidence in the  U of I C.S. program.  How doyou expect a couple questions like that to really affect anything?

The software world is going Agile and Lean.  How much of that are you teaching to students yet?  If you really want to be a leading edge CS department, you've got to be teaching people how to write good solid clean code.  Is test driven development anywhere in the curriculum?
When I graduated, I was sent into the world woefully under-prepared by the university.  I pretty much taught myself how to really write code and on my senior project, I was the only person on the team that could really even write any code - I ended up writing all the code for the rest of the team - and they all got the same grade for the project that they could not even write the code for.

Since then, I've hired a lot of software developers and run my own company for 15 years.  Some of the best software developers I've hired had *NO* college education.  I'm not the only one that's had that experience.  It's making us software professionals question, more and
more, the value of a college degree in this profession.  Especially in this economy.  I cannot in good conscious recommend to a talented youth that they spend 4 yrs at the U of I before they enter the profession.  In fact, spending 4 years at the university might just set you back 4 or more years modern development paradigms.

The U of I is in a position to make a difference, if you *REALLY* want to make a difference and not just appease the same old system of tenure and outdated instructors.  The question is *WILL* you?

I am part of a growing, international community of software professionals that really cares about our craft of software development.  We teach others, put on conferences and make it work in real enterprise environments.  I currently live in NYC where I'm more than busy staying at the top of my game.  Myself and my colleagues really do care about the state of the software industry.  I have yet to run into a single U of I person in this ever-growing Agile software
movement.  Why is that?

I'd be interested to help you all in an advisory role if you really want to change.  I'd even be interested in moving back to Idaho if I though I could make a difference.  I graduated in 1986 and I'm at the forefront of the Agile/Lean software movement.  If you are just going to keep on doing the same old government funded, barely sufficient program that I experienced 20 years ago, I guess I'll keep on dismissing the message (and I'm not the only alumni, I'm sure).

I hate to feed the trolls, but I sent this back to him.

I've found three categories for developers:

1.) Developers that don't try to expand their knowledge.
2.) Developers that read books on Agile, Scrumm, Rational, Crystal, XP, 6-Sigma, Test driven development, etc. and think it is the bee's knees.
3.) Developers that have passed through enough versions of stage 2 and seen similar stages in business, marketing, engineering, etc. that they realize there is a difference between buzz-word fueled fads and the common fundamental techniques they all seem to wrap up. The key
question: Are the fundamentals taught at Idaho?

Had you listed the fundamentals that Idaho was skipping, I may have agreed with you. Instead, I got a few buzz-words.

I always thought this was a good essay:
Big Mac cs. The Naked Chef

I recently found the following article on reddit from someone who is similarly tired of hearing Agile all the time:

Agile Ruined My Life

Agile, along with these other fads, does have fundamentally important concepts to be taught. But please drop the buzz-words that go with it. Concentrate on the techniques. And realize that not every set of pre-packaged and marketed management techniques will work for every project.

Or maybe I should give up my whining and get rich by creating my own buzz-word, then repackage all those same techniques and pretend they are new. It is just so "formula."

Monday, February 22, 2010

Computer Science a Top-Paying Undergraduate Degree

According to NACE, Computer Science ranks number four in top paying undergraduate degrees. The top three are engineering degrees. Google "top jobs" and see how often computer science jobs are in the top.

Given this, and the fact that technology is critical to almost any popular job and entertainment option, why aren't more young people interested in computer science? Why are people waiting until they enter the workplace before realizing how important technology is?

Tuesday, November 17, 2009

Lazy programmers

I recently accessed the on-line customer service for the Des Moines Register. Part of that process has you register your account number. Here's the message I got on the field to enter your account number:
(You can find your account number on your invoice or call customer service at 1-877-424-0225. You must drop all beginning zeros and include the 'DM'. For example DM00012345 becomes DM12345.)
Exactly how difficult would it be to write an algorithm that would add the DM if I forgot? Or drop the leading zeros?

The DM Register is hardly alone. Many sites ask you to enter your credit card number, but without spaces. Stripping spaces takes only 1 to 2 lines of code, depending on the language you are using. If I want to enter spaces with my credit card number, don't let that stand in the way of my spending money at your web site.

Sunday, August 30, 2009

HP Counterfeit Ink

Just when I thought my HP Photosmart C7280 Printer could not be any more annoying, it has picked up a new "feature."

What were a few of the original annoying features?
  • Continuously running 6 different processes.
  • Throwing up a dialog box to every computer in the house when it is low on ink, out of paper, or even if it has been turned on.
  • Originally it had 'critical updates' 2-3 times a week it needed to download. I figured out how to turn that off thankfully.
  • 1/2 the computers in the house cause a blank sheet to print between each actual page we want printed.
The 'new' feature: accusing me of using counterfeit ink. It is already a waste when studies have shown printers to report cartridges empty long before they actually are. But now I can't use my nearly full cartridge after only a month, because printer is suddenly convinced it is not a 'real' HP cartridge. At first it kept giving me nasty messages about voiding my warranty. Now it just refuses to use it at all.

Bad Hewlett-Packard.