Tuesday, December 30, 2008

Football Data Gathering

The Pittsburgh Post-Gazette posted an article on inclusion of sensors in footballs and gloves being done by the students at Carnegie Mellon University. The project is to input sensors & accelerometers in football gears so that data can be derived and transmitted wirelessly, so that further analysis can be made. Obviously, the first implication would the refereeing changes (much like when the NFL decided to use replays as a final resource to solve disputes), but that does not interest us as much as the analyzing possibilities both during and post games. Imagine how many visualizations could be done using the field as a map, how many widgets online we could have to measure and point the grip on the catch. We could compare grip versus strength in the pass to figure out who's to blame for the incomplete pass. We could have a graphic of how much tired the receivers, runners, QB's were by measuring the sprints, throws and catches...
Well, the possibilities are infinite and creativity will definitely change the way we see the game.
Let's hope for the best!

Seen on Flowing Data

PS: Oh, yeah... And watch out for referees being out of jobs and super athletes on the way... JK!

Delicious Del.iciou.us

Thursday, December 25, 2008

Have yourself a merry little Christmas...



Happy hollydays everyone!
For this special ocasion, I've separated one of the most intuitive, yet, completelly original visualizations I've seen in the past few months, and here is the kick: IT WAS MADE BY FELLOW BRAZILIANS!
Angela Detonico and Rafael Lain, both brazilian, made this simple and wonderful "The World, justified" visualization. As a form of art, many interpretations, both philosophical, political and geographical can be made, yet since this is a very clever puzzle, I'll leave the thoughs run freely in your mind and limit my comments to:
Centralized Earth reminds me a little of Africa or a reflected South America. Given that thous are the most exploited continents of history, it's a bit strange that the concentrated land would that this specific form.
Wonderful job guys, and since we're all Brazilians here: Parabéns galera! Trabalho sensacional e palmas!!!

Seen on Strange Maps - Original: detanicolain.com

Delicious Del.iciou.us

Thursday, December 18, 2008

Appretiation

Recently I was given copies of a handful of books by a fellow colleague, Rafael.
So I'd like to take the opportunity and thank Rafael for the gifts and point out one of the best items in the collection: C# 3.0 Design Patterns published by O'Reilly.
Simply one of the greatest technical books I've come to get in touch with in the past couple of years.
Definitely a must read!

I'll be posting about a few of the chapters and reviewing the book in the next few days/weeks.

Delicious Del.iciou.us

Thursday, December 11, 2008

WPF Animation tools

