I am working on a secret squirrel application. Can't say much suffice to say I had a situation where a bunch of clients connect to a network - like most apps I guess.
In this situation, I needed to inject a listening app to the overall network in that it needed to keep a pulse check on how the clients within the network are doing. This listening application needed to show the information in a meaningful way but at the same time; I do not want to have to inspect every single one of them each time they connect/disconnect.
I needed to visually show the connection states but I wanted it to be more reactive to me vs. me reactive to it.
Armed with problems like this, I now draw your attention to my biggest pet hate - DataGrids. A developer and you know who you are - would often take a situation like this and go "Ok, got it, what we need is a datagrid and the columns show machine name, state and blah blah metadata - easy peasy!!"
If you are that developer, I want you to do me a favor, remove yourself from the screen design team as you are hereby in a time-out.
Again, the problem is that I want to have a sense of all things are ok but I want to be alerted when things are not. I want to put this UI onto a large screen and just let it sit there keeping an eye on things and the moment something's amiss - tell me!
Here is what I came up with. It is a hexagonal grid, each tile represents a new client connection and what it does is when a client activates it pulsates (the tile also gets added randomly in the grid). Yes, it pulsates but slowly, so it gives the impression that the "grid" (i.e. network grid) is breathing just like an organic machine.
When something bad happens, the tile flips to a red alert state and if there is a massive network outage the entire screen flickers with red pulsating tiles all yelling "help me, help me".
If more than 10x tiles fail an overall, alert text flows over the top giving you the old "Warning will Robinson, warning" alert.
The point here is simple. I could of easily just taking a data grid and view model, bound the two together and walked away. I actively choose not to do that as it's a case of thinking about the problem creatively and trying an approach that makes sense but at the same time underpins an important principle - We work with software. We shouldn’t just use software"
That's why I hate datagrids.