Late last year, I saw a Channel9 video on a tool being developed by Microsoft Research (MSR), FastDash , which is obviously an acronym for Fostering Awareness for Software Teams Dashboard. Actually, I'm not sure how much the acronym is still being used since the capitalization seems to have changed in recent usage, but whatever. The bottom line is, if you haven't seen the video, you should go check it out. There's another short spot with it and a tool called DynaVis , which is also in development by MSR, that you should check out as well. Heck, if you don't frequent Channel9 and you develop with Microsoft tools and technologies, you're missing out; but I digress... After seeing FastDash, I had to have it. Essentially, the tool gives you insight into what your dev team is doing. There's a huge potential for what this could be and I'd like to see it grow into something that's included in the Visual Studio tool set. I have no idea if/how that might happen, but, given my interest in research, I volunteered my time to the team. For the next release of FastDash, we're planning on changing how the tool functions a little. We'll be using another tool called PipeDream to create the UI. Now, this is something I'm still wrapping my head around, so forgive me if it sounds odd. PipeDream uses PowerShell cmdlets and what it calls vislets to generate output. An example of this might be to use a Get-CpuUsage cmdlet piped to a progress bar vislet to see how your CPU is being utilized.
So, I'm creating some PowerShell cmdlets to access TFS resources and something funky started to happen... When I call Get-TFWorkItemArea, I'm getting a list of the child areas for the first area. That's strange. After digging into it more, I realized it was actually giving all the child areas, but I only had children on one area node, so that's why I was just seeing the first one's children. Apparently -- and this still doesn't make complete sense to me -- the Cmdlet.WriteObject() method is displaying the object's child nodes when I tell it to enumerate a collection. Very strange. There are 2 ways to call the method, one is passing it an object and the other is passing it a collection and telling it to enumerate thru the collection. Being new, I assumed enumerating thru the collection was the best option, so that's what I went for. Of course, I was wrong. I still have no idea why this happened. I may dig into it one day, but for now, I'm just glad it's working again. I'd be curious to see how other people are using it.
I was listening to Windows Weekly
and Paul Thurrott
mentioned that he was very interested in Group Shot
, but claimed it was a Windows Ultimate Extra
. As far as I know, it's not. Group Shot is a Microsoft Research project and is freely downloadable to all. It might be an Ultimate Extra in the future, but I kind of doubt it. Honestly, I just wanted to share the link in case others haven't seen it. Group Shot allows you to take good portions of multiple photos and combine them. The typical example is taking family/group photos where each photo has someone blinking, looking somewhere else, or whatever. Using Group Shot, you can take the good parts of each individual photo to create a new photo with everyone looking the right way. Check it out; it's definitely a nice tool.
I mentioned this in the past, but I had to touch on this on its own because it's a huge problem. There is a somewhat common outlook that Microsoft isn't an innovator. This is hugely incorrect. While throwing money around doesn't say anything about what is produced, Microsoft puts more money towards research than any other IT company. That, in itself, should speak to the importance of innovation to Microsoft and its future. Microsoft Research recently passed its 15th birthday . If this is something you're interested in, check out the video that sums up those 15 years. Of course, this doesn't speak enough towards the level of effort put into the company's research arm.
Here's a big annoyance to me... surprise, surprise, Vista is being looked at as a Mac clone. Why? Good question. I asked a Mac fan why he feels this way and he pointed out two things: the desktop background and Mac's widgets. Later, he pointed to the somewhat popular video that tries to point out similarities. That video pointed out desktop search, 3D chess, triangles as directory hierarchy markers (instead of +/- icons), the calendar/scheduling program, and the photo gallery. All of this is ridiculous. First off, I have to say that Apple didn't invent any of these concepts. If I had the time and cared enough, I'd track down the initial use of each of these features and I'd put money on the fact that none of them would be Apple. Apple is more of a design/usability company than a feature/capability innovator. I'm not going to get into defending against these ridiculous claims, but I can. These features don't even make up a significant portion of the operating system. Anyone who bases their opinion off of these "examples" is an idiot... including the New York Times guy. I don't remember his name, but I don't care enough to find out.
With all that said, I'm not saying Microsoft doesn't have room to grow. The most notable innovation of late is probably going to be the Office ribbon. I have to say I love it. I had my doubts, but it's a fantastic change that will definitely make life easier for everyone. The only problems I've heard of is transitioning from the old, menu-based structure to the ribbon layout. Speaking of this, we should see similar changes in the next version or two of Windows (1 , 2 , 3 ), which I'm excited about.
I've always been interested in what's next. Beyond that, I've always wanted to be a part of the research that goes into finding and honing the future state of whatever technology or practice is in question. Unfortunately, I've never really had the opportunity to work for a company that did such a thing. Well, I take that back... I've worked for organizations that had research labs, I just didn't work close enough to them to be a part of that research. After starting with Microsoft, I figured I might have the opportunity to do just that -- work with researchers on some next-gen concepts. Of course, I love consulting and I'd like to get settled in here (in Microsoft Consulting Services) as much as possible for the time being. Perhaps after a couple of years I'll see what my options are. One thing I like about consulting is that you typically bounce between projects fairly often. Unfortunately, my current customer has so much going on, I'll stay gainfully employed for the foreseeable future. Don't get me wrong, this is a good thing, but I'd almost like to see about taking a 3 month break to work on a research project. Of course, in the big picture, there's no telling how much I could gain from that since research projects are typically multi-year efforts. Right now isn't the time to start that, anyway, but I might have to start looking into it for the future.
Lately, I've been thinking about this a bit more as I try to put together what I'd like to do over the next few years. The main research area I'm interested in is software engineering. It's hard to define what I like, but if I had to, I'd say my interests revolve around best practices and making life better for the user. Again, this is still a fairly broad area, but that's good... there's plenty of room for improvement. As a matter of fact, I'm always trying to think of what might define "next-gen" with respect to various areas of software engineering and usability. On the software engineering front, I might ask how we can reshape the way software is developed by increasing productivity and integrating best practices where they make the most sense. I have several ideas around this, but the overall concept is fairly sketchy. As I mentioned, usability is something I'm also interested in. When I say "usability," human-computer interaction (HCI) comes to mind, but there's so much more. Everything has a usability factor -- perhaps that's an idea... calculating usability -- and that usability factor typically makes or breaks a product's success in the market. I'd be interested in finding new, innovative ways to streamline and replace antiquated practices. Most of what we do everyday is out of habit, so it can sometimes be hard to break those habits and make some forward progress. There are so many angles to take here, so I can't really get specific. I think it'd be interesting to see how much time is spent doing various tasks with this ultimate goal of determining where streamlined tasks could provide the most benefit. This would definitely take some time to determine, so it might be best limited to computing activities, which can be easily tracked and metrics obtained... well, easier than daily life activities, anyway. Just thinking of how to track this brings up a handful of very basic concepts on how such efforts might be better implemented. The possibilities are truly endless when you start talking about research topics.
I am interested in taking on a research project, but seeing as tho I've never done it before, I need a "mentor" who has more research experience. It would also be nice if the project had a smaller scope, so it didn't take a year or so to get somewhere. I guess my goal right now is to gain some experience researching a topic. Once I have that, I'll probably break off on my own to try it out. I may take on two mentored projects before doing one of my own, but I'd like to do both. Then, wrap that up by working on a Microsoft Research team, and I should have a decent research foundation to base a PhD on. I'm not sure if I'll ultimately get there or not, but I'm entertaining the idea. I don't like the idea of taking 4-6 yrs off of work to do that, tho. I'd balance the two for 8 before I'd take off of work for 4. We'll see what my options are. I don't need the paper to do the work, but it's nice to have the recognition for the effort and get a more formal background in research.