Wednesday, March 28, 2007 #

VS Live San Francisco - Day 3

So, VS Live San Francisco 2007 is coasting to a stop. No keynote address after lunch today made for an awkward gap after lunch. We'd already seen all dozen vendors, many times over, the low-energy of the whole conference didn't lend much to discussions. The Gold-pass only "VIP" room was full of people watching "Poseidon Adventure" (2006 version).... Snooze. I really want to bag it for the day, but there's a talk at 4:30 that sounds interesting.... Thank god for remote access to my work desktop. At least I can get a few things done....

My overall impression you can read on my other entries..... I'll stick to the positive here. Scott Cate ruled the talks. Topical, packed sessions with lots of good info on Ajax. Second place was Walt Ritscher with some good info on WPF and WPFe.... Obviously with these things I didn't attend every talk, but of these were the best of what I attended.... I plan to Goggle these two, check out their blogs, they seem to be worth listening to....  

-Andy

posted @ Wednesday, March 28, 2007 3:04 PM | Feedback (1)

VSLive San Francisco Day 2

So no real fiascos today. Some good talks on Ajax from Scott Cate, and WPF from Walt Ritscher.

I'm still amazed at how scaled down VSLive is from past years.

Last night was the big party night. They had some contests and we giving some prizes away. A few nice things like a portable DVD player from one of the vendors, but the "big prizes" were production licenses of Sharepoint. Woo, hoo, snore. Come on, sure it might be worth 5 grand, but I'll bet nearly every developer there would rather have had a $500 Xbox 360.... Our companies buy sharepoint, we want stuff a developer can use, that we don't already get to play with from our MSDN subscriptions....

Anyway, while some of the talks are good, the overall quality and size of VSLive has just evaporated. If you can only go to one conference a year, I'd skip VSLive and go for TechEd....

-Andy

posted @ Wednesday, March 28, 2007 6:04 AM | Feedback (4)

Monday, March 26, 2007 #

VSLive - First Impressions

Ok, so I've been to quite a few VS Live's and I've seen the good and the bad, but here's my first impressions from VSLive 2007:

1st Keynote by Prashant Sridharan was good. Demo (by Sam G. (I think)) was clear and informative...

Nima Dilmaghani has some really interesting things to say, but his presentation quality--Well I've already blogged about that....

Lunch - Ok, they've gone away from the cold box lunch of past years; good. But they need a major lesson in crowd control. The lines were way, way too long.

Partners - Hello, anyone there? There's fewer booths than I've ever seen at a VSLive. They need way more, quadruple would be a start.... I've never been to a conference with this few partner booths.

The "Hands-On Center".... Uh. ok. It's a bunch of machines with XP and IE6.0.... No dev tools, no Vista, not even IE 7.0.... Ok, so I can check my email, but at a developers conference you'd think a "Hands-On Center" would allow you to play with the tools you're hearing about in the conference. Seriously sucky.

The VIP Lounge, ok nice yeah, a couple of widescreens running XBox-360's, and movies. The snack area is out of drinks, and the "private computer lab" seems to be two of the "Hands-On Center" pc's stuck in a corner....  Hmmmm.

Gotta go, my feet hurt. Yeah, no chairs in the "Hands-On Center" either.

-Andy

posted @ Monday, March 26, 2007 2:36 PM | Feedback (2)

I hate to be harsh, but...

Ok, so Nima Dilmaghani needs to work on his presentation skills...

Nima gave two talks today at VS Live about Vista development--a subject I was quite interested in. But man, watching his presentations (both of them!) was just painful. It appeared he had done no preparation, and he was unfamiliar with Vista, Powerpoint, and Visual Studio. Now the guy might be a genius, he might really know his stuff, but on stage you had to be sorry for the guy. Really Microsoft, give someone else the presentation duties. Spare us Nima ever again.

Unfortunately I really wanted to know what he was trying to convey.  I can only hope the slides and demos from his talk will be published later.... (although I doubt it, more on that later....)

In contrast, Scott Stanfield from Vertigo Software did a last minute demo of some new WPF demos his company has been working on. As he described it, he was asked to do the presentation only about an hour beforehand, but his talk was smooth and polished. The demo was very cool, and everything was really put together.

Such a contrast...

-Andy

posted @ Monday, March 26, 2007 2:06 PM | Feedback (1)

I'm at VS-Live this week

If you see me, stop by and say "Hi"...

-Andy

posted @ Monday, March 26, 2007 10:36 AM | Feedback (1)

Friday, March 23, 2007 #

Two Generic things....

I've been coding some generic stuff lately and discovered something very cool, and something odd....

The Cool:

public IList<T> SomeMethod<T>(IList<T> listOfStuff) where T : ifoo

Can be called the normal way:

