Archive for the ‘Programming’ Category

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?

Thoughts on browser-side languages

Thursday, April 27th, 2006

If you’ve been thinking about creating rich, flexible, client experiences in the browser, you’ll want to check out Scott Isaac’s excellent overview of what the Live team has been learning about their efforts.

One item caught my attention above the others. Scott describes how the team is transitioning from sending XML to the browser which is then parsed and translated into JavaScript structures which can be executed, to translating the XML into JavaScript on the server. In preliminary tests he sees a performance difference of over a magnitude. Great work around.

Why did I get a kick out of this part of the post? Well, the other day Bryan (you need to start blogging again Bryan!) came over for what amounted to a “technology day” for the two of us. We hashed over various new technologies–dabbled in Carbon and Cocoa development on the Dual Core iMac, walked through a couple dozen XAML apps, explored WinFX, and I showed him the ropes with Visual Studio 2005. I guess you have to know Bryan to really appreciate this, but maybe I can help here. You see Bryan is tremendously bright and I have tremendous respect for his insights. In particular, his passion for understanding programming languages and building tools gives him a perspective that I learn a lot from. He’s also a contrarian and a bit of a crumudgeon–in a good way. He’s been authoring code for almost 30 years now–almost all of it targeted to “micro-computers” and he’s seen a lot. To put it his way, he’s seen a lot of the same mistakes made over and over again, and quite frankly it discourages him. That’s why he was so interested in walking through all these new acronyms and apps with me the other day. He wanted to assess these new techs for himself.

Anyway, back to the XML-to-JavaScript performance issue. One of the areas where Bryan’s been insisting for years that things went astray is with the language (or should we say languages) employed in browsers. He’s not impressed with HTML, JavaScript, nor XML. None of them. Why? Because he doesn’t see the gain over what they could have achieved if they’d employed some existing languages, such as Lisp or some other declarative-like language. Instead, he argues, they went off and created their own incomplete languages that are now being patched together.

Bryan would have much rather seen XML sidestepped, for instance, and something like Lisp chosen instead. Why? Lisp would not only give developers the power to represent their content, but also the power to manipulate it. HTML falls into the same category. Well, and JavaScript, CSS, XSL, and on and on are patches for some fundamentally poor choices that were made, he argues.

In his mind, he reconstructs the decisions that were made at the time this way: “We only need to do X. So let’s build a simple language that’ll do that just that. We don’t need anything more.” Statements like this will raise Bryan’s eyebrow. He’ll explain to you how that’s what you say today, but if your technology succeeds you’ll have to design for scalability now. Even if you choose to not implement everything in the language today, you have to design the language so that it can scale. If you don’t, you’ll wind up with….well….HTML, XML, JavaScript, CSS, and on and on. To him, someone saying “We’ll never need such-and-such” in a language is a red flag. He doesn’t buy it.

Of course, he knows that sometimes changing the representation of a problem a little can help to solve not the whole problem set, but a portion of it. And so he does see how these technologies have been leveraged in some creative ways to get things done. But, Bryan being Bryan, can’t help imagine what could have been.

There’s another “of course” here too. It helps a lot if you can see into the future and imagine how a technology being designed today will be used tomorrow. Yeah, it can’t be done. The best approach is to “be like a banker” and assess things based on what’s happened in the past. And to Bryan the banker’s choice would have been to constuct the Web with a more complete language.

Oh, and Bryan would all couch this with one big caveat–just to make sure you don’t make any hasty decisions: A language–or anything for that matter–that’s too general becomes, well, not so useful. There’s a balance that has to be achieved here. To me, time will tell if the choices were good.

And this takes me back to what Scott was discussing, about pre-translating XML into JavaScript. It’s rather interesting to see here what’s going on. Maybe XML is the best way to represent a problem (and manipulate it) and maybe JavaScript is the best way to glue page content together with and for the user, but it’s interesting to contemplate what could happen if XML had the expressive power to manipulate itself or JavaScript structures could become declaratively friendly enough to become a static representation of choice.

Personally, I don’t mind having more than a hammer, hacksaw, and a screwdriver in my toolbelt–if I can get things done that I want to do–but I do agree with Bryan that the right tool can make all the difference.

Developer thoughts on Microsoft Office licensing