Despite of the over analyzed possibilities from animating components on XAML, most of which are virtually impossible to create without Microsoft Expression Blend ($499 USD), there is the possibility of the storyboards (Example is in C#).

What you can do is create a Storyboard object (System.Windows.Media.Animation) and add some animations that use key frames, DoubleAnimationUsingKeyFrames, which creates an interpolation of double values to a target's property. Here is a simple example:


DoubleAnimationUsingKeyFrames dauk = new DoubleAnimationUsingKeyFrames();
dauk.BeginTime = new TimeSpan(0);
dauk.SetValue(Storyboard.TargetNameProperty, "myObject");
dauk.SetValue(Storyboard.TargetPropertyProperty, new PropertyPath("myProperty"));


What we did here was establish that my animation is going to start on time mark 0, will occur on the targeted object (myObject in this case) and will iterate the values of the targeted property (myObject.myProperty in this case).

Next step wold be to add a spline to our animation in order to actually define the values to iterate and the time it should take to do so. Here it goes:


SplineDoubleKeyFrame sdkf = new SplineDoubleKeyFrame();
sdkf.KeyTime = TimeSpan.FromSeconds(.2);
sdkf.Value = 250;
dauk.KeyFrames.Add(sdkf);


This spline sets the target value to 250 and interpolates the intermediate values for .2 seconds. Supposing that myObject is of type Image and myProperty defines the image width. What this spline will do is simply take the image from the current width and stretch/shrink it up/down to 250 pixels.

Now just add the dauk object to our storyboard object and start it (sb.Begin(this);).

And there you have it, your control can now be fully animated with no help whatsoever from Expression Blend!
Have a blast and make things move with WPF!

Delicious Del.iciou.us

Tuesday, December 9, 2008

TimeSpace

Recently released by the Washington Post, TimeSpace, an interactive post article, photos, global blogs, foreign policy, video and articles geographic visualization. In other words, an interactive map with A LOT of information! Interesting choice of color pallet, animated nodes and (particularly my favorite) custom slider makes it easy to find information and, the most fun and valuable part, trends!
For instance, in a few glances, you can find out which are the interests of the post when publishing worldwide information to it's readers. Sadly enough, you can also find out that all that matters to the post regarding my home country - Brazil - is soccer (and even worst, my soccer team came in second this year, loosing to São Paulo). You can also notice the lack of interest for global news. Summing up all the nodes, there are far more items in the various parts of U.S. than in the rest of the world altogether.

Here is a S.S. for Dec. 6, 2008 11:59 p.m. to Dec. 7, 2008 11:58 p.m.:


Delicious Del.iciou.us

Monday, December 1, 2008

On visualization...

Many visualizations have been made trying to make the product buying over the internet process, some trying to emulate physical book stores, others trying to incorporate visualization concepts in order to make it fun for users to find out information on the products, and some others... well some others have not made their point all that clear!
This week, I found out about Vizzl, a flex based tool for product searching on Amazon, eBay or even Youtube. This one falls into the second group: use of visualization concepts to enrich search processes. It's got animation and information well distributed and it keeps the UI simple. It's even got an introduction video to explain how it works, although not much explanation is needed.
There are some bugs and glitches, which I'm sure won't be there for long, and the idea is fairly simple and not that innovative. The most interesting part is the usage of Adobe Flex. In an era like this one, where we have so many options ranging from .Net & Silverlight, Java, Flex and so on, Flex does keep the application simple and light enough to make the user experience fast, somewhat robust and fresh.
The application is indeed fast and way more fun than searching Amazon itself, for instance, so check it out at Vizzl

Delicious Del.iciou.us

Thursday, November 27, 2008

Welcome to the world, Processing 1.0!

It only took 162 attempts (hey! It took Edison 1000 attempts to make the light bulb! shush!!!), but it's finally here: Processing 1.0!

There was even a press release for it last Monday in Cambridge and L.A., and it was well deserved. I'd explain what the project is, but Ben Fry - who is one of the authors - has already done a pretty good job...

"Processing is a programming language, development environment, and online community that since 2001 has promoted software literacy within the visual arts. Initially created to serve as a software sketchbook and to teach fundamentals of computer programming within a visual context, Processing quickly developed into a tool for creating finished professional work as well.

Processing is a free, open source alternative to proprietary software tools with expensive licenses, making it accessible to schools and individual students. Its open source status encourages the community participation and collaboration that is vital to Processing’s growth. Contributors share programs, contribute code, answer questions in the discussion forum, and build libraries to extend the possibilities of the software. The Processing community has written over seventy libraries to facilitate computer vision, data visualization, music, networking, and electronics." - Ben Fry

You can download it free here and find beautiful examples of usage here.
Hope you enjoy this, I certainly will!

Delicious Del.iciou.us

Wednesday, November 26, 2008

Talk on WPF and Silverlight

Folks, I'll be giving a talk on WPF and Silverlight development next week for the development team of Stefanini IT Solutions.
It'll be more like a crash course on the technology and what can be done with it.
It's going down at TecnoPUC next Tuesday and Thursday (11/2 & 11/4) form 6:30 PM to 8:30PM.

I'll be posting the results as well as some of the most interesting questions that might appear.
For those joining, I'll see you then!

Delicious Del.iciou.us

Tuesday, November 25, 2008

Financial Crisis in a nutshell

In the current scenario, this subject could never be seen as off-topic or not related.
On the 13th, Mint released a great diagram showing the financial crisis from the start (housing overprice, or over-investment) all the way to governmental bailout.

This is as simple as it gets:


Delicious Del.iciou.us

Monday, November 24, 2008

Coming scheadule

Critical time seems to be over at the office, leaving me some spare time for blogging. Having that said, I've decided to create a post scheadule to cover the vast range of subjects of my interest.

Given that I have quite a few blog RSS signatures on Visualization and weekends are full of interesting posts and publishings around the globe, Monday-Tuesday will be the days dedicated to Visualizations. My likes and dislikes, thoughs, wishes... What have you.

Todays (and probably will repeat itself) subject: Many Eyes
Although it's no secret that I've worked with the guys in Cambridge for a brief time in 06-07 winter, there will be time for talking about the tag cloud, wordle and all the other awesome tools available in the portal. This post is about their newest back-end change: Rails!

That's right, everything is now running on Ruby on Rails. On their newest post, Jesse brings out the big guns and points out the pros and cons on the choice and makes his point very objectively. Try it out for yourself and feel the difference.

Thumbs up for the time invested, guys!

Delicious Del.iciou.us

Friday, November 21, 2008

Hiatus

After the longest hiatus in the history of blogging, I post this to let you know I'll be back in action in no time.

This week, I'll wrap up the last details from the hiatus with an informational post, continue the design patterns thread as well as start the WPF, Visualization and Talks regular threads with it's respective dates, organized so that I can follow through with the readers expectation.

See you in no time!

Delicious Del.iciou.us

Wednesday, July 9, 2008

Design patterns posting contract

All design patterns share a few properties, keen to describing a good design pattern and following are the properties Design Patterns – Elements of reusable object-oriented Software uses to describe design patterns, and therefore the ones I’ll be using on my posts, since that will be my main reference:

Name: All design patterns need a name and a good name is vital because it will become part of the vocabulary. If it’s the case, a second popular name (Design Pattern calls this “Also known as”).

Intent: What does the design pattern do? What problem does it address?

Motivation: A scenario that can state the importance of the pattern.

Applicability: In which situations can the design pattern be applied? Examples of poor designs the pattern can address and how to recognize those situations.

Structure: Graphical representation of the classes in the pattern. I will NOT be providing such graphical representations. Such images are copyrighted and I do not have permission from the authors to publish them.

Participants: Classes that participate in the design and their responsibilities.

Collaborations: How the participants work to accomplish their responsibilities.

Consequences: Trade-offs and results of using the design.

Implementation: Pitfalls, hints, techniques involved.

Sample code: Code fragments that illustrate how you might implement the design pattern. In my blog I’ll be giving those in C# 2.0 or 3.5 (I’ll point out which framework I’m using each time).

Known uses: Examples from the real world of complex systems that use the pattern.
Related Patterns: Closely related patterns, keen differences and patterns used in the design described.

Later this week, I’ll be posting the Abstract Factory description.
Regards.

Delicious Del.iciou.us

Monday, July 7, 2008

Design Patterns - what's the deal

As a tech lead in at Stefanini, one of my duties is to interview applicants and evaluate their technical knowledge. It's a very hard thing to do, once you realize that it's people’s lives, perspectives and needs that I'm dealing with when they come to us.

So after reading and testing skill after skill, applicant after applicant, here is one of the most common gaps: Design Patterns.

"If a colleague were to say to you, "Spouse of me this night today manufactures the unusual meal in a home. You will join?" three things would likely cross your mind: third, that you had been invited to dinner; second, that English was not your colleague's first language; and first, a good deal of puzzlement.

If you have ever studied a second language yourself and then tried to use it outside the classroom, you know that there are three things you must master: how the language is structured (grammar), how to name things you want to talk about (vocabulary), and the customary and effective ways to say everyday things (usage). Too often only the first two are covered in the classroom, and you find native speakers constantly suppressing their laughter as you try to make yourself understood.

It is much the same with a programming language. You need to understand the core language: is it algorithmic, functional, object-oriented? You need to know the vocabulary: what data structures, operations, and facilities are provided by the standard libraries? And you need to be familiar with the customary and effective ways to structure your code. Books about programming languages often cover only the first two, or discuss usage only spottily. Maybe that's because the first two are in some ways easier to write about. Grammar and vocabulary are properties of the language alone, but usage is characteristic of a community that uses it."

This extract from Effective Java's foreword, written by Guy Steele is the best way I've ever seen the need for programming patterns explained, so I decided to borough his words for this post. Surely you can express yourself and make the computer understand what you’re saying, but wouldn’t there be a better way to do so? Of course you can.

I decided to make a series of posts on the subject of design patterns. Since I don’t have any teaching training, I’ll be using one of the best books on this subject, the Design Pattern bible: Design Patterns, Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides.

The first subject will be one of the simplest design patterns: the abstract factory.

Regards,

Delicious Del.iciou.us

Wednesday, July 2, 2008

Appologies

This is a very short post I decided to write so that I can apologize to you, fellow reader.
In no way this is a justification for such a long hiatus between posts, it’s simply an informative post, so that you have an idea of the reasons.
First of all, my project at Dell has been taking all of my time lately with very few exceptions, which I’ve been using to catch up with my sleeping. Things have gotten complicated and let’s just say I’m hoping for a fast solution that will give my team and me some time to organize our thoughts and goals.
Second, because of my lack of spare time, I haven’t got the chance to play with VS2008, but I am writing a visualization project so that I can test the new framework features. There’s not much of it ready for implementation, but I’m inclined to build something related either to conversations through MSN Messenger and/or e-mails (special thanks for the class of 2007 for the relentless mails about soccer games, barbecues, lemons, etc...) or something related to my sports injuries – I’d like to take this moment to mention Tim and his visualization of injuries "Where does it hurt?" posted at his blog, which has inspired me to build something on the same sense.
So, I hope you guys can find it in your hearts to forgive me for the absent and please give me an input as to which of the visualizations would be more interesting.

Thank you.

Delicious Del.iciou.us

Friday, April 25, 2008

Conditional Breakpoints

Ok. I finally got my hands on VS08 and I hope, by the end of this week I can have some useful information to pass along. Meanwhile, here is a subject that's often unknown by most programmers, since VS is a huge tool and has a lot of features: conditional break points. While not cannon to the development process, this feature can help you to create a very complex and robust debugging ground for your application.

The idea is simple, after you create break points in the desired code lines, you can say when this breakpoint is supposed to actually pause the debug instead of doing it every time you reach that line. The process of creating a condition to your breakpoint (from now on, we'll use BP to name it) is easy. You simply create your BP, then right click it and select condition, a condition sentence window pops up and you can write the sentence to dictate the actual breaking. There are two sentence types for you to choose from: one that will return a Boolean value, and when the sentence is true, the BP will pause the process, or one that keeps an eye on when the sentence return value is changed, in which case the BP will too pause the execution. Simple enough right?

So when is this useful? Well, when you are testing a loop which has been breaking due to one specific element. Recently I've been writing code to parse a text file and turn it into a bunch of XMLs. So far it seems trivial, but the thing is that each text file has about 50Mb and generate up to 750 XML files of up to 15Mb each. So my loop was running for a while and each iteration involved a big number of methods intricate in the class hierarchies. I had the information that it was breaking in the 19th iteration of the 128th element. So instead of creating cluttered code to break the execution on that iteration, I just used a conditional BP with a sentence that would return true when those and a few other conditions were true and surely enough, problem solved.

This simple feature helped me save a lot of time debugging and prevented me from leaving trash code that I could forget to remove once the defect was corrected. BPs have a few other interesting and powerful features such as hit counts (which enables you only break when the hit count is either equal to, multiple of or greater than or equal to a user defined number), filters and when hit (used to define a course of action when the BP is hit).

So, I hope this will help you debug your applications faster, more robustly and more precisely.
Regards!

Delicious Del.iciou.us

Monday, April 21, 2008

Visual Studio 2008

In the past few days, I've been trying to install the new version of one the best IDEs ever made, Visual Studio. After being to a few presentations on the new Framework and the 2008 version of the IDE so I've been looking forward to trying out the new features of both.

I've got a DVD with the installers but it was corrupted so hopefully next week I can have more interesting news to share. I'll try to get a new DVD in the next few days so that I can try it out with a couple tutorials and so.

Until then, regards!

Delicious Del.iciou.us

Friday, April 11, 2008

Introduction - so who is this guy and what's he talking about?

Reader,

Well this is the first break I got from my current project so I thought I'd give the blog a go.
First things first, so let me present myself.

My name is Guilherme Bertini Boettcher and I'm currently a .NET Developer for Stefanini, allocated to Dell. I have a BS background and I've been involved in research for most of my professional life. My fields of work range from IT to information retrieval and information visualization. I am the maker of Many Eyes' Tag Cloud along with Matthew McKeon, who was my mentor during that project. I also created an IM History visualization, Ambhis, which uses information present in MSN history files to create an abstract self portrait of the user.

I'm currently working on Invoicing solutions for Dell using VB and .NET. My favorite programming languages are C# and Java and I'm currently pursuing certifications on those.

Now for this space.
This blog is designed to bring to you, fellow reader, information about my projects and whatever technology news I find interesting and have an urge to share.

So, lets all hope for the best and remember feedback is never too much, so please let me know what's on your mind.
Regards all!

Delicious Del.iciou.us