IList<foo> listOfStuff; // Somehow we get a list...
IList<foo> myStuff = MyObject.SomeMethod<foo>(listOfStuff);

However it can also be called:

IList<foo> myStuff = MyObject.SomeMethod(listOfStuff);

You don't need the <> definition on the generic method.... Very cool when refactoring from a type-specific method to a generic....

The Odd:

IList<ifoo> iFooList = (IList<ifoo>)new List<foo>();

List<ifoo> iFooList2 = (List<ifoo>)new List<foo>();

The first line (with the IList) will compile fine, but cause a runtime error, with a message that a list of foo cannot be cast to a list of ifoo.

The second will not compile, with a message that a list of foo cannot be cast to a list of ifoo.

Seems like if the compiler knows #2 is no good, it should know #1 is no good...

Of course what would be really cool is if you could cast it.... And yeah, I know you can't, still seems like the framework should be able too...

-Andy

posted @ Friday, March 23, 2007 1:39 PM | Feedback (1)

Tuesday, March 06, 2007 #

If you're here because of the Jeff Atwood comment.....

Update: it looks like Jeff fixed my comment (and removed the comment I left afterward that basically said, gee my comment got messed up) rendering this post pretty much pointless.... Oh well.... Thanks for fixing my original comment Jeff!

So I wrote what was suppose to be a funny bit of ridiculous code as a comment to a comment on Jeff Atwood's blog about Curly's Law: Do One Thing.

His comment software ate the bulk of the code rendering the joke, well, on me... so if you're getting here because you clicked on my link on the comment, here's the original comment:

"Does that mean you have to not re-use i for loops? :)"

Clearly it means you should only code a for-loop once. I can only assume the prescribed code would look something like this:

public delegate void LoopProcessDelegate(int ndx);

public void Loop(int startNdx,
                           int endNdx,
                           LoopProcessDelegate process)
{
      for (int i = startNdx; i < endNdx; i++)
      {
            process(i);
      }
}

public void TestLoop()
{
      Loop(0, 9, new LoopProcessDelegate(
                  delegate(int ndx)
                  {
                        Console.WriteLine(
                              string.Format("{0} : Hello World", ndx));
                  }));
}

Isn't that much better?

-Andy

<disclaimer>
For the humor-impaired, yes, this is a joke.
Nice article Jeff...
</disclaimer>

Yeah, so it's not that funny. But hey I haven't written an entry in while...

 -Andy

posted @ Tuesday, March 06, 2007 3:03 PM | Feedback (1)

Thursday, January 18, 2007 #

ASP.NET Themes or CSS - Pick one

Yes, yes, I know pro-ASP.NET Theme people will say "you can use CSS with themes, it's not an either-or!" but my thoughts on this matter are the interaction between Themes and CSS is weak and not well integrated.

In a large sense Themes and CSS are attempting to accomplish the same thing: abstract the presentation, and assign uniformity throughout a web site. The problem I have with Themes is they don't really seem to offer many advantages over CSS, they introduce problems when using CSS, and CSS is really the standard when it comes to this sort of thing in a modern web site.

Issue #1 : All CSS files in a Theme are automatically linked into all pages that use that Theme. But wait! I have CSS files for specific controls that I only want linked to pages that use that control. Ick, I want finer grained control.

Issue #2: Backwards inheritance. We're coding in ASP.NET, we're familiar with the concept of classes, and subclasses, and how downstream classes can override behaviors from upstream classes. OOP 101, and something that flows very nicely with the CSS concept of Cascading. It's very useful too, say when you have a high-level CSS style that needs a minor tweak on a single page. In Themes it's the theme that rules, if a given page needs a minor tweak, tough.

Issue #3: Multiplicity. One Theme per page, no exceptions. Pretty inflexible in my mind. With CSS I can assign any number of classes to a markup element, and several CSS files per page. That's been quite useful in the past for me.

Ok, ok, let's look at some of the "positives" of Themes: (I'm afraid I'm going to go into sarcasm mode here....)

You can use skin files to add markup to common elements. A common example often suggested is to setup templates for GridViews. Yeah, because all my grids on my pages are exactly the same.... Oh wait, that's actually really rare...

You can use Default Themes or Themes created by Microsoft or other third parties. Woo-hoo, just what I want, my web site to look exactly like some other web site. Thank you, no.

Organization: your images, CSS, JavaScript, skins, etc is all neatly contained in a single directory structure. Ok, yeah, but I can do that with my own structure and CSS too. In fact Themes can introduce some odd resource reference problems with combined with CSS.

Ok, ok, so do I think Themes suck? No. They have a purpose, and some web developers might find them really nice and useful. However, I don't think that CSS and Themes play all that nicely, and if you're looking at doing a really CSS-based UI for your web site, you probably don't need the extra baggage that Themes bring along.