Wednesday, April 26th, 2006

In an effort to stem the tide of pirated copies of Office, Microsoft is testing a new program that verifies whether a version of Office is licensed or not. You’ve probably noticed the Genuine Windows program that’s in force right now. Whenever you get a Windows update or download a file from MSDN, your copy of Windows goes through a verification process. So far Microsoft has done an excellent job not making the verification process too obtrusive. I hope it’s the same for Office.

As a developer I do have one concern–which really doesn’t have anything to do with the Genuine program, but rather Office licensing in general. Here’s the issue: When developing an add in for Office, such as InkGestures, you have to do a lot of testing with a wide variety of configurations. Virtual PC makes this easy from a management standpoint, because it allows five, ten, or whatever permutations of the OS, Office, and the .Net platform as needed. However, each installation requires authentication. I just can’t install a copy of Office, do a test, and blow the partition away. As soon as I bring up a copy of Office it has to get a license from the Microsoft server. Each time I do this I gulp wondering if I’ve used up all my licenses and will be unable to develop further.

Here are some test configurations I’ve already used with InkGestures (some in VPC, some on other computers):

* Tablet OS SP2 with .Net 1.1 by itself (Office not installed)
* A non-Tablet OS by itself (Office not installed)
* Tablet OS SP2 with Word and no PIAs (all updates)
* Tablet OS SP2 with Word and PIAs (all updates)
* Tablet OS SP2 with full Office install (all updates)
* Tablet OS with .Net 1.0 (no office)
* Tablet OS SP2 with .Net 2.0 with Word and PIAs
* Tablet OS SP2 with .Net 2.0 with Word and PIAs and other addins installed (and uninstalled), such as TEO 3.
* Development platform with Tablet OS SP2, .Net 1.1, Office and PIAs

So far this hasn’t been too bad, but now that I’m gearing up for testing the InkGestures add-in for PowerPoint, I’m wondering if these test configurations will do. Up to this point the test images are spread across a couple different systems (not all are running on Virtual PC). I’d really like to create a more formal test system and build these test images on a desktop with more horsepower, but I’m not sure how the licensing will work out so I haven’t done anything yet.

I’m guessing that as a developer there will be a point where I need to get more Office licenses in order to do testing and expand our product line further. I don’t know. As Office becomes more of a platform and more and more developers develop for it, licensing of Office is becoming as critical an issue as it is for the OS itself.

Does your persona matter?

Wednesday, April 26th, 2006

Robert Scoble links to this Scott Bellware essay which expresses concerns about Microsoft’s use of “personas” when it thinks about its developer customers. The story goes that Microsoft teams categorize each developer as a Mort, Elvis, or Einstein. I won’t go into an explanation of what these personas are–because I’ll probably get it wrong. I don’t have experience working with them and I’d probably miss important nuances here and there.

The article is concerned that this trio of personas over-simplifies the developer community and leads people to miss what developers are really doing. Could be. I’m guessing that Microsoft feels, however, that these personas represent their three largest pool of developer customers. I don’t know.

Personally, I don’t take offense at these personas. Call me what you will. I agree, though, that from the outside the names are a little odd and the focus a little narrow, but oh well.

Over the years I’ve seen a bunch of different classification systems. Nothing has stuck with me. I usually think more pragmatically. I often pool developers as embedded developers, system/core developers, product developers, tool builders, API designers, or developers of internally used products. My clustering is a bit more complex than this. There’s scale to consider–are there lots of customers or just a few? are there lots of deployments or just a few? Yeah, this is a boring way to think about things.

To me, classifying individual developers is only a part of the puzzle. Most great development is not accomplished by a single individual, but rather a group of developers working together. I don’t have any clever classification system for groups of developers, but I do often liken these developer teams to bands of musicians. There are the pop groups, the studio artists, the classical performers, the performance artists, and so on. Most groups don’t last. Most don’t make a hit. Some hit once. And only a very few have a hit more than once. Some push the envelope and get us to think. Some simply make our days a little more pleasurable. Some are in it for the money and fame. Some are over hyped. Some do it for the artistry. How the group dynamics play out can make all the difference and quite often sets the stage as to what the future might bring.

Phoenix gets a code camp

Thursday, March 30th, 2006

