Archive for the ‘Programming’ Category

WinFS is morphing….again

Sunday, June 25th, 2006

Robert Scoble responds to “news” that WinFS is no longer. Robert theorizes that the growth of the Web is at least in part responsible for Microsoft’s refocusing away from WinFS–after all, if you have limited resources, where are you going to put your big bets? Several of his commenters vociferously disagree.

The WinFS team makes their announcement here that WinFS is not dead; just that it’s going to be different. What it ultimately will be, we’ll have to see. Maybe a new name will help. What about Windows Live Database Foundation? Sounds good to me. Hehehe.

Flash succeeds as a video player

Monday, June 19th, 2006

San Jose Mercury News: Flash continues to grow as the platform for sharing videos online–whether archived or live streams.

I’ve adopted Flash for screencasts too. It’s fast, easy enough to embed in a web page, and available on a wide variety of platforms and devices. Further, Windows Media Player (WMP) and QuickTime both are “thick” experiences. QuickTime pitches you to upgrade (same with RealNetworks’ products) and WMP is just as much about other stuff as simply watching a short movie on the Internet.

To me, this is one more example of how browser technology has lagged terribly in recent years. Why isn’t video playback a feature of a browser? Why is it Flash based? Video should be a primitive, plain and simple.

Your mission is to empower the people

Monday, June 19th, 2006

Dave Winer: “Web 2.0 is wrong because it’s about technology, and the importance of the tools are that they empower people.”

Is the browser Microsoft’s worst nightmare?

Saturday, June 17th, 2006

Among the many things said this week about the possible changes going on within Microsoft, this one really gets to me:

From Jupiter Analyst Joe Wilcox: “Microsoft’s biggest nightmare is people living in the browser.”

I hope not. In fact, I couldn’t disagree more.

Microsoft is a platform company that can do just fine in the browser domain whether providing services, technologies to build services, technologies to enhance the browser, or the browser itself. We’re all climbing up the abstraction ladder and the browser is just one more step along a path we’ve been on for more years. Like batch programming before it, or authoring in assembly, or Fortran, or Basic, or C/C++, or Java, we’re working towards enabling the largest number of solutions in the most efficient means. All of these technologies exist today (some more than others), but at each step along the way, “more” was enabled. More products. More users. More developers. That’s the key. For now, the browser holds the baton. If history is any indication, Microsoft knows this game.

I’d further argue that Microsoft’s nightmare is lurking in the crevices if it does ignore the browser–which fortunately it is not showing any current indication of today. There’s IE7, Atlas, Windows Live, and on and on. All of these demonstrate that Microsoft is working to enable and improve the “browser” experience.

Now, one might argue that Microsoft isn’t changing fast enough one way or another and that there are groups that would rather defend their turf than enable growth in other areas, but that doesn’t mean there aren’t efforts to move forward in the browser that are quite significant and spot on.

No. The browser is not the host of a dark nightmare. It’s quite the opposite. The browser is opportunity.

Now I’m not suggesting that all other technologies be demoted in favor of browser-based ones, however, if you want to go where the greatest opportunities for growth is for the forseable future, there’s one place to be–the browser.

Oh, and look around. If your family and friends are anything like mine, they already are living in the browser.

WinFX is now .NET Framework 3.0

Friday, June 9th, 2006

ThreeHeadedDinasaur.pngToday S. “Soma” Somasegar, corporate vice president of Microsoft’s Developer Division, announced that WinFX will be rebranded as .NET Framework 3.0. Supposedly the change is in name only and all products will ship as previously planned.

This rebranding isn’t surprising. To me it illustrates how Microsoft is continuing to evolve its managed world.

Update: Joe Wilcox chimes in on the WinFX rebranding and improved bundling of “SDKs.” He sees how the .NET Framework is evolving into a first-class entity of its own–it’s something “competitors like Adobe, IBM, Oracle and Sun shouldn’t ignore.” Technology wise he points out the competitive landscape with Java and J2EE. I’m guessing he’s including Flash dev into that too. He’s right, although I’m also guessing that everyone pretty much understood this up to this point.

