Marquee de Sells: Chris's insight outlet via ATOM 1.0 csells on twitter

You've reached the internet home of Chris Sells, who has a long history as a contributing member of the Windows developer community. He enjoys long walks on the beach and various computer technologies.




Do you know someone that needs dinner this Thanksgiving?

The boys and I were driving past a church with a holiday bizarre, so we stopped by. It was a mix of silent auction, bake sale and a $1 raffle for a turkey dinner with all the fixings. I made several comments about how they could skip the formality of the drawing and to make sure they could read my phone number on the back of my raffle ticket, because I was obviously going to win. They laughed.

When they called this morning to let me know that I had won, they told me that they remembered me and I laughed.

Anyway, the Sells Brothers and I have already picked up all we need for our Thanksgiving dinner, so if you know of a family in the Portland metro area without the means for a traditional dinner this holiday season, please let me know. I doubt it'll be so big that I'll need a sled to cart it through the streets, but I'm happy to deliver it when it needs to go. You can leave a comment on this post or drop me a line.

Happy holidays, everyone.

0 comments




"M" For Language Definition in November 2009 CTP

I couldn't wait for the PDC, so I posted a screen shot of my favorite new three features of "M" for defining domain-specific languages (DSLs) in the November 2009 CTP of "Oslo":

I can't wait for you to see it!

0 comments




"M" For Language Definition in November 2009 CTP

In the November 2009 CTP of "Oslo", we've got some new DSL features in "M", three of which I couldn't wait for the PDC to brag about.

November 2009 CTP version of Intellipad

Notice the following in this screenshot of Intellipad:

You'll also notice richer error information in the Error List at the bottom of the Intellipad window, but that I could've waited to tell you about. : )

All of these "M" features and more can be yours for the low low price of absolutely nothing in the latest CTP of "Oslo", which you can download on November 17th, the first day of the PDC.

Discuss

0 comments




From "Oslo" to SQL Server Modeling

Extra! Extra! Read all about it!

Doug Purdy, my boss and one of the chiefs on the "Oslo" project has just announced the move from codename "Oslo" to SQL Server Modeling, which is the name we'll be using for starting now for the group of "M", "Quadrant" and Repository that you've come to know and love.

Tune in on November 17th, the first day of the PDC, for the new unified Data Developer Center, which will include all manner of data technologies, including XML, DataReader, DataSet, LINQ to SQL, Data Services (aka "Astoria") and Entity Framework. One stop shopping!

0 comments




Chris Sells on .NET Rocks! talking about data

I was on .NET Rocks! recently talking to Richard and Carl about data in Visual Studio (object-oriented, XML and relational), what tools Microsoft is already providing for managing your SQL Server schema and data migration and where "Oslo" ("M", "Quadrant" and the Repository) fits into the overall picture. It was fun and I think it turned out well. Enjoy.

0 comments




Questionnaire DSL with Microsoft "Oslo"

Gerben van Loon, a lead developer at Avanade, has put together a nice overview of a DSL they've been building for describing questionnaires in "M", seeing how they flow in Quadrant and then executing them on their web site. Sweet stuff!

0 comments




Sweet State Machine DSL in "M"

Kevin D. Wolf has built a sweet little language to describe state machines:

The States of a Invoice are New, Reviewed, Submitted, Paid, Overdue and Canceled.

An Invoice can transition from New to Reviewed and Canceled.
An Invoice can transition from Reviewed to Submitted and Canceled.
An Invoice can transition from Submitted to Paid, Overdue and Canceled.
An Invoice can transition from Overdue to Paid and Canceled.

He built this with a language definition in "M". What could be simpler?

0 comments




"Oslo" at the 2009 PDC

Lars Corneliussen, my friend and "Oslo" consigliere, has posted a nice update on what he's guessing "Oslo" might or might not be: Updates on what Oslo is and Quadrant not is (September 2009). The fact that he has to guess points to just how early we are in the development cycle. For our latest thoughts, I recommend the PDC 2009, where you should attend all of the following talks:

Personally, I'm very much looking forward to this PDC. I get to give what I'm sure is the talk with the longest title, but even better, I get to see friends, old and new, and I love listening to good talks on technologies I just don't have the time to dive into any other time.

If you're going to PDC and you'd like to chat, drop me a line and we can set up some time. See you there!