desertcamp.gifI just signed up for the Desert Code Camp–Phoenix’s own community-driven, code-code-and-more-code fest.

The Desert Code Camp is being held Saturday, May 6th, 2006 at the University of Advancing Technology. Don’t worry, you don’t need to bring your sleeping bag–the event is scheduled for daylight hours (8AM-6PM) thank you very much.

Sessions appear to span from Ruby to WPF.

I wonder if anyone would be interested in ink on the web or maybe something UMPCish? Hmmm.

First ever Visio Partner Conference to be held this week

Sunday, January 15th, 2006

The first ever Visio partner conference is being held this week. This would have been very interesting to go to. I’m beginner when it comes to working with Visio, but I’ve learned that opportunities such as these–to meet with Visio team members–is well worth the effort, time, and expense.

Calling a beta what it is

Sunday, December 18th, 2005

Layne has been struggling with upgrading Community Server beta 1 to 2. It’s been a rough road. From afar it looks like Beta 1 was more of an alpha than a beta. I’m not sure here, but quite often this is a common predicament.

A developer who I’ve learned lots from once pointed out to me the foils of “beta inflation.” Branding a project beta too early can give everyone a false sense that things are farther along than they really are. This can make it particularly challenging to manage product development–especially when it’s about time to release a product.

His advice: Demote release labels.

Call a prototype a “proof of concept.” Label an alpha a “prototype”. Call a beta an “alpha.” And think of the first release candidate as a beta. When you get near the end of the product development cycle, you can collapse the naming thereby making it seem–at least internally–that the project is moving quickly from development to commercial product. It’s quite an interesting strategy–maybe a bit too developer-empowered–but one I think about when I’m planning product releases.

Phoenix students win math and science competition

Monday, December 5th, 2005

Congratulates to Anne Lee and Albert Shieh who won the $100,000 team prize for the Siemens Westinghouse Competition in Math, Science and Technology.

“Anne Lee and Albert Shieh won the team prize for developing an improved software package that analyzes genetic data. The team developed their project, SNiPer: Improved SNP Genotype Calling for Affymetrix 10K GeneChip Microarray Data, while interning at the Translational Genomics Research Institute in Phoenix, Arizona, where their mentors were Dietrich Stephan, David Craig and Matt Huentelman.

In the process of helping with lab work and data analysis, the students identified an opportunity to improve on a commercially developed software package designed to analyze high volume genetic data. They developed improved genetic analysis software — which their genomics lab now uses — that enables more accurate and efficient identification of the genes underlying inherited disorders in humans. The team then used their software to pinpoint the mutated gene that causes a childhood degenerative disorder.” [From Press Release: The Siemens Foundation]

Both are high school interns at TGen (Translational Genomics Research), a Phoenix-based organization exploring Genomic technologies. TGen’s program illustrates the power of giving students a chance to participate in exciting new technologies. What an exciting field and opportunity for these students.

The SNiPer application they developed is a free download here. It’s a Java-based app and you’ll need Java 1.4.

Microsoft’s web services turnabout and why I don’t care about Web 2.0

Friday, November 11th, 2005

The blogs are full of reactions to Microsoft’s reallignment towards more web services.

Most discussions begin or focus around how these announcements reinforce, differ from, or completely miss Web 2.0.

I don’t really care.

Web 2.0 isn’t the issue to me.

For me it’s simple: I’d like to see more and better ways to leverage my computer as well as all that’s available via the Internet.

If something is better done on the client side, then keep it there. If it’s better done over the Internet, then put it there. And if I really had my choice I’d provide access through both. It’s not one or the other. Web 2.0 doesn’t mean 100% web-based–even if in reality I would use the web-based features 80% of the time.

That being said, there are a whole host of capabilties I’d really like to see hosted–especially where simplicity is more important than lets say personal control or flexibility.

Yeah, you’re probably thinking this is so old school. It’s obvious. And that the Web world has migrated far beyond this. Could be. But there’s so much value in the little infrastructure things–done well.

Let me lay out a scenario that illustrates the point. Take developer tools. This is a timely point of reference since Visual Studio 2005 was just launched. It’s a great desktop-bound IDE/compiler(s) and I’m hoping it’ll help me to be more productive, but really there should be more. Now to Microsoft’s credit (and through many ISVs) there are numerous solutions that can add to the developer experience. (In this case by developer I mean the small developer. Teams with 20 and under.) I’d like to see more. And I’d like to see things integrated into a loosely coupled solution that’s both browser, client/server and desktop focused.