At times like this I realize I’m a three-headed C++/Win32/MFC-asaur. Ugly sounding, isn’t it? Heh. I guess that’s why most of the time I have my head(s) in the sand. OK, maybe I have one head above ground, exploring new technologies. Fresh air is good.

CNet: Google spreadsheet app to launch Tuesday

Monday, June 5th, 2006

All Web 2.0 eyes are going to be on Google tomorrow. Why? CNet is reporting that Google is going to launch a spreadsheet app, to be called Google Spreadsheets. The New York Times has further details here.

The browser-based app supposedly will not be as feature complete as Excel, however, “out of the box” it is going to enable sharing and collaboration of spreadsheets and ad-hoc databases as well as a remote autosave feature. The best part? It’s going to be free. For many small businesses these are going to be killer features.

I realize that up to this point both Google and Microsoft have been insisting that they will not be building browser-based Office suites. It looks like Google is the first to step forth and do it anyway–at least that’s what it looks like at this point. We’ll have to see what this really is. How far is Google going to take this idea?

For me, I’m really excited. I want to see how ink can fit into this. How text-based will these apps be? Will they support images? If so, ink may have a chance. My fingers are crossed….two times over.

PDF: To integrate or cooperate

Friday, June 2nd, 2006

There’s a hot conversation going on at TechMeme over the reported negotiations going on between Adobe and Microsoft over whether Office 2007 will include PDF support. Supposedly Adobe doesn’t want PDF support integrated into Office 2007.

Actually Brian Jones from the Office team is indicating that there’s a resolution underway: The PDF support will be available as a separate download. If both sides are game, this sounds fine by me. Isn’t this cooperation a good sign? In fact, Brian, if you decide to blog about this again, why not show how this illustrates how important Partners are to Microsoft? As Office becomes more and more of a platform in itself, it’s worthwhile to point out how the Office team is working and facilitating its partners.

XAML “programming”

Wednesday, May 31st, 2006

After I successfully updated the iMac (running the Tablet PC OS under BootCamp) with the latest WinFX Beta 2, Windows SDK Beta 2, and so on, I had another day of XAML programming.

Most of my XAML toy apps are up and running again just fine. The more “complicated” apps are another matter. I simply don’t know enough about all the permutations of the increasingly important data binding and “template” models.

I understand the goal that XAML isn’t intended to be a full programming language, but what it is is a bit confusing to me at times. I don’t have a sufficient model in my head that says “so-and-so goes in XAML” and “this-kind-of-stuff goes in codebehind.” Simple XAML apps are one thing. More complicated apps are another. It’ll come in time, but I’m realizing at times like this that it isn’t there.

To me, it looks like XAML keeps wanting to be a complete programming language. But that’s because I don’t get it completely. I know I don’t. My head keeps zooming ahead wanting to do more. When I start coding in XAML, I just want to do things there.

Here’s a nonsensical and incorrect XAML statement that paradoies my lack of understanding. To me, I’d almost expect XAML to have a “DoIt()”-like functional equivalent that looks like:

(Yes, this is a bad coding joke. Don’t worry this is not XAML. It’s just me poking fun at my mind.)

Of course, this gets to looking mighty messy–at least to a human. I haven’t thought through at all whether the binding, resources, and so on would look clean to a computer. I bet that’s mighty important in a language like XAML.

Installing WinFX Beta 2…

Tuesday, May 30th, 2006

I just finished upgrading my iMac running Windows XP with the latest and greatest WinFX Beta 2.

Most of my previously written WPF apps are working fine under this beta build. Whew. The step up to the February CTP was much larger.

Unfortunately, it looks like Stefan Wick’s super cool 3D postcard writing app didn’t fare as well. I’m getting several errors around the Thumb style replacement. I spent a few minutes trying to figure out how to fix this, but since in large part I don’t know what I’m doing anyway, I feel more like a monkey at a keyboard than a developer. :-)
Maybe Stefan will update his app. Hint. Hint.