0 comments




The New Microsoft Store Looks Cool

And the folks in Scottsdale, AZ lined up overnight to be there when it opened and get their copies of Windows 7 (which goes on sale today and, if I may say so, rocks).

0 comments




"M" Language Type Definitions for 280 Popular (and not so popular) Data Models

Holy "M" types, Batman! Somebody's been busy building M type definitions for tons of existing data models, including ATOM, AWK, BPEL, C/C++/C#/Java, COBOL, HTML, LaTeX, Make and the list goes on and on. I don't know how they did it -- it's an amazing task! Now that they've got some free time back, maybe they'll build M language definitions to parse the file formats. I'm just sayin'... : )

0 comments




NHibernate DSL Built Using "Oslo"

Felice has built a domain specific language (DSL) for defining NHibernate entities using "Oslo", including both a command-line compiler and a very full-featured Intellipad add-in. Nice!

0 comments




Put Intellipad-like language editing features into your applications

Bill Henning from Actipro Software has done it again, this time providing the components to drop real-time language creation features into your application for building custom grammars in the critically acclaimed SyntaxEditor control. Enjoy!

0 comments




The Downside of Transparency

Ever since Chris Anderson built his blogging software and shared it with his colleagues, more and more Microsoft employees has been pushing hard on being as transparent to our customers as we can be. This has been a very much grass roots effort. I remember coming into Microsoft six years ago just when legal was busy giving everyone disclaimers to put on their personal blogs and telling us what we could and could not say. It was always a worry whether the next blog post would get you fired. I got in trouble personally several times, but the brave pioneers before me laid the groundwork for people like me to comment on the internals of Microsoft culture, for Robert Scoble to call Steve Balmer out onto the carpet several times and for Rory Blyth to talk about penises, all on the Microsoft dime. Now blogging is just an accepted way to do things. It's not even questioned anymore; it's expected.

And by and large, this transparency is good for reasons that are obvious these days -- when our customers see how the sausage is made and have a say in the ingredients, they're happier eating it with their breakfasts.

As with all good things, however, these is a downside. For example, the product I've been working on for 4.5 years has gone through many transformations. This has to do with how new software is designed at Microsoft.

The tag line when we're hiring folks is always, "Don't you want to change the world?!" Of course, everyone does and that's good, because people coming in the door want to take big risks and do big things. If you're trying for the next Office or Windows, that's the kind of thinking you need. However, what that means is that we have a lot of folks building 1.0 software. We do this in my division with an organizational structure called an "incubation."

My product was in incubation mode for years and we started with zero assumptions. My first day on the job, I was asked to "think about synchronization." What did that mean? What problem was I trying to solve? Does replication count as synchronization? Does data import? I struggled with this for months before I got my head around the process of noodling with a technology enough to understand what problems there were in the space and how that fit with our general idea of what we might want to build into a product.

We tried a huge amount of stuff, often rebuilding shipping technologies to which we had ready source code access just so we could get a feel for how it worked (I personally built multiple data synchronization engines, a WPF-compatible XAML parser, a data binding engine and a set of universal data viewers during that period, all of which were thrown away, as expected).

As we got further along, we started producing things that needed to be published, even if they weren't a core part of our product anymore (like MEF and some new features in XAML 4.0). Once this started happening, we started to feel like we had a handle on what we were doing to move into "startup" mode, where we formed a team to make productization plans. At this point, we started telling folks what we thought we had, including analysts and "insider" customers, getting their feedback. Based on this feedback, we re-jiggered the product and the story and did it again. And again.

