Entries from January 1, 2012 - January 31, 2012

Monday
Jan302012

Google’s Roboto Typeface with All Styles Now Available

Roboto is now officially available on Google’s Android Design website packaged in one big ZIP file. Previously many of us had access to only the regular and bold styles, but now even beautiful the light and thin styles have been released.

Unpacking the ZIP file reveals all the TTFs that are available:

image

 

And included in the ZIP file is Roboto Specimen Book in PDF form. A few screen captures of that book are below.

 

image

image

image

image

Sunday
Jan292012

Easy Batch Image Conversion with XnConvert

For many years now, when I needed to batch convert images – for example to convert file formats or resize images – I've been using Microsoft Office Picture Manager. That tool still works great but, of course, it is only available by purchasing Microsoft Office and it hasn't apparently been updated in quite some time.

So, on the hunt for something free and modern, I discovered XnConvert.

image

 

Let's go over the basics:

  • Free
  • Cross-platform (Windows, Mac, Linux)
  • Simple UI that is optimized for the task
  • No ads or adware
  • Supports many file formats

 

My experience with it has been excellent. I now have a replacement for Microsoft Office Picture Manager. I highly recommend you try it out the next time you need to convert images.

 

Screenshots

 

Input Tab

image

 

Actions Tab

image

image

 

image

image

 

image

Output Options

image

image

About Tab

image

Friday
Jan272012

4 Fun WebGL Demos

What people have created with WebGL continues to impress me. Here are 5 of the ones that caught my eye recently. The Water Simulation is my favorite. It’s beautiful, very smooth, and you interact with it simulation.

 

WebGL Water Simulation

http://www.chromeexperiments.com/detail/webgl-water-simulation/

snap332_result

snap334_result

snap335_result

 

 

WebGL Cloth Physics

http://petros.kamibu.com/files/cloth/

snap326_result

snap328_result

 

 

WebGL NyanCat (built with three.js)

https://dl.dropbox.com/u/6213850/WebGL/nyanCat/nyan.html

snap346_result

snap348_result

 

 

WebGL Meincraft (notice the spelling)

http://dev.pocoo.org/~mitsuhiko/webglmc/

snap350_result

snap351_result

Wednesday
Jan252012

Microsoft Chart Controls: Using DataBindCrossTable Method for Dynamic Series

This came up at work today, so I thought I’d share. We were using the Microsoft Chart Controls and didn’t know how handle the case where the number of series in the was unknown – in other words the number of series are defined by the data fed to the chart and which are not known at development time.

The DataBindCrossTable method seemed like the right place to start, but we couldn’t find any easy sample. So, after a few minutes I came up with this simple set of code to illustrate its usage.

// Setup the data
var dt = new System.Data.DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("BugCount", typeof(int));
dt.Columns.Add("Day", typeof(int));
dt.Rows.Add("Kim", 10, 0);
dt.Rows.Add("Kim", 12, 1);
dt.Rows.Add("Kim", 18, 2);
dt.Rows.Add("Kim", 5, 3);
dt.Rows.Add("Philby", 18, 0);
dt.Rows.Add("Philby", 25, 1);
dt.Rows.Add("Philby", 9, 2);
dt.Rows.Add("Philby", 32, 3);
// Build the chart
this.chart1.Series.Clear();
this.chart1.DataBindCrossTable(dt.Rows, "Name", "Day", "BugCount", "");

This code produces the following chart.

 

The process is simple. Create a datatable. One column will identify the series. One column will Identify the values on the X axis. And one column will be the value to graph. Then you are ready to call DataBindCrossTable. One tricky thing is to realize you have to pass in the Rows object from the datatable, and not the datatable itself.

Friday
Jan202012

My Alternative to Gantt charts for Project Schedules

I'll make no secret of it: I never have liked Gantt charts. In 15+ years at being a program manager Microsoft I have made exactly one– and that was just to play around with Microsoft Project. Not one team I've been on in Microsoft used them.  I do confess they occasionally appear in the hallways at Microsoft – but I've never caught a human looking at one.

The Gantt chart is a rational way to describe a schedule. These diagrams seem like something perfectly understandable to their authors. But I don't find them an effective way to communicate the project schedule with the rest of the team.

Gantt Chart Examples

And frankly, they just don't look that nice. Any my primary criticism: too much visual noise. Here are some examples from WIkimedia Commons.

image

By Vheilman (Own work) [CC-BY-SA-3.0 (www.creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons

 

image

(click for PDF)

By TijlCrauwels (Own work) [CC0 (creativecommons.org/publicdomain/zero/1.0/deed.en)], via Wikimedia Commons

 

An Alternative from Tufte

A discussion on Edward Tufte's website on this topic provided sense of what something cleaner might look like. Definitely easier for me to deal with.

image

 

My Attempt

My attempt at a clean visualization is below. It's a sprint-based schedule based on a fictional product called 'VixiDraw". (Those of you who remember I worked on the very non-fictional Microsoft PhotoDraw will have a sense about what the features in VixiDraw are about)

 

image

You can download the http://1drv.ms/1ct1Frs

 

 

Sprints are rendered as solid boxes with their exact begin and end dates. The current sprint is highlight in red.

image

 

Simple underlining of headers, indicates key segments of the project

image

 

Physically nesting the items identifies the hierarchy of segments. Below you see that VixiDraw v2 has several sub item items

image

 

We wouldn't want to see an endless number of underlined items. This is avoided by making a decision at some point to use simply typography to indicate structure. You can see this in the gray boxes. They contain simply bolded text followed by a list of items. I avoided using bullets in the lists to make it look cleaner.

image

 

PARTING THOUGHTS AND NOTES

  • I don't mean to imply this visualization could replace a Gantt chart – only that it might be more effective in communicating a schedule.
  • Using a sprint-based calendar simplifies the visualization because all workitems are aligned on begin and end dates. Also, the widths of all items are in consistent units.
  • I don't think these should be too hard to programmatically render.
  • The chart I made was build using simple rectangles in Visio 2010. Something similar could also be created in Excel.