Ryan Dawson on Longhorn

The software we think, but do not write

  • System Stats Using Avalon Animation Lingo Article

    Filed under:

    This sample is intended to show the “wow” effect for Avalon, and still maintain a sense of functionality.  We will build a Task Manager in the most basic form, using many types of Animation –RotateTransform, TranslateTransform, and TransformDecorator Animations for properties such as Opacity, Width, and Height.


    The Article can be found here


    Source Code

  • Designing the World

    Filed under:


    From Rob Relyea’s post, I think there are some things that need to be addressed (http://longhornblogs.com/rrelyea/posts/1336.aspx).  I feel strongly that XAML is for the designer only (the loaded word designer applies in this case to a person designer and the tool in VS).  I may be wrong, as time will prove, but that is how I feel.  The biggest part that I think is missing is a way to tie the programmer and the designer together, a sort of contract.  O wait, we already have a technology that helps us enforce that – XML Schema (http://www.w3.org/XML/Schema).  Albeit they both have to work together, the programmer is like the car engineer, he makes sure the car is functional.  On the other hand, a big part of selling cars means that you have to make your model look sporty, luxurious, and stylish. So the designer plays a VERY important role in designing the car, because their decisions lead to what becomes a trend, and later profit.  You can copy the engineering work of a car from one maker to the other, but the looks are what differ the most.  To say the least, don’t get me wrong, the designer has very strict guidelines they must follow.  For example, the designer cannot remove a wheel because they think it will make it look better. The first rule they must follow is to not break the functionality.  Without a wheel, they have violated rule number one.  Unlike the car makers, I think we are in the perfect position to enforce such rules.  If the programmer, who is ultimately responsible for the functionality says that we need a text box, then we need a text box.  The designer should not have the ability to delete the textbox.  At the end, when they check in their work, the Source safe should run it against the schema and only accept it if it meets the requirements.  I say text box, but underneath this means a string.  So you can imagine a text box, rich text box, combo box, and possibly a multitude of others that will be valid against the schema.  Part of being a designer is breaking from the norm and creating something unheard of.  So we must not stifle creativity, but more or less, check to make sure they are working within boundaries.  In the end, I think all XAML will be created by the designer only (unless that is also your programmer).  This is a bad example, but there is not one graphics designer that I know who modifies a picture on the bit level.  They use Adobe tools to apply transforms.  They use their mouse to drag shapes and lines around.  They use properties to select things like color and opacity.  Like I said, this is a bad example, but it can be likened to XAML.  Now, this premise resides on the fact that the tools exist.  If you cannot get the perfect effect you are trying to create, then the tools are not good enough, and at the same time, this gives you a reason to venture into the XML territory.  But, then again, you are mixing design behavior with imperfect modeling tools (XML).  A lot of designers that I know still work with paper and pen, because they are free to model everything with the strokes of their hand.  If you asked them to venture to the next level and modify the vectors they have created with math, they would look at you funny.  This is like asking them to modify the XML in XAML.  Working so closely with designers on your team means that we have to change the way we look at things, which also mean we need to support the tools to enable this.  I imagine a whole generation of tools for creating XAML, maybe even another company the size of Adobe to support this.  I can imagine the tablet having deep impact here.  None the less, mixing the two should be a no-no; designers and programmers have a common goal, but the way they get there should not be the same.  To this end, we need a way to bind the XAML to a schema.


    If you don’t believe me that UIs are going to turn into pieces of art, then I wait for the day when I can email you up, and say “ha, I told you so.”  Now a day, to get a stunning effect, we mix graphics from the designer with our graphics code (only the basics, gradients at the most).  With XAML, the whole UI will be a picture.  A textbox can be modeled as a mountain with snow, if someone so wishes.  Wait, I have not even ventured into the animation world!  Stay tuned, there are interesting things on the horizon.

  • On the Road to Longhorn

    Filed under:

    Like my first post on LonghornBlogs, I would now like to post my first one from Longhorn!


    I have installed it on one of my desktops, and I am still contemplating whether I want to use the other partition I made for WinXP.  Longhorn is just so appealing that it is a hard choice.  However, I am having a better experience than some, since this machine is a dual proc.  Another side note, you need more than 512MB of RAM.  There is no question.  Although, the paging system does a good job, you still need more, and since we usually follow 2^n, I would recommend 1GB, as does Microsoft.


    Following are some notes that I have compiled.  I am not sure if these issues are being addressed, but this should help if they are not:


    1) Sidebar

    a) Slide Show

    I need some options.  For one, I need to be able to select the directory where I want my pictures shown from, err in longhorn terms, let me define a filter.  Secondly, how about some timer settings between pictures.  More so, every time the picture changes, my CPU usage jumps around 20-25%, which does not seem likely.

    b) Clock

    I need to be able to change the time and date from the tile instead of going to the control panel.  The reason is because most people are used to right clicking the time in the tray, and so I tried to do the same with the clock, but it doesn't work.

    c) Positioning

    I have a dual monitor system and I want to have Sidebar on the secondary one.


    2) Search

    Search is still too slow.  It is still faster to open the browser, navigate to google, type in my query and then search.  Secondly, it sucks at finding things.  I search for a number of things using the "Help and Tasks" filter, and I rarely get any results.  For example, type in "time" and let it search.  Are you kidding me?


    I need to be able to search everything.  Right now, you have to search within a filter (Contacts, Email, etc...).  The reason is because things may span multiple criteria, and I don't want to have to go through relationships to see it.



    3) Explorer

    Well, what can I say, we all know of these problems.  Currently, explorer.exe is using 294MB of RAM.  I think a new Start Menu paradigm might be worth while.  The reason is because I like to have all of the 'Places' folders on the right (Documents, Recent Items, Videos, Pictures, Music...), I mean all of them.  This means that it makes the Start Menu really tall, and leaves a lot of white space on the left side since I only have 5 programs that show up.  I have not thought of a way to fix the Start Menu problem, all I know is that one exists.  Maybe, some people can throw comments up that have good ideas.


    I have a lot of MP3s (a lot), and explorer doesn't support the list view style anymore (that I know of), which means that explorer puts a little icon next to all of the MP3s of some random album cover that it generated from 1 of the songs.  Again, filtering comes in handy, but some times I like to see all of my songs.


    When dealing with pictures: I try to select the ones that I want using Ctrl + Mouse Click, but it is painstakingly slow.


    The found new hardware pop-up definitely has a bug, as it will continually keep popping-up until you restart.


    I am not sure how you configure the toolbars that show on the task bar, but I like the Windows Media one, and I cannot figure out how to enable it.  In previous versions, a toolbar menu was on the task bar context menu.


    The download manager does not remember my setting of "Close when download completes" and even when checked, it never closes.


    4) WinFS

    Again, we all know it is slow.  Another point of interest is the WinFS.exe 60MB footprint.  I am not sure if this is standard.  All in all, I am happy for this build.  However, I am not sure how successful WinFS is going to be right away, because it is designed to work with relationships and the like, but if no such thing exists on a document, then how can WinFS serve the user best.


    The same applies for filtering by Meta data.  If the Meta data does not exist, I am not going to take the time to fill in the values.  We need ways to tag the data without user interaction.  For example, at the PDC, Steve Swartz was telling me how future cameras would have built in GPS units to tag the location element of the picture.  This is good, but I don't foresee this anytime soon.  The same goes for all types of data.  How does Microsoft plan for an engine built on Meta data to work without a fair amount of work on the user’s part?



    The great, things that I really like that have not been mentioned, besides the OS in general:


    On the new hardware found pop-up, you can actually define rules, or you can simply say "don't show this to me again."  Rules are great, they work well in Outlook and I am glad to see them in the OS.  The same goes for file copy dialogs, now you can click a check mark that says "Remember this setting" or something. 


    User settings are much richer.  More things are customized per user than ever.  But on the same token, this has to do with superfetch.

  • Superfetch

    Filed under:

    Everybody has heard of the word in the PDC keynote.  There are ideas that are going around, but no one really has a strong grasp.  I Googled it and only found the word as used in keynote summaries.  That is not much help for a word used in front of 8,500 inquisitive developers.  Here is a little more:


    Superfetch is a word used to describe common pre-fetching technologies.  Who is to know if that will be the marketable word.  Pre-fetching was added to the XP kernel for memory management.  Here is a paper from MSR about general purpose pre-fetching.  Anyway, since WinFS has come around, it is critical to getting things to where they are going more quickly.  Definitely, this is one of the smart approaches to curing some perf problems in WinFS.


    Basically, superfetch takes note of commonly used items, such as applications and user settings.  Then, when you come to the screen with all the users and click your identity to log on, Windows takes the chunk of superfetch data and puts it in memory.  So this obviously means that it is personalized for each user of the system.  The interesting part is that you can store all the data together in a chunk and then just throw it into memory and it is ready.


    The more I look around and find good applications, the more I notice that they all use caching.  We may have all known this, but it looks like that is the future for good responsive apps.  However, this could be a problem since many people never mastered the threadpool.  So, lets all get started on it!


    On the bad side, everyone should know that superfetch technology is not in the current longhorn build.  I can imagine it takes a lot of tweaking and it is probably a problem in and of itself to get it into the operating system.  On the topside, superfetch seems like the intuitive way to do things.


    I would like to hear more about the indexing for WinFS.  Can anyone add some value there?

  • A Wonderful World

    Filed under:

    Having had a chance to settle down and peer into the Longhorn SDK, I can tell you it is going to be a fun ride.  I mean, I knew there were going to be cool technologies, but not to this magnitude.  Take a look for yourself, if you already haven’t: http://longhorn.msdn.microsoft.com, the samples section is my current favorite.


    Today, in .NET, when I want to do something, I usually fire up the scope operator “.” And Intellisense shoots back a bunch of namespaces/classes.  Having said that, now imagine this same principal on the operating system holistically, Longhorn style.  I have yet to get a desktop ready to go on the Longhorn build, but I am carefully planning the migration, and with that comes the joy of being able to think of new applications.


    Longhorn is so huge, and it has so many services to offer.  Before, it was such a chore to even include one of the services that will now be native.  For example, think back to the Speech API days, or even DirectX.  You pretty much had to choose what you wanted your application to be centered around, and then include those COM components, which was hard enough considering Microsoft packaged it for you.  Now, pick and choose as you may.  It is all there for the taking and it is as easy as using the scope operator.  Not to mention, managed code provides benefits such as security that would otherwise be hard to put into the operating system without cutting off legacy apps (Win32).


    Right now, I can tell you that one of my new favorite namespaces is going to be System.NaturalLanguageServices.  To add spelling and grammar to everyday textboxes is amazing!  Not to mention, extremely useful.  Check out the SpellIt sample.  I also like System.Net.PeerToPeer and System.Location.  I recently asked someone the significance of Location based services, and they put it so well that I will quote “Think about a simple task of going to the grocery store.  Today, we put it on our Task List of our Pocket PC device.  To think about it, that of itself is not very helpful.  On the other hand, think if the device could know you are passing the grocery store and then give you an alert.  That is what location services are all about.”


    The most dramatic change is going to be the disconnection of the graphical design process from the implementation.  Today they are so interwoven that I cannot call a difference, because there isn’t one except for the idea that “I am now coding the UI,” or “I am now coding the business logic.”  Sure, you could use designers, but for the applications that I build, I am far faster with the code, and secondly, the syntax is precisely how I like it.  On the other hand, VS has a “Format the whole document” button for XML-ish languages which destroys the latter argument.  Currently, in XAML, I have been playing around with Animations and colors.  To be exact, I have actually just been mixing controls and properties and noting the outcome.  I like to relate XAML with TV; it is the language that is going to bring the media experience to the PC (If that ever isn’t a tautology).  Now, we are free to break the norm and put on our black turtle neck and grab a latte and start producing visually astounding apps.  Bring out the art in everyone.  I can definitely imagine an Adobe Photoshop for the XAML world.  As in the keynote, I look forward to Adobe After Affects for XAML.  The graphics world is going to be interesting coming forward, to say none the less.  In the past, the company who had the best looking application was the one who went up to all the base classes and overrid everything they could, almost down to the point where c# started to look like c++ in Win32.  Ugly!  It is also going to be interesting to see if such a system creates an obnoxious and non-consistent user interface.  I doubt it will, but it is worth argument sake.


    Another interesting phenomenon in the storage world is WinFS.  I am extremely interested to see how developers are going to store data going forward.  Will people continue to use Access and like technologies, or will they create schemas and store the data as a file as such.  I am sure perf will dictate a lot of these decisions.  But by the same token, isn’t that what separates this operating system from others.  If outlook continued to store contacts in its own format, where would we be now?  Absolutely nowhere, WinFS wouldn’t be worth a damn thing.  So this is a note to all you developers out there, Longhorn marks a paradigm shift in operating systems.  If you don’t give a little, you can’t take a little.  Right now, my Longhorn build is slow and painful in some senses, but once Microsoft hits RTM, I will never think about going back, and I am only considering bug fixes, forget about perf for the moment.  WinFS gives me so much that I willing to sacrifice some speed.  Besides, we will get that back within a couple of years with hardware advances.


    I could go on for hours about this fascinating stuff… And I have only seen it for about a week, the tip of the ice berg, so to speak.

  • Why there hasn't been development of IE

    Filed under:

    Intro to XUL and predictions about a similar Microsoft effort.


    I have been talking a lot about exciting upcoming technologies.  Well, here is another: XAML, which stands for XML Application Markup Language.  This is meant to be a primer for something that may be unveiled at the PDC.  I say may, because when I run a search on the PDC sessions site, it doesn’t return anything.  Can anyone give me confirmation?


    The quick and dirty: XUL is a way to create applications in the browser (or out for that matter).  For example, imagine a text editor with the rich UI of Windows, but portable in the browser.  XUL doesn’t even have to be an application; it could be your existing website in a more structured manner.


    The quick and dirty (2): It is basically an XML structure with CSS and JavaScript.  The CSS defines the appearance and the JavaScript dictates behavior.


    Just like XML, everything is named with namespaces, which should be pretty common practice to everyone by now.  Secondly, things are defined like the Windows world with the object of a window.  This could mean any type of UI control, built with a language meant for creating controls.  I think there will also be rich support for skinning.  Standard in the XAML API will probably be all current Windows controls, which is essentially everything that is in HTML right now.  Also, I believe the XAML API will have rich support for .NET and the BCL.  To think of it, I don’t think it will restrict you to JavaScript.  Since this will be built for Longhorn, .NET will be on every client; therefore, we could have code blocks that are called instead of JS, similar to single page in ASP.NET.  I am sure sending content to a Web Service is a breeze.


    Here is a sample of XUL:


    <?xml version="1.0"?>
    <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
    <dialog id="donothing" title="Do Nothing"
            ondialogaccept="return doOK();"
            ondialogcancel="return doCancel();">
    function doOK()
      alert("You pressed OK!");
      return true;
    function doCancel()
      alert("You pressed Cancel!");
      return true;
    <description value="Select a button"/>


    Very exciting things to come: I can not wait!


    Even better, remember that all XML stuff still can apply.  Think how easy it is to manage XML.  Well, now imagine the same ease of handling with an application.  This means that schemas can be checked, XSLTs can be run, and XPath can do its thing.  Amazing.  The PDC is going to be one of the most memorable times of my life.  I have never been on the edge of my seat for so long.  But, remember, if you are not going, we WILL have detailed coverage on this website for longhorn, and we will put up links to other technologies -> SQL, Whidbey.  But, don’t think those are the last times we will hear from them.  Every technology at the PDC will be in Longhorn in some form or fashion.  For SQL, it will run WinFS.


    [NOTE] All information is based on XUL, http://www.xulplanet.com/, and not XAML.  Although I believe they will be similar in concept.

  • Who would have known?

    Filed under:

    The Open Source Community and Microsoft need to get along.  Both sides see each other as enemies.  Instead, they should not be called sides in the first place.  Maybe open source should be renamed research, or something less of a contradictory business.  Either way, the names aren’t important.  I am willing to give amends to the OSC.  No matter how the OSC companies got there, they are there.  And for as long as I can tell, Microsoft is always going to look to the OSC for new products that it hasn’t thought of.  Secondly, Microsoft runs on money, so there are factors that motivate Microsoft and do not motivate the OSC.  This leads to another point.  I think the ideas of capitalism fly in the face of open source, and that is why the OSC gets scared.  Microsoft gets scared because of the exact opposite reason, it’s free to acquire.


    I have thought about this for a while and I am not sure I can come up with an answer.  Microsoft is always going to be commercial, but what can Microsoft do to make the open source world completely happy without them taking business.  Give them your input.  Or, give it to me and I will make sure it reaches the right person.  Of course you all want open standards, so I think that is a given, and I think XML is slowly taking care of all that.  But, what else?  On the other hand, even if Microsoft had a better product would you open source guys use it?  I know you guys like Linux, and I think you would use that if you could, but instead you guys use Macs.  Is this because you want anything but Microsoft?  These aren’t rhetorical questions, I am asking real questions.


    Microsoft wants your input.  How can they become better?  How can they swing your vote?


  • Designing Power-Aware Windows

    Filed under:

    Again, another session that is an incredible subject:


    “Designing Power-Aware Windows "Longhorn" Applications

    Track: Mobile PC and Devices   Code: MBL304
    Room: Room 402AB   Time Slot: Tue, October 28 12:30 PM-1:45 PM
    Speakers: Allen Marshall, David Switzer
    As anywhere, anytime wireless network access becomes reality, customers are starting to expect their mobile PCs to act more and more like cell phones. With over a billion cellular phones in use worldwide, it's hard to argue with the opportunity presented by making mobile PCs run for days without needing to be plugged in. To take advantage of this opportunity, it's critical for Windows applications to register for and respond appropriately to power status notifications from the operating system. Learn about the power management support today and tomorrow and see how to use it in your applications to enhance the user's experience and save power.”


    I have the unique ability to interact with top researchers in the field, who are major contributors to Intel.  One of the huge things they are working on is power.  Everyone thought that the problem was that we didn’t have enough power, right?  I wish my laptop lasted all day, but it doesn’t.  On the contrary, we are faced with increasing power consumption demands.  First of all, everyone should know that transistors leak.  It is just natural tendency, and there’s not much we can do about it.  “And that's the problem. If current trends continue, you would have a device with 425 million transistors in 2005 and a processor with 1.8 billion transistors by 2010, said Pat Gelsinger, Intel Corp.'s vice president and chief technology officer. You'd also have a heat generator with the intensity of a nuclear reactor, he said.”  Can you imagine?  So the problem comes down to this: how do we keep increasing clock speed, while keeping power under manageable levels.  “Even using 0.1-micron technology, Gelsinger envisions a 425-million-transistor die, 40 mm per side, which, clocked at 30 GHz, would dissipate 3,000 to 5,000 watts. In terms of power density, its heat would be close to that of a rocket nozzle, Gelsinger said. Conventional methods of using lead frames and specialized heat sinks will not cope with the power density. "Going forward, I don't think we know how to cool a 5000-watt processor," Gelsinger said. "We can't keep building these things with ever-increasing power budgets," he lamented.”  “The current-generation Pentium, produced in 0.125-micron CMOS, dissipates about 66 watts. The same device in a 0.1-micron process—clocked at GHz rates—would dissipate, say, 200 watts. With a 1-V supply, the current consumption would be on the order of 200 amps.” 


    If you look at thermal plots for running microprocessors, you will see intense levels in one particular place, which contributes to the power density.  Keep in mind that this area may change from application to application, but not much.  So, what about the heat sink?

    “The disparity between maximum power and typical power consumed presents a particularly difficult problem to the system designer. The system must be designed to ensure that the processor does not exceed the maximum specified operating temperature, even when it is dissipating the maximum power. While designing an elaborate heat sink, or forcing more air through the system can usually meet this constraint, there is usually significant cost associated with more elaborate solutions and environmental regulations that limit system (fan) noise.”


    You may ask how do we solve all of these problems, and I know for sure these things would hit home if you could see all of the graphs and exponential curves.  Why can’t we take the little ARM processors that sell for about $8 and put 10 of those in a computer?  This would be approximately the equivalent of the fastest Intel Chip.  Compare it, $80, to about $300-$400.  Secondly, it would only consume about 20% of the power for the Intel chip.  What’s wrong with this?  Nothing, the problem is that we don’t have software that can let us do this yet.


    Have you ever heard your fans on your laptop turn on and off?  If you put your head next to them, they almost sound like Microwaves.  I know a couple of people who actually have 2 fans!  What is going on here?  Well, the processor is conserving power by adjusting the level of the fan.  So when peak demand for the Microprocessor is needed, those things are running full blast.  This is the exact same principal that research tells us that we need to do with the operating system.  If we embed heat sensors on various parts of the chip, the OS can actually throttle Microprocessor spikes and minimize the heat throw-off.  Run a search on the internet for pictures of Microprocessors on fire.  In the Intel and AMD labs, they probably have many.


    I see that longhorn is on the right track.  Of course, they are probably working closely with Intel and AMD, among others.

  • Synchronization

    Filed under:

    For all of those who are going to the PDC, I think some of the most interesting topics to be discussed are those that are most commonly overlooked.  Sure, Indigo is nice (by the way, I have started to fall in line with everyone else calling all of the distributed computing stuff 'Indigo', but in reality, it sounds weird to me, because I am used to thinking of it as a team, and not a product.), but there are some more pressing issues for computing.  Don't get me wrong, these issues will probably use Indigo technology.

    If you navigate over to the PDC session and conference tracks site, you will notice a session that looks like this:
    WinFS: Drill Down on Synchronization Topics
    Track: Client   Code: CLI324
    Room: Room 403AB   Time Slot: Wed, October 29 3:30 PM-4:45 PM
    Speakers: Ward Beattie
    Learn how to exploit the synchronization services provided by WinFS, the next generation storage system for "Longhorn". WinFS provides comprehensive services for synchronizing data between multiple WinFS stores, as well as between WinFS and non-WinFS stores. This session walks through building a sync solution using WinFS, including configuring synchronization sessions, providing custom handling for conflicts, and implementing adapters for non-WinFS stores. Learn how to provide a great end user experience by integrating your WinFS sync solution with "Longhorn" sync UI."

    One of the biggest problems we have to today is synchronization and concurrency.  Everyone is familiar with DB concurrency, but why is it that my information is not as important as a corporation's.  If we can build the technology, then it should be.  It's funny to think that a person can say "Let me get my 'n' devices."  Who knew math terms would be used in regular speech.  By the way, it's true.  We have so many devices that we don't even know what to do with them.  I recently gave my mom my IPaq Pocket PC, because I never use it (anymore at least).  I told her she could sync her address book with it and take it in her purse.  To tell the truth, I don't think she has even powered it up yet.  I am not advocating against all of these devices.  I am saying that I am incrementally forced to stop using devices over a certain threshold, which for me is 3.  I get so annoyed with having to keep track of concurrency between data stores.  Why can't the system take care of that for me?  WinFS is on the right track.  Oh yeah, by the way, this problem is one of the hardest problems that will be faced within the next couple of years.  Researchers have been stabbing at it for ages.  I am trying to recollect, but wasn't this technology scheduled for Cairo, which should have been Win95 (I know Win95 was Chicago).  Instead, it will be released in 2006.  There is some interesting research over at CMU with a product called Coda.  Oh great, back to the old distributed file system idea you might say.  Actually, these guys have done some great things.  It is spearheaded by a guy named Satyanarayanan, but everyone calls him Satya.  I recommend this read for the interested developer.

    Do we expect too little out of technology.  I think so.  Why shouldn't we expect to have systems that keep our data in consistent and accessible states?  When I am roaming, I should have all of my preferences and data available on my laptop, and then when I get to my desktop, I want it all there.  Later I am going to go to the library and use a public computer; I want it there, too.  Like I said, this is a tremendously hard problem.  But if we look back to Distributed Computing, we all thought it would be hard to create a universal time.  But, we did it, and it was easy.  A little thing called a vector clock.  Most of that work attributed to a man named Lamport at MSR.

    So next time you look at Longhorn, ask what it can do for you.  This isn't a company slogan that overflows with the word "innovation"; this is just me telling you what YOU should expect from Longhorn.

  • Sounding Off

    Filed under:

    First of all, this is a test for my new blog.

    Secondly, in the next couple of posts I would like to add on to what the esteemed Mr. Scoble had to say in his rant on Apple. The point is well taken. Apple is shipping, so what? We don't care what is shipping right now; I don't think we need to get into an argument over quality and who will win out. But, from our perspective as designers, we care about what is in the pipeline. Microsoft has longhorn. Apple, show us what you are working on.

« First ... < Previous 2 3 4 5 6