Eventually, we move out of startup mode to become a real product team with dev, test, PM and UA splits (up 'til then everyone does everything or, as we liked to say, "everyone shovels"). Eventually in this mode, you publish some set of bits that are your best guess at the time of what we think we're eventually going to ship. In our case, it was the October 2008 "Oslo" SDK CTP, guaranteed only to take up space on your hard drive. At the time, we'd been telling the "Oslo" story for more than a year and it had evolved a great deal. Since we published that initial CTP, we've published a few more, along with an entire web site filled with articles, videos, specifications, samples, etc.

I mean, we did it big. We were part of the keynote at the 2008 PDC and we had lots of folks on our team that are very visible in the community, including Don Box, Chris Anderson and Doug Purdy. These are the heavy hitters, so when they said something, folks listened.

And we definitely got a lot of community involvement -- way more than we expected, in fact. With that involvement, we got a ton of feedback, which is the benefit to us of releasing early and often. We take that feedback and we make changes to our product -- sometimes big changes. In this particular case, we were building on all kinds of SQL Server-related technologies, so because of pressure to build the absolute best thing we possibly could for our customers, we actually merged the division that owned "Oslo" (and WF, AD, WCF, BizTalk, etc) with the SQL Server division.

Of course, those are the kinds of changes that our customers don't see. What they see is that things are changing and that they're not quite sure what our plans are. That's one big downside:

When you share early information, sometimes it's half-baked, it often changes and is almost always confusing.

As an example, Jeremy Miller recently had this to say about "Oslo" and our communication about it's purpose in life. Believe it or not, this is helpful feedback and it's my team's responsibility to understand what exactly is holding folks up and get it fixed in the way we tell the story and in the product itself.

Another part of my team's responsibility, of course, is communicating what it is the product does so that folks can understand it and give us feedback. That means that the first people that know how confusing a product is are the folks writing the documentation and tutorials, building the videos and producing the samples. And believe me, we act as customers on the team as well, logging bugs and making complaints and bugging the developers and PMs directly, hoping to fix everything before customers even see it. Of course, we can't do that all the time (or even most of the time), so often:

We produce materials that tell the story in the very best way we know how with the current set of bits.

Kraig's recent "Oslo" blog post is an example of this. This is an important part of the process, too, actually. We, as Microsoft employees, can complain to the folks producing the software 'til we're blue in the face, but often real changes aren't made 'til real customers complain. As a consequence of this:

We take the slings and arrows of our customers and thank them for taking the time to shoot us.

This one can really hurt, actually. I'm a professional, but I take it personally when I say something that doesn't resonate with my audience (at a recent conference, I threw away an entire completed slide deck and started over only days before the deadline so I could tell a better story) and the audience takes it personally when I show them something that they don't understand.

In fact, everyone in marketing, DPE, UA and every part of the team that interacts with customers directly or via the software we're producing, including the devs and test engineers, all take it personally. We care deeply about building products that delight and empower our customers, which is why we push so hard on transparency from the bottom -- the sooner we hear your complaints, no matter how confusing we might be, the better able we are to build something you love.

I'll tell you though, if we could build something you'd love without giving you an early look, we might want to do that because:

When a customer is confused or disappointed by an early look at a product, they might not want to look at it again for a really long time, if at all.

Early looks are a double-edged sword. We want the early feedback to make our product better, but if you don't come to look at it again, you'll never know we made it better.

Still, transparency is absolutely worth the downsides. Keeps those cards and letters comin'! : )

0 comments




Kraig Brockschmidt blogging on "Oslo"

Kraig Brockschmidt, the author of calc.exe and the famous (and infamous : ) "Inside OLE," has been a part of the "Oslo" community team for a while and is now blogging in the way that only he can. He's building some samples as he explores the feet on the ground experience and you should check it out. Enjoy!

0 comments




Add "Search the Internet" Back to the Win7 Start Menu

Windows 7 took away a feature I use all the time, as shown on the right: Search the Internet.

Here's what I did all day, every day in Windows Vista: Ctrl+Esc to bring up the Start menu, then I start typing. If I'm searching on my HD, I immediately get matches and I can choose one with just the arrows and the Enter key. If I'm typing in the name of a program in the Start menu, I get those matches and choose one. If I want "calc" or "notepad" I can just type those and those work.

However, 80% of the time, I want to search the internet, so enter my search term, optionally including attributes like "site:", I press, down-arrow once, highlight "Search the Internet" and press Enter. This brings up my default browser with my search results in my default search engine without me having to move the mouse or open the browser and wait for the home page or even decide where I want the search results to come from until after I've entered my search phrase.

And we took it out of Windows 7. : (

But, Shawn VanNess has shown me how to put it back! : )

Download this zip file, execute the .reg file, press Yes and OK a bunch, kill and restart the explorer.exe process and the next time you do the Ctrl+Esc+type+something dance, you'll see your old friend "Search the Internet" right back on the Start menu where Bill intended it to be. Thanks, Shawn!

Update: This post has been translated to Danish.

0 comments




2545 older posts       90 newer posts