MSN Messenger BOT contest

Tuesday, May 30th, 2006

The MSN Messenger and Windows Live Messenger teams are hosting a BOT authoring contest. Prizes range from an Alienware dual core Opteron to an LED binary watch.

To win the contest what you need to do is write a BOT using one of three third-party SDKs and hosting services. Entries will be judge equally based on user interaction, usefulness, creativity, and use of multiple Windows Live services.

At first glance I thought the contest sounded kind of cool. What about a Tablet PC-minded BOT that you can ask how to draw various animals–and it shows you, ink and all? However, none of the prizes jump out at me nor do I see in the SDKs what type of “ink”-slash-picture support there is. I see that at least one SDK can send voice snippets so I imagine GIF images packed with ink is supported, though I don’t see it.

WinFX goes “live”

Wednesday, May 24th, 2006

It doesn’t take much but to look at this blog’s calendar than to guess that I’ve been in heavy duty developer-mode this month.

For one of the apps I’ve been working on I’ve so eargerly been wanting to use WinFX even though it’s still in beta–so much so that I’ve been simultaneously developing a WinForms and WinFX version–just in case WinFX makes it out the door during our development cycle. I figured by developing a WinForms version I’d also give myself an out in case there are some technical barriers we encounter in WinFX.

The equation has changed, however.

Yesterday, Microsoft released the WinFX Beta 2 and better yet gave it a “Go Live” license. What’s a “Go Live” license? It means that you can develop and launch apps using WinFX right now. You do have to fill out an additional form, located here, if you want to go this route.

Of course, whether it’s a good idea to develop a product with beta technology depends greatly on what you’re doing. For my little app, it’s ideal. However, there’s a catch…

The WinFX Beta 2 Go Live license covers only WinFX components, such as Windows Presentation Foundation, Windows Communication Foundation, and so on. For Tablet-minded developers, this means you can create ink-enabled apps using InkCanvas. That’s the good part. The catch is that the companion ink recognizer, InkAnalyzer, is part of the Windows SDK Beta and hence is not covered by the Go Live license. You can use InkAnalyzer on your internal development system, but you can’t release a project with it into the public.

I imagine one approach around this license issue for now is to leverage the current ink recognizer. I haven’t tried this yet, but I think it’ll work. For what I’m doing, it’s probably a good solution anyway because I can write the same reco code in my WinForms and WinFX apps.

All of this is theory, though. I need to download and install the latest WinFX components and see how things go.

Here’s the link to the WinFX Beta 2 components. If you have a previous WinFX CTP installed, you’ll want to use this tool to uninstall it first.

Programming brick walls

Monday, May 22nd, 2006

This past weekend I spent a lot of time with my developer hat on. I don’t have much to show for it though. That’s the way it goes sometimes.

My goal initially was to clean up the Firefox plugin and post it somewhere on one of the servers so I could start getting some feedback from everyone. I’m sure there are bugs and I know it doesn’t mean that much that it can run on my Tablets.

