Saturday, November 16, 2013

Crawl, resume.

I just spent the morning learning that some writings exist that may help me to formalize reflections on my experiences as a software engineer at a small company. From what I have read so far, it appears as though I may agree with the writings of Fred Brooks, who claims to have written the Bible of software engineering.

I don't remember how I arrived at this place, reading up on Fred Brooks. I know I started by signing up at TopCoder, but went looking for alternative sites to practice solving CS problems after feeling confused by their website. The search for alternatives produced:

The latter three are for savvy high schoolers, but may still provide a nice practice space for evolving professionals like myself. All of the websites have an outdated look, and TopCoder is actually the most attractive. TopCoder also offers some kind of university which looks interesting as I am always looking for another e-learning website.

My main motivation for practicing problem solving on TopCoder is because it was recommended by representatives of an employer I am interested in. Working my way through lectures about Algorithms and Data Structures on Coursera from Princeton (1, 2) and Stanford (1, 2) may not be enough to demonstrate expertise in said area during a technical phone interview, but it's a starting point. I suspect that one of the Q/A forums that recommended alternative sites must have mentioned No Silver Bullet and reading an article about it must have started my web crawl.

I finally ended up at the professor's site and clicked a link about extra notes for another of his writings. I was intrigued by a PDF file that showed his hand-written notes on what appears to be a remodel of his home kitchen. This document further convinced me that I may share similar thought processes because I too have a few design documents for home improvement projects for our rental house.

One of a few things I liked about the summaries of Brooks' writings is that all "programmers" may not be created equal. There are levels of creativity involved with software design and the skill can also be considered an art form. I have debated the origins of creativity with my wife, an art teacher. My point has been that a level of mastery is required to be perceived as creative, but I do agree that does not explain why equally skilled painters produce different images that invoke different feelings in those appreciating the works.

Better is in the eye of the beholder, but there is no debate that different developers take you down different paths. Brooks may argue that these differences are grounds for compensation differences, stating that different developers produce orders of magnitude in differences of costs for the entire produce life cycle. An argument that helps me formalize what I am doing more than my coworkers appeals greatly to me. I would much rather be able to make a down-payment on a house and start building equity instead of throwing away cash on a rental home. Maybe there is a book somewhere on convincing my employer to give me a huge raise. Crawl, resume.

Wednesday, July 17, 2013

Ghetto Hiero

Project Ghetto Hiero

The workflow for editing and color work in Blender is not as streamlined as other tools, like Nuke or Hiero from The Foundry (please name your favor tools here). The workflow in Blender pushes professionals and indy filmmakers away. Here are some ideas to improve Blender that I would like to add when I have a little spare time. I will improve this list as time passes and my experience with editing in Blender grows.

Pictures will follow...
  1. Revisit UI for Node editing.
    1. Remove the use of the Backdrop.
      1. Some people have voiced an appreciation for this, but it seems counter productive to have your workspace occlude your results.
    2. Use dedicated image editor as a space for editing selected Node. You need a mouse for many tasks. This is the space.
      1. Specify a mask.
      2. Specify a tracking point and visualize track frames.
      3. Specify pan,crop,scale transformations.
    3. Use dedicated property panel for editing non-image values in Node.
      1. Some nodes need input, like a file. This property can be specified on a property panel.
      2. Other node properties might include checkboxes or other options. Put them in a property panel instead of in a mini-widget in a giant web of other nodes.
    4. Node editor should simply show the graph of all nodes, not a complex editor.
      1. This graph gets pretty complicated, so there is little room for seeing anything else.
      2. You just click on the node of interest to see its settings/properties in the property panel.
  2. Support video clip interchange format
    1. As discussed with Troy S., support for even a new format, call it BlenderClipXML, would be a good start toward making Blender more relevant for video work. This includes support export and import and the VSE and composite graphs should be created upon import.
    2. Support for other formats will continue to show holes in the video workflow. Troy provided a list of formats.
  3. Support assignment of comp graphs to VSE strips.
    1. credit: JP Bouza

Another request is to support more interaction between the VSE and the composite nodes. The VSE can currently use the result of comp nodes, but comp nodes cannot use the result of the VSE. This feature request seems reasonable at first. I'm sure some great effects can be achieved with this (feedback loop control!). However, I think this feature request might be rooted in the fact that we don't have a great definition of what are the responsibilities of the VSE and the compositor. In my view, I think all image effects should be performed by the compositor. The VSE should only be responsible for the timing of these effects. If you want a blend of 2 sources at some frames, the comp node editor is the appropriate place to setup this effect. Why do people want the comp editor to use the results of the VSE? Probably because Blender makes them think they should be performing comp-type operations using the 'effects' options the VSE offers. Let's remove those effects, and help everyone be more efficient by providing the same effects in the comp node editor (already there actually). At some point, you will definitely have a comp node graph appropriate for one shot, but you don't want to apply that effect to all shots. The VSE should be able to handle this situation. I'm not sure it does not handle it already. I'll need to dig a little to know for sure. This is the motivation for #3, above.