In fact, I think a big picture solution like this could be quite powerful in the developer world. For instance, think about what it would be like if Google decided to help developers manage, search, and access their development projects and products. Already Google is the defacto standard for developer-oriented searching. What else might it provide? (Oh, yeah, Google getting into the developer tool business is unlikely, but just play along to see how powerful the package might be.)

So let’s say Google wants to attract more developers–maybe for no other reason than to misdirect the competition. Here are some possible steps:

* Buy SourceForge–sprinkle in a Windows archiving flair–which would provide a large, free platform for source code control for the developer masses. Provide third-party source code and data analytics solutions as feasible.
* Provide a free, web-based bug tracking solution that has an open architecture for third-party extensions and integrations.
* Provide a free, entry level, web-based CRM application for tracking customer issues and more importantly for customers to track responses. GMail is but just one part. Data analytics from third-parties is an upsell here too.
* Purchase CNet. Not for its editorial content, but for Downloads.com thereby providing an instant infrastructure for developers to sell and distribute their software. On day one, create a free version.

Google–or anyone else for that matter–could entice a large number of developers to come into its fold by providing services that span from archiving, source code control, bug tracking, CRM, and through selling a product and collecting money for it. Google could leave the IDE/compiler for Microsoft, Borland, or anyone else that wants it.

A key here is that all of these features need to have no-cost, low-end entry with serious, highly usable features. If there was something like this I’d use it.

Now why web-based–for all the reasons people promoted in the 90’s. One of the biggest is the no configuration issue. This is a big deal to little ventures.

Even though I’m a strong advocate of the desktop, I think I’m like most people in that I’ll use web-based solutions most of the time if they are good, free, and provide a majority of the features I need. I’ll pay for some things–but don’t count on that being the baseline.

And, yes, once again, this probably all sounds so 1.0, but what gets me is that there’s no big picture solution like this for the little developers. There are just bits and pieces. The value of the whole is so much greater than the sum of its parts.

Anyway, it’s going to be very interesting to see where Microsoft goes from here. My guess? It’s going to give us plenty to blog about for the next couple years :-)

Visual Studio 2005 still on track for release

Monday, August 22nd, 2005

CNet is reporting that Visual Studio 2005 is still on track for a November release.

Would you spec that first please?

Thursday, June 16th, 2005

I chuckled when a developer friend of mine told me today that he’s been very, very busy at work lately. Not coding, but instead working on “8-1/2 by 11 by 11 specifications.” He figures that at some point the amount of documentation for each code change will become so great that his company will realize the inefficiency of it all….and contract out the work to developers that can “just get it done.”

Visual Studio 2005 Beta 2 is available

Sunday, April 17th, 2005

I see on Scoble’s blog that Visual Studio 2005 Beta 2 is available for download by Universal MSDN subscribers.

Looking forward to an updated development environment.

Office 2003 XML schema license changes

Monday, January 31st, 2005

Dan Bricklin breaks down Microsoft’s modified license agreement for the Office 2003 XML schema. It’s a terrific idea. From press accounts I thought the idea was to let developers consume and produce the format. Turns out there are still some critical restrictions.

“…the general license isn’t as open as they might want people to believe and that they do believe in lock-in. That’s not a good signal to send the world. The fact that Microsoft it trumpeting how good this is shows they know people care.”

Hmm. These are tough strategic issues I imagine for Microsoft, but it’s great to see this change. As a developer though, I guess I have to read further. Where are my “legal reading glasses?”

Sun shares 1,600 patents with Community developers

Wednesday, January 26th, 2005

Sun will make 1,670 patents associated with Solaris available for use by open-source developers. The move follows IBM’s example of making 500 patents available to open-source Linux developers. [InformationWeek]

Want to work at Google?

Wednesday, January 26th, 2005

Recipe for getting a job at Google: Pitch in on an Open Source project. Get 20 million downloads.

That’s what FireFox lead developer Ben Goodger did.

Gotta love it.

Update: Another Mozilla developer signs with Google too. [Neowin]