Flex, WPF/e and the new war for developer hearts and minds

Scoble starts a discussion (Why do a reader only for one publication? (Adobe vs. Microsoft for developers)) and Ryan Stewart picks it up (How Adobe started winning developers)

I think we’ve got some fun coming on and we developers are going to be in the catbird seat as Adobe and Microsoft fight it out for our loyalty.

disclaimer: I worked for Microsoft for 8 years and I’ve been working for Adobe now for 3 years, but not directly on any of the technologies I’m writing about.

C# was first launched when I was at Microsoft and I was pretty skeptical because it seemed such an obvious attack on Java and at the time I wasn’t that interested in Java. Real Developers write in C++.

Then I left Microsoft for a start-up where our chief architect convinced us to write our system in Java, and I learned it, and I found it pretty powerful for some things. My development team was able to build a fairly complex system very quickly with few bugs by taking advantage of the richness of the language and supporting libraries like JUnit. It reminded me of Common Lisp. When you got used to writing in Java: if you needed some functionality, your first impulse was to look for it in the language itself instead of writing it from scratch. Most often it was there.

Then, I left that start-up for another start-up founded by a former softy like myself where we embraced .Net 1.0 ’cause we were using all other MS technologies and we were writing a grid-type app. I liked .Net and C# even more than Java because it was so integrated with the OS (as long as the OS was windows, which it was in our case).

Now, I’ve taken a Flex class and I have to say that I’m really impressed. It really does for RIA what C# and Java did for server-side programming. Also, it is nice to finally have a more programmer-oriented approach for developing SWFs with a real IDE! I think that C# was also really good for rapid application development and prototyping as well, but Flex is much obviously better. As someone who works on both Macs and Windows, I definitely dig that cross-platformness and symmetry.

WPF/e is really interesting, but I haven’t gone into depth with it. Why not? Well, at home I have macs only now, and at work I have my actual job to do (in C++, natch). After looking through the docs and stuff, I can’t really see how you’ll be able to author cross-platform stuff with it since it seems so crippled on other platforms. I have to say that the strategy seems pretty much like “protect the windows platform by making the tools for windows only and the experience crappy on other platforms while still talking up how we are cross-platform.” Kinda similar to the original .Net story.

I’m also concerned that this stuff could get dropped or have less contribution if MS ever does (or doesn’t) win out. (Blackbird, Windows Media Player for Mac, IE before FireFox, etc…)

The one good thing is that the competition will push both Microsoft and Adobe to continue to develop better tools and that makes us developers the absolute winners here.

some fun with C#

The only problem I had to deal with in my quickie switch from interland to dreamhost was changing the Unit Circle store from ASP pages to something else (I haven’t decided if I’m going to do a Flex thing, a zencart thing or a PhP thing yet). The first hurdle I had to deal with was that the old store used an Microsoft Access database backend. I’ve switched 100% to macs and my old PC was dead, so I couldn’t load the mdb file on my home machines, at work we don’t have the full office license, so I couldn’t use Access on my work PC. I searched around the web and found some shareware that theoretically could convert from MDB files to other types of files, but none that I tried worked very well (if at all). What I did have on my work machine was Visual Studio. On a whim, I opened up the server tab and tried adding the access file AND IT WORKED! I could browse the tables, but there was no way in VS to export them. So I wrote up a quickie C# app, which I’m posting here. Ya know, for the kids.

Some caveats:

  • I haven’t written C# professionally for a couple years.
  • I haven’t added the code to actually grab the table list from the access file and enumerate those. It is left as an exercise for the reader.
  • It doesn’t handle quoted values in table values explicitly (it passes them through, but any CSV importer will get confused).
  • I wrote it in about 20 minutes.
  • In other words, don’t judge my coding skills from this.

Here is the code.

By the way, I had formatted the code using the C# code formatter on Manoli.net which is very cool, but it completely screwed up my blog layout due to the <pre> statements and long lines. So I put it in the separate page.

celebration of cool iTunes feature turns to fear

iTunes LogoSo, I screwed up some files in my iTunes library. No prob. I grabbed them from my backup. I just dragged the whole album of MP3s into iTunes. The files got copied in and then I removed the duplicates. I had one AAC-encoded album that I did this to. For this album, iTunes only imported the tracks I didn’t have. At first, I thought that this was really cool. iTunes knows that I already have these tracks, so it didn’t bother. Then, I thought ITUNES KNOWS I HAVE THESE TRACKS. So, is there some sort of GUID in AAC? Is that GUID registered anywhere? If I encode my tracks as AAC and give them to you, can they be traced back to me? If this was some simple filename/filesize scheme, it would have caught the MP3 duplicates as well.

the frustration of zencart

I don’t know that much about zencart. I’m still playing around with it. I’m trying it out so that I don’t have to rewrite the old ASP-based Unit Circle store in php from scratch.

Compared to something like WordPress, it is incredibly clunky and difficult to configure. There are a zillion different things to set up and they are in a million different places. I understand that it is doing a lot more, but the usability on this thing is pretty bad. The other thing is that the default template is incredibly ugly. Which should be no big deal, right?

Like WordPress, there are a lot of people using it. So the zencart site has a bunch of different templates, but there are no preview images. There are a zillion other zencart template sites, but all of them are trying to sell you the same dozen templates for around the same price (I like how 10 sites are offering to sell you the exact same template, but how each will offer the template as “exclusive” to your site).

I mean, I will create my own eventually, but it’d be nice to not be forced to from day one.

Salty’s and Cutters

They stare across puget sound at each other like jealous lovers, but really they are more like brother and sister. Cutters gets the tourist traffic and serves the cruise-boat-crowd and Sleepless-In-Seattle-wannabes expensive seafood, while Salty’s gets the locals and serves them expensive seafood. In both cases you are paying for the view and in both cases the view justifies the price (mostly).

If you are a local, these are special occaison places. Places where you go to celebrate a birthday or other event. Locals know that there are many better places to get seafood in Seattle, but few with a view such as these. If you are tourist, you don’t know any better.

I don’t know if they have the same owner or if they just are stealing playbooks from each other, but both serve seafood that might be fresh or might be frozen. You’ll need to ask if you really care. To an extent it doesn’t really matter, because they will smother it in butter or cream sauces or surround it by mashed potatoes so that the flavor is lost anyway.

I find both to sort of fill a comfort food niche. You know that you’ll leave feeling full and somewhat bloated, your arteries clogging rapidly, but the food tasted decent, so you might not care (until you remember how much that you paid).

If you are going during daylight or near sunset, west-facing Cutters will be your choice. If you are having brunch or are eating after dark, Salty’s is the appropriate choice.

Get a reservation in either case.

If quality is your main concern, don’t bother with either. For the same prices, you can eat much better seafood in this town.

In fact, I can give a general tip that seems to hold up for every sea-side town I’ve ever been in: don’t eat in the restaurants on the waterfront (especially in the main part of town). They exist for tourists and will charge you too much money for average food.

I can’t think of an exception on Alaska Ave. I haven’t been to that pier-end place near the sculpture garden yet, and the bar at the Edgewater had good drinks, but I’ve eaten in pretty much every other establishment on the Seattle waterfront and the only place with a decent meal for the price is the walk-up window at Ivar’s and that is because it is cheap, not good.