A few of you asked about how I got those statistics for my previous post about Blender SVN.

For the inquiring minds, I got the SVN log with the following command

svn log -r 25000:0 --xml https://svn.blender.org/svnroot/bf-blender/branches >> log.xml
svn log -r 25000:0 --xml https://svn.blender.org/svnroot/bf-blender/trunk >> log.xml

These two SVN operation fetches the SVN logs for both the branches and the trunk of Blender and combine them into one 8 megabyte XML file.  Please do not do this often as I imagine querying all the commit logs must put a heavy strain on the Blender SVN server.

Parsing the XML for the author commit frequency is done with the following python script:

import xml.sax

authorList= {}

# create document handler
class SVNXMLHandler(xml.sax.handler.ContentHandler):
	def __init__(self):
		pass

	def startElement(self, name, attrs):
		self.hasAuthor = 0
		self.hasEntry = 0
		if name == "logentry":
			self.hasEntry = 1
			#print attrs.get('revision', ""),
		elif name == "author":
			self.hasAuthor = 1

	def characters(self, data):
		if self.hasAuthor:
			#print data
			try:
				authorList[data] += 1
			except:
				authorList[data] = 1

	def endElement(self, name):
		if name == "author": self.hasAuthor = 0
		if name == "logentry": self.hasEntry = 0

# load and parse log
f = open('log.xml', 'r')
xml.sax.parseString(f.read(), SVNXMLHandler())

# print to console in comma delimited format
for i in authorList:
	print i,",",authorList[i]

Run the above python script like so:

python logParser.py >> crunched.csv

After a few seconds, a CSV file should be created containing all the data you need, ready to be graphed in Microsoft Office.  Yes I used Excel for the graph…

Byron Kindig once again pulled it off!  Showing off more than 70 piece of artwork (mostly created with Blender) at the Kingsport Renaissance Center, on display until December 22.  Kudos for putting this wonderful show together, I would love to see this, too bad I can’t be there in person, but at least I am proud to say some of my work are on display.

Edit:  The event was apparently very successful.  Photos and proceedings here: byronsdesigns.com

Part 2: Skinned Interface

Hey let’s talk about the proverbial wheel.  Or more precisely the invention of it.  Or to be even more specific: why you should NOT reinvent the wheel.  (Unless you are Audi, in which case it’s okay because they are awesome!)

I am no programmer, but the last time I looked, one didn’t have to write their own UI elements for a GUI application, you can leave that to the OS.  So GUI programming is as easy as fire up your favorite IDE, drag a few controls to a form, and hit compile!  Easy right?  Not to Nero:

Nero StartSmart

Or Gigabyte

EasyTune 6

Nor Asus

SmartDoctor

Why some software companies keeps on insisting on spending money and time to create their own skinned UI is baffling to me.  This creates nothing but inconsistency for the user, who expects every window to look like a native window.  Not some shiny and metallic spaceship control panel Asus!

There are other problems associated with non-native UIs: for users that rely on accessibility features, these custom skins often make screen-readers do weird things.

If you truly want your application to have a unique look, by all means, implement a skinnable interface ON TOP of the regular native interface, but don’t make it the only interface.

The only time when I think it would be okay to use non-OS-native-UI is if the application is cross-platform, in this case having a consistent UI across all the OS might be a good thing.  So let’s be thankful for Apple iTunes, Adobe Lightroom, and Blender for using non-native UI control elements, I firmly believe these 3 represents the best in User interface design.

Lately in my attempt to juggle many tasks and getting things done as fast as possible, I have become increasingly frustrated at some of the current UI implementations, some are pointless, some are ugly, some are a pain to use.  And often it’s the combination of all 3.  For once, I am not talking about Blender.  This is a general rant on the various softwares I encounter every day.

Part 1: The diminishing vertical space

How much time do you spend watching movies on the computer screen?  And how much time do you spend browsing the net?  If your answer is in favor of the web browsing, then help me understand why is widescreen still a popular choice for laptops and netbooks, where the focus is suppose to be work, and not play?

And if we agree that widescreen is a bad idea for working with text (reading webs and writing emails, etc), then why do applications still like to hog up vertical screen space so much?  And no, a 1280×800 screen can NOT fit two pages of point 11 text side-by-side, so don’t even try that argument.

IE8

On a 13 inch laptop, the ever popular resolution seems to be 1280×800.  If you are browsing with IE8 running on Win 7, (Firefox is not any better when it comes to this),  out of the 800 vertical pixels, 185 pixels are taken up by the UI elements,  shrinking the viewable content to a diminutive 615 pixel!  For a netbook it’s worse, browsing without fullscreen is almost like looking out a slit.  Sure you can scroll up and down to view the content.  But why make the user work for it when the application can simply condense the UI element?

Google Chrome seems to have the right idea about this: out of the box uses a reasonable 64 pixel of vertical space, leaving the rest for CONTENT.   A few pixels might not seems like a big deal, but when you are working on a small screen, every pixel needs to do something useful!

Chrome

Man I am bitter today…