At first I figured I could tie the Firefox addin into Community Server (CS), but then I realized how much I didn’t understand about CS, so I decided to go with something simpler. But what? For Plan B I decided I should get the plug-in to work as a SearchTip. Of course, that meant I needed to migrate the code in the current SearchTip (which is written in C#) to the Firefox plugin code (which is in C++). Normally a port isn’t that big a deal, but this was the weekend :-)
And somewhere around 10 Saturday night I started realizing that my simple Firefox ink plugin was getting pretty complicated. Did I want to do that? Or should I step back and create a simpler ink example that doesn’t involve recognition. (Actually it’s not the recognition that’s the issue, it’s the editing support that’s so crucial.)

So about 11PM I decided I should try a drawing-focused example. I have a little web-based drawing app I wrote awhile back; I could pull that out and get it to support the Firefox plugin. I played with that a bit. Then I realized–yeah, I could do another little drawing sample, but what would make this more interesting is some type of Ajax communication back to the server which could save strokes or allow people to edit each others drawings in real-time. This was a bad idea. Not because it was a bad idea per se, but rather because it was a big idea for 11 o’clock at Saturday night.

I’m not sure how long I spent going down this path, but I do remember that I was back at it Sunday morning before I was awake. Most of the time I dabbled with the Atlas Toolkit, trying to figure out how far I was going to take this approach. I was rapidly learning what I didn’t know, which was a good thing except that my “didn’t know” column was growing rapidly.

About breakfast time I realized there was no way I was going to get this done in a day–nor two days–nor three. So I demoted the project from a concerted weekend effort to a coding-while-watching-TV-in-the-evening project.

Since I was in learning mode at this point, I decided to work on some WPF stuff for the rest of the day. There went the rest of the day. First, I listened to some great PDC05 presentations on various WPF projects here. First, let me say that these rebroadcasts of the PDC05 presentations are phenomenal. I hope Microsoft does the same thing for TechEd. I learned a lot. There’s nothing like being right at the conference and being able to ask your questions in person, but it’s great to be able to pause and rewind what’s being said too.

All wasn’t perfect, however. WPF is still being designed. And all of the samples shown in the PDC presentations require at least a minimal set of changes. The best list of what changes you’ll need to make to “older” XAML samples is here.

Unfortunately, this list didn’t help me get the one PDC sample working which I was most interested in: This circular list box which illustrates how to specify custom layouts.

Actually, there’s a lot of XAML stuff on the web now that’s broken. This is part of the fun in working with software that’s not fully baked. It is very interesting to see the progression though. You can see how the XAML “model” is becoming more complete and complex. I’d go so far as to predict that by 2.0 XAML will be looking more like a full programming language than an RC file. We’ll have to see. I guess it depends on how stubborn the team is. In something as crucial as a language, design stubbornness is a good thing. Sometimes engineering stubbornness, however, can’t overcome market forces. I’m not placing any bets yet, but I have my eye on market forces winning this one. :-)
In the meantime, it sure would be nice if the XAML team could update its posted samples. Part of the challenge will be that older blog posts are no longer accurate. This is kind of like the old MSDN problem. If there was an infinite amount of time it would be nice to update all the old posts. Next best would be to link to an updated version of the code (Maybe the community can help out here.) Short of this, a note would be nice indicating that the code requires modifications (simple or not).

Anyway, I’m glad it’s Monday. I can get back to my real work. :-)

Desert Code Camp gets high marks

Sunday, May 7th, 2006

Yesterday was Desert Code Camp day here in Phoenix. It’s the first local community “conference” that I’ve been to in awhile. I’m guessing there were about 300 people. And from what I saw the code camp was on par with .NET conferences I’ve been to that have cost a thousand dollars+.

A collaboration framework I’d like to see

Tuesday, May 2nd, 2006

SubEthaEdit is a collaborative text editor (Mac only). You might liken it to OneNote with its page sharing feature. A huge difference though, is that SubEthaEdit is a text editor and was originally designed for source code editing.

The creators of the app are realizing, though, see that there are other uses, such as collaborative notetaking. At last week’s Startup School it looks like several people used the app to collaboratively create these notes, for instance.

I’ve been a long time fan of OneNote’s page editing feature and after seeing SubEthaEdit it reminds me of how much I’d like to see the rise of collaboration frameworks that can manage the high and low levels of the problem. The right framework could inspire a new generation of rich, collaborative apps. (Actually done really well, the framework could enable rich and browser-based apps.)

Is it possible to add images to Content.IE5 cache?

Sunday, April 30th, 2006

I know this might sound crazy, but is it possible to programmatically add an image to the Content.IE5 cache–as if the image had been viewed by Internet Explorer on a remote server?

It appears that it isn’t good enough to just copy an image to one of the hidden cache folders. I think the image needs to be added to the index and I assume this must be done programmatically.

Anyone know how?