Am I missing something? Have a good example of CSS and Themes interacting? Can you offer up a solution to Issue #1 above? I'd love to hear it, leave a comment....

It's entirely possible I'm completely missing the boat here, but I don't think so....

-Andy

posted @ Thursday, January 18, 2007 3:54 PM | Feedback (3)

Tuesday, January 16, 2007 #

Barack Obama forms Presidential Exploritory Commitee

Hell yes!

I've been reading his book and I'm really impressed with this man. He understands what's wrong with partisan politics of today. He understands that most issues are not binary, black and white, neatly fitting into 2 second sound bites.... Everyone, Democrat or Republican should read he his book, and I for one really hope he runs in 2008....

He's got my vote already.

Find him here.

-A

posted @ Tuesday, January 16, 2007 9:45 AM | Feedback (3)

Desktop vs web

So I haven't written in a while.... I've been pretty busy with the holidays, but also with some serious upheaval in my latest project.... just as we were about to get into serious construction in our large thick .NET 2.0, C# desktop application we've changed gears and we're now developing a thin ASP.NET with Ajax web application that will have a small desktop component for a subset of users to support a couple of thick use cases. There were a variety of reasons for the change, and while I was skeptical at first (I've been deeply embedded in thick development for a few years now) I've seen the light and I've really been enjoying the challenge of they new development model. So, I'll probably be spewing my findings and frustrations about Ajax, IE6/7, CSS and the like here soon....

The thing about desktop vs web applications is there are differences, but those differences aren't necessarily bad. The comment that came up a lot when we were announcing the switch was "the user experience won't be the same!" And that's true, the desktop app experience would have been different; in fact in a web app the IE7, IE6 and Firefox experiences might be different. Sometimes the differences are small and subtle, some differences are large; but they are just differences, no judgements. When all is done our users will still have a great application that will allow them to get their work done; and in the end, that's what counts.

-Andy

posted @ Tuesday, January 16, 2007 8:49 AM | Feedback (1)

Wednesday, November 29, 2006 #

Oversimplification

Joel (of Joel on Software) writes in a recent article about Vista's overabundance of choices in logging off/powering down/etc.... While I agree in principle with him that there are too many choices presented in a poor way, his reasoning is a prime example of oversimplification and suffers from two flaws: he assumes his usage is everyone's usage, and he assumes the happy case.

For example of the former he writes:

"Once you've merged Switch User and Lock, do you really need Log Off? The only thing Log Off gets you is that it exits all running programs. But so does powering off, so if you're really concerned about exiting all running programs, just power off and on again. One more option gone."

Uh, yeah but we may not be the only user on the box Joel.... Two examples:

At home I run XP home edition. We regularly have three or four users logged in at the same time, however when I'm about to head off to work, or go out for a while I like to log off. It frees up resources on the box, and  why should I stay logged in when I know I'm leaving for hours? However, I certainly don't want to shut down. After all, other people have programs running in the background....

Second example: at work our project's build box is running Windows 2003. By default this allows two users to connect remotely to the machine. For us, this is fine. There's about four people who regularly access the box, but rarely for very long. However, because of this two user limit we need users to log off when they are finished working on the box.

Granted neither of these examples is using Vista, but the idea still follows. Who needs a Log Off feature? Users who regularly share a single computer. He doesn't (seem to) and thus he thinks it's a useless feature...

His second problem was Happy Case, exemplified in this quote:

"Why do you want the power off? If you're concerned about power usage, let the power management software worry about that. It's smarter than you are."

Why do I want to power off? Well I don't know about Joel, but my computers screw up from time to time. I usually leave my machines up, but when they start acting odd sometimes you just have to restart. The world is not perfect, sometime a fresh reboot fixes problems in seconds and you can get back to work.

I have another problem with the quote above, the power management software is not smarter than I am. The power management software has no idea that I'm using my laptop now, but in a few hours I'll be remote and I need every spare watt of laptop battery juice to keep running.... Sometimes I do want to shut down, and now.

So what's all this mean? Are choices bad or are choices good? Like most oversimplification problems the answer is neither and both.... Choices need to be tailored. Software exists in a non-physical world. A world where the experience I have does not have to be the same as the experience you have. My world needs a Log Off and a Power Off button. Joel's does not. That's ok, and a good UI design will allow different experiences to be established simply and easily....

It's not about the overall choices available, it's about the choices presented to you and how smart or stupid those UI's can be. Getting back to the Vista shutdown mess, why doesn't it auto-collapse infrequently used choices like other Windows menus? Why doesn't it remember the two most common choices I use and present those choices as the buttons instead of fixing them at "Sleep" and "Lock"? Why can't I right-click a menu item and hide it? There's a host of ways to design these features, I'll leave that up to others. The point is, computers can and should be smart dynamic things that learn user's patterns and anticipate our needs, not static, locked down, utilitarian, one-size fits none physical machines....

Features I use constantly should always be available, quickly and without delay or complexity. Features I use rarely should not be removed altogether, rather they should be subtle but clear and available.  It's not a boolean state, but a dynamic sliding scale....

-Andy

posted @ Wednesday, November 29, 2006 10:32 AM | Feedback (2)

Wednesday, November 08, 2006 #

Republicans given the boot--time to step up Democrats

So the election is over, the votes are being counted and it looks like Americans are just fed up with Bush's idiocy and republican corruption....

It's about damn time...

Now I could go on a rant about how terrible of leader Bush is, or the numerous corruption and ethics scandals that have brought down the previous congress; but I won't.

Today I'll just wait. Democrats, you're my party, you've got your chance. Show your leadership, show your stuff. You've got two years.... Make me proud.

-Andy

posted @ Wednesday, November 08, 2006 2:59 PM | Feedback (3)

Tuesday, November 07, 2006 #

Go VOTE!

It's election day in the US today.... The day when each one of us gets to participate in the process and choose our leaders, and our laws. In California we're choosing most of the major state government seats, a slew of propositions, and various federal and local level offices.

I don't know anyone who is completely happy with the status quo. So VOTE and make your voice heard. We face serious issues in this country and the world today; vote so your opinons get counted. 

I had an excellent civics teacher in high school that taught us the most important thing was to have an opinion. It didn't matter what that opinion was, but to form it ourselves and to have it. Today is the day we tell our opinions to our government.

Go VOTE!

posted @ Tuesday, November 07, 2006 8:42 AM | Feedback (3)

Wednesday, April 14, 2004 #

Unable to start debugging on the server....

Ever seen this error when debugging a web app in the VS.NET IDE:

Error while trying to run project: Unable to start debugging on the web server. You do not have permissions to debug. Verify that you are a member of the 'Debugger Users' group on the sever.

Well, search the net and you'll get 100s of hits talking about .NET debugging options, IIS configurations, permissions, admin access, etc.... In my case everything checked out and still no luck. Well here's another cause of this error: adding http://localhost to your Trusted Sites list.... Yup that's right. Sounds simple, but that's what did it in my case....

-A

posted @ Wednesday, April 14, 2004 8:42 PM | Feedback (167)

Wednesday, October 11, 2006 #

No parlay vous france-es

So I can write code in 5 or 6 computer languages, I can read code in a dozen or so, but when it comes to human languages I'm a complete moron.... I struggled through the requisite two years of high-school Spanish and promptly killed off all those brain cells my first semester in college.... The title of this entry comes from a particularly stupid moment I had when visiting Paris many years ago: I was in a small shop when a girl came up to me and asked, in French obviously, if I needed any help. I tried to tell her I didn't speak French, but what came out of my mangled brain probably sounded more like "you don't speak French". Not the kind of thing you really want to tell a Frenchwoman in her own country. We'll just say she was a bit offended and I didn't actually purchase anything in that shop...

What does this have to do with anything? Well, another story.... My local Home Depot has self-service checkout machines. These machines have a touch-screen interface, bar code scanner, and support various pay options. There's one clerk to oversee four machines.... Generally, if you're buying simple things with bar codes the self-service machines are much faster than waiting for real checkout person to help you. Unless you're me... ;) You see, the first screen on the touch screen interface is a language selection, you can pick English or Español.... And I'll be damned if 75% of the time I go to hit that English button and my finger accidentally hits Español.... Great now the whole interface is in Spanish and I can't even figure out how to reset to get back to the language selection screen.... I have to flag down the clerk and have them reset the thing.

Another aspect of this, I was trying to check out the Zoho writer when I was put into a demo that was, I assume, German.... Nice, I got some idea of it, but I couldn't really tell what I was looking at completely, nor could I figure out how to change the language selection.... (I'll have more to say on Zoho and Ajax in a later blog...)

So WTF am I trying to say? If your app is public and supports multiple language modes (i.e. a web site, or a touch screen self-service checkout machine) consider having a language selection bar at the bottom of every screen (or at least the one directly after the language selection) that allows you to change the mode without knowing the currently selected language. Many sites that do this right use flag icons. This usually works fine, I would presume if you speak, say, German, you know what the flag of Germany looks like... ;) You do have some issues like British flag or American, or Mexico or Spain, but those are fairly minor and usually depend on if the site (assuming web site) is based in the States or Europe...

-Andy

PS. I really try not to be an Ugly American when traveling.... I successfully butcher French, Italian, Spanish, etc all quite well.... but at least I try ;)

posted @ Wednesday, October 11, 2006 9:57 AM | Feedback (1)