UI Smackdown 2007

Summary
Adobe's Flex, Microsoft's WPF, and Google's Web Toolkit (GWT) were all discussed in an Open Spaces format at the Ann Arbor ITZone on April 4.  I'm very late in reporting how it all went, since I've been trying to catch up with the other things that I'm working on.

About 35 people attended, from various companies.  Two people came in from out of the area: James Ward from Adobe, and Chris Bernard, from Microsoft.

Feedback after the event was overwhelmingly positive.  Some people want us to do something like this again.  Bill and I agree — these Open Spaces events are a lot of fun and very educational, for everyone involved.  If you haven't read about Open Spaces, I've included a link below.

I know that I learned something in every session that I was able to attend.  My only regret is that I was only able to be in one place at a time.  I really like what the Java Posse did at the Roundup.  Because they taped the sessions and are releasing them as podcasts, I am able to listen to those sessions that I didn't attend.  Of course, they DO podcasts, while we really don't.  We will have to see if it makes sense for us to record sessions for later release.

We kicked it off with an introduction to each of the technologies, and to the open spaces concept in general.  We had quick "lightning" talks of each, before we broke up into groups to explore questions that we had about each.  We had time to do 2 time slots of 3 concurrent sessions before lunch, and 2 time slots of 3 after lunch.  We concluded with an overall session where we asked what we could do better, and if this format and location worked for people.  The response was positive.  If we have many more attendees, we will quickly outgrow the ITZone space, but for this event, it worked great.  One unintended result was that two of the groups could actually SEE one another.  We were able to gauge a little about what was going on in the neighboring session.  One person even noted that it seemed like the "other" group was having more fun and he wasn't learning anything in the session that he was in, so he exercised the Law of Two Feet, and moved over, where he actually had quite a bit to contribute.

I'll summarize the sessions that I attended and hopefully others have done the same.  We hope to do about one of these per quarter, because we find them to be great learning experiences, for our consultants, for our customers, and for the community (as well as for ourselves).

Open Spaces

Java IDEs at the Roundup

Discussions of IDEs, and the special challenges of having choice

The Java Posse has released yet another session from the Java Posse Roundup. I attended the Roundup in March, and we had a lot of great sessions, all of which were recorded and will be released over the next few months. They’re releasing about one a week so that they don’t overwhelm their bandwidth restrictions. Most of the sessions that have been released to date, were sessions that I had missed. The session that was released this week #115, on Java IDE’s, was one that I not only attended but also was responsible for convening. That simply means that it was a topic that I hoped that people would want to discuss, so I put a post-it note on the board, and people came. We had a great session, and I learned a lot.

If you want to download the recording for the session, you can get it at http://media.libsyn.com/media/dickwall/JavaPosse115.mp3, or from whatever you usually use to download such things (I subscribe with iTunes).

Oh, and yes, there’s a little bit of Microsoft-bashing, but also some accolades too. For one thing, it occurred to me that this is not a conversation that Microsoft developers would be having (i.e., which IDE to choose). Most people use Visual Studio, and that’s an appropriate choice. Yes, there are plug ins, but my bet is that 99% of the community doesn’t bother installing them. I suspect that useful things make their way into Visual Studio, much as useful things make their way into MyEclipse and NetBeans. And yes, I’m sure that there are enterprising developers who customize their environments, but I seriously doubt that Microsoft programmers face quite the same number of choices that Java programmers do when configuring a developer environment. That’s not a bash; that’s actually a compliment. Out of the box, Visual Studio is not only usable, it’s quite useful. With the Java tools, there’s not simply “a box”. There’s “the web”. Go forth, young (wo)man, and find your IDE. Then decide how to customize it. This approach is self-selecting, I think. The types of people who have been drawn to Unix and Linux aren’t put off by this approach. They see it as an advantage. I’m not exactly put off by it, but if you listen to my comments during the session, you will realize that I do struggle with the sense that it’s a waste, some of the time, but then again, I love the fact that people are so motivated to build cool tools that can be easily plugged in.

My biggest concerns with this approach are:

1.It’s hard for new developers to get started
2.Young developers, who expect an IDE as part of modern software development practices will be put off and not choose to develop in Java
3.Time spent evaluating and selecting an IDE, and choosing customizations for it is time that I don’t spend solving problems for my clients.

I haven’t looked at NetBeans in a while, and I will (soon) spend some time looking at that again. I’ve been pretty happy with Eclipse and in the spirit of getting work done rather than once again evaluating tools, I was pretty happy to stay with it. But with some of the new features that NetBeans 6 will provide, I’m thinking it’s time to look at it again.

In any case, what I got out of this session after experiencing it both in person and later, as an observer, I took away the following:

1.We all like (and alternately hate) our IDE's. Even if our "IDE" is vi. 😉
2.Everyone struggles to find that sweet spot of plugins to use with their IDE of choice.
3.If you are a plugin "developer", write good docs and promote the tool wisely so that others can learn about it. Don't produce a 1 hr video (not kind to searching). And make sure that the Java Posse knows about your plugin/tool.
4.A rating system would go a long way toward helping the mere mortals among us to help find cool and useful plugins, and shorten our own individual evaluation cycles.
5.nbextras is a good place to look for plugins for NetBeans.

I think that *** said it best. It really comes down to community. Active participation within the community, sharing about tools, etc. is really essential to knowing what you can do better.

NetBeans
Stable Release (5.5)
NetBeans in Progress
Milestone releases
Eclipse

IntelliJ's IDEA

Mylar
Plugin for Eclipse, discussed in the session
Findbugs
Plugin, discussed in the session

Kathy Sierra, Jake Baker, and online threats

Here’s a link to the interview on CNN that included both Kathy Sierra (one of my favorite bloggers) and Chris Locke (one of the bloggers mentioned in her post as being involved with the meankids site).

http://onegoodmovemedia.org/movies/0704/gma040107locke_sierra.mov

I haven’t posted anything about this on my blog since last week, when I saw her post about the threats. I offered her some support in the comments section of her blog, but I have been struggling with what to write myself. Honestly, I didn’t know Chris Locke or anything about meankids before this incident, and my life has not been improved by hearing about such mean-spirited behavior. I think it’s unfortunate that they have been given a lot of publicity now, and for that reason, I refuse to post any links about them.

But the worlds where computing and marketing meet have been dealt a great blow by Kathy taking a hiatus from blogging (I hope it’s just a hiatus), and I feel like I want to add my two cents to this entire mess.

My company uses moderated comments. Is this censorship? Sure. Would we sensor out comments such as some of those posted on Kathy’s blog? Absolutely. But what Kathy could NOT censor were comments on OTHER people’s blogs, and those threats were much more revealing and frightening than the anonymous comments that were on her blog (of course, I only know what remains, not what might have been removed). If someone were to post threats to me that were posted about Kathy, I’m pretty sure that I would have the same reaction as she did and stop blogging for a while. Or move to a new town and lick my wounds. Yes, I’m serious. As Robert Scoble and his wife posted, having children really does impact how you see these things. Nothing, not a job, not prominence in the community, NOTHING is worth putting my children at risk. And make no mistake, if someone had threatened me in the way that Kathy was threatened, I would see my children at risk and Mama Bear would be out protecting her cubs, not matter what the cost.

But the part that has really kept me silent about all of this til now has been my correlation between this and a local incident that happened here in Ann Arbor several years ago. The threats against Kathy brought all of that back to me. At that time, a student by the name of Jake Baker submitted a pornographic story about a fantasy rape and murder of one of his classmates, whose real name he used in the story. This is immortalized in wikipedia and in court judgments if you care to read the details. The similarities between this case and the threats made to Kathy make me sad. Most of all, the fact that the case against Jake Baker was dropped in spite of actual plans to meet a co-conspirator (my words, not those of the attorneys in the case) to carry out the actions. His right to free speech was upheld, and the judge did not believe that he would have really carried out these actions. Sadly, the case is seen as a precedent to free speech on the internet. The judge’s opinion in that case follows.

"It is not the policy of the law to punish those unsuccessful threats which it is not presumed would terrify ordinary persons excessively; and there is so much opportunity for magnifying or misunderstanding undefined menaces that probably as much mischief would be caused by letting them be prosecuted as by refraining from it."

The Jake Baker case (and the ultimate dismissal) alarmed me in 1995, and those feelings were brought back last week, when I read about the threats made online to Kathy. I suspect that a judge in a case against the leveler of the threat against her will find the same way, and that saddens me. If I recall correctly from what transpired in 1995, the idea was that since the “victim” in the story didn’t “hang out” in alt.sex.stories, where the story was published for ALL THE WORLD to see, it wasn’t viewed as a threat that she was likely to have seen. Indeed (again, if I recall correctly, and 12 years can make memories fade), I seem to recall that someone else told her about the site and about the story and that it included her name. And somehow that wasn’t seen as a direct threat, whereas if he had read the story aloud in class, it would have been considered more seriously. Well, this was pre-Google and pre-egosurfing! It’s very easy to find things like this now, so hopefully this litmus test will not be applicable.

I’m left with questions about where Jake Baker is. I sincerely hope that he’s an upstanding member of society who has regrets about what terror he caused. And I hope that the woman about whom he wrote this “fictional” story has long been able to put this behind her, and that she is wildly successful in the field of her choice. I’m sad to think that threats on the internet have not been taken seriously in the past, and that many, many women who have restraining orders suffer from very real violence as a result of “implausible threats”.

And yes, every day, I struggle with thoughts of the challenges that free speech bring, but I do participate in some online groups and I see intimidating, nasty “trolling” regularly. It is not tolerated in the groups that I frequent. There are moderators who remove objectionable, bullying posts and for the most part, this is a good thing. In many cases, I have seen valued members of online communities leave and “go dark” to avoid the trolling behavior because the moderators weren’t able to get to the posts before they were made public. This saddens me, but I totally understand why they would do this. I’m a bit “too exposed” online, but my business makes it so, and it’s a (small) risk that I tolerate for now. If, however, I were subjected to harassment of the form that Kathy just experienced, I would change my behavior. My family is worth more than an online presence.

I truly enjoy Kathy’s blog. The insight that she has provided in the year or so since I have been reading has been invaluable to me. Her wit and her insight are a unique offering to the community. Her way of looking at things, and of getting others to look at things is important is why I will keep her in my list of blogs, and why I hope that she will return someday. In the meantime, I hope that there are things that we can do to make this online community a safer place to be. If that means less anonymity, I’m (personally) willing to accept that.

It’s a busy week in Ann Arbor!

I’m still trying to finish up my blog from my visit to Microsoft last week (and from the Michigan Celebration of Women in Computing over the weekend), but I wanted to make sure that I mentioned the busy week that we’re having in Ann Arbor this week.

James Ward, Flex evangelist from Adobe, is coming in from Oklahoma City to present Flex both Tuesday night at the Ann Arbor Java User Group (www.aajug.org), at 7:00 (note the earlier time!), and on Wednesday night at the Ann Arbor Computer Society (www.computersociety.org) at 6:00 pm. While James has sent me the same abstract for both nights, he’s said that the Tuesday night event will be more Java-focused and the Wednesday night event will be more about the technology. There’s not much overlap in attendance at the groups but since I’m planning to attend both nights, it will be great to hear something different the second night.

Here’s the abstract:

Sexy Web Apps with Java, Mozilla Tamarin, and Flex

In this session James Ward will do live demonstrations and write code to show how easy it is to build sexy web apps with Java, Mozilla Tamarin, and Flex. The session will cover the programming model, Java Remoting, Pub/Sub messaging & JMS integration, Data Synchronization, Hibernate integration, charting, cinematic experiences, and media integration.

I’ve seen James demo some incredible stuff with Flex. He built a TurboGears widget with Flex at CodeMash. He demo’ed a nice bookshelf photo application there as well (using photos from CodeMash!). And, he showed a demo at the Java Posse Roundup that used transparent pages from an old medical textbook … wow! To be able see the transparent pages turn, and to be able to see through them to the previous page is REALLY cool, and really does give you a flavor for the compelling interfaces that can be built with modern technologies.

We’re really making the best of James’ time while he’s here. In addition to the evening events, Adobe, Microsoft, and SRT Solutions are presenting, “UI Smackdown 2007: Using GWT, Flex, and WPF”. This is a one-day workshop to learn more about all of these toolkits in an open spaces type of environment. We’re going to start off by presenting a quick overview of each, and then the participants will be breaking out into groups of their choosing to work with the various toolkits. The $90 registration fee includes continental breakfast and lunch. There are still a few slots available, so if you still want to sign up, do so right away so that we can make sure that we order enough food!

Dynamic Languages on the CLR

Jim Hugunin and John Lam

Jim created Jython and IronPython.  John is working on Ruby for the CLR, but has only recently transitioned to working for Microsoft.  I get the impression that Ruby for the CLR will be released Really Soon Now.

Just as I was getting grumpy about not having an interactive conversation, Jim and John came on to do the Dynamic Languages on the CLR talk. They turned it into a completely interactive conversation with no Powerpoint. They even turned some of the questions around to the audience, asking for our input. This was SO much more interesting for me, at least, and for the speakers as well, I expect.

The guys took questions:

1.Ruby or Python: Which sucks less? Use the language that fits your mind best. Some people work well in Python. Others have that same experience with Ruby. It’s not necessarily a fundamental difference in languages, but rather a difference in minds. Not a huge argument that one is superior to another. But comparing either to Javascsript is a different question. That language is impoverished. Doing DSL tricks is easy in Ruby and allows people to write closer to the problem domain.

2.How are you going to lock us into your platform? IronPython has always been about being completely compliant implementation of Python and completely integrated with .NET. To do both is a lot of work. So, in Python “strip()” removes whitespace, but in .NET “Trim()” removes whitespace but is illegal in Python. But if you import clr, then for that file ONLY it is allowed to run s.Trim(). So the parts of your code that are doing pure data structures or pure algorithms can ignore whether you’re working in IronPython. Being up front about wanting people to lock into .NET. By providing really cool libraries, they will lock programmers into .NET? Strength is that you can write Mac-specific or .NET-specific code. Pure Python code works everywhere. Python has a huge wealth of pre-existing modules. Those written in Python will work (or it’s a bug in IronPython). Those that are written in C are more problematic. FePy project is a community based project that includes a lot of modules that fill in these gaps.

3.What is the plan for PHP? Would PHP running on .NET, would that be convincing to switch. Not really, so it doesn’t really look like there’s interest. Microsoft is doing dynamic languages because it’s interesting to a group of developers.

4.What is it going to take for Rails to run on top of .NET? Imagine it happens. Is it a good idea? Deployment is a pain in Rails. Want to sell into .NET companies in the enterprise. What it’s going to take is a good business reason to want to use it. Developers need to want it.

5.When is the veil of silence going to be limited? Jim went dark for 8 months after coming to work at Microsoft. IronPython is being run as an open source project with an open mailing list. IronPython 1.1 was just released. Incremental releases were driven by user bug reports in an open, interactive way. Python 2.0 more modules, end of year. John’s only been at Microsoft for 2 months, so he will start becoming more open soon.

6.Why dynamic languages? There are millions of programmers who clearly love dynamic languages. It works for them. Let them program in a way that they enjoy and can be productive. More expressive. First refactoring tool written for Smalltalk. First unit testing framework written for Smalltalk. Good ideas have come out of the dynamic language community.

7.Do we want to run the CLR in IE? Killer fast Javascript and Ruby in the browser would be compelling. Performance is the big thing. Testing, running javascript on IE. As we create more sophisticated apps, there’s no visibility in the CLR. But, would you put it in Firefox too?

8.Mono? Mono doesn’t work well. Winforms and GTK# and supposedly it’s compatible. Some say it runs beautifully and some say it doesn’t run at all. Mono regularly runs IronPython.

9.Should dynamic languages be an Intro CS100 language? Yes, dramatically lower barrier to entry. Number of things you need to know to write a program in a static language: classes, methods, static method calls. In dynamic languages only need a function call or statement to write Hello World. If you want to talk about the essence of programming, it’s about control flow and data structures, not types. But the lower concept count means that people with less programming experience can write in dynamic languages. Means that it might have an impact in terms of nonprogrammers writing code. Introducing patterns on top of the language adds a different level of complexity. Malleable syntax in Ruby allows for custom languages like Rails DSL. The ability to create DSLs in Ruby is interesting.

10.What about IDE support? Today, for IronPython, Visual Studio SDK shows people how to extend Visual Studio. It includes IronPython integration (all written in C#). Minimal intellisense support, ships as a sample. Left to developers to extend. The lightweight solution to an IDE is a real challenge. Can use the debugger today. The best part of IronPython/.NET integration is availability of the debugger. Profiler works poorly. Infrastructure issue that needs to be solved fairly soon. RubyCLR: John demo’ed an IDE that he worked on before he came to Microsoft. He was running on a Mac, running RubyCLR. He used WPF with Ruby, using Ruby metaprogramming stuff. This enabled him to reduce the number of things he had to type.

Summary of the first morning at the Microsoft Technology Summit

This has been an interesting day so far. There were a lot of interesting topics, and the speakers were very knowledgeable (and all have very cool jobs). Unfortunately, I have been spoiled by the Open Spaces conferences that I have attended. While many of the speakers provided ample time for questions, there’s still the sense that there is a speaker and an audience. There’s a stage, and powerpoint. There’s a presentation. This is NOT a conversation such as I am used to in Open Spaces. I’m not just picking nits here. I’ve been spoiled by the idea that it’s a democratic conversation where opinions are freely exchanged rather than topics are handed down. There’s clearly a leader directing questions. And I’m pretty sure that the speaker isn’t getting much out of the conversation either. If the goal here is to get opinions from the non-believers in the group (and I think that’s part of it), then this isn’t going to serve Microsoft as well as having an open conversation with the participants in discussions where the participants set the agenda and we all sit around in a circle and talk. I had many interesting conversations last night at the evening reception and some today at breakfast too. Looking forward to the breaks and lunch and while I’m actually learning things in the session, I’m not actively engaged. I’m sitting here, taking notes. And reading email.

Day 1: MTS07 – Kevin Schofield, Microsoft Research

Kevin Schofield, General Manager, Microsoft Research

The second session of the day was given by Kevin Schofield, General Manager, Microsoft Research. He has a cool job!

Microsoft Research was modeled after research at Carnegie Mellon University. Researchers pick the problems, independently, across the breadth of computer science.

Microsoft Research is very aggressive about publishing papers (3700 papers in 15 years). Now that it’s a mature organization, it releases hundreds per year.

Academic programs – don’t tell researchers who to work with, and encourage publishing. They are trying to drive forward through research and they also hold workshops, to which a lot of people are invited.

Microsoft Research Mission:

  • Advance the State of the art in our chosen areas of computer science
    • Making computers easier to use
    • Reducing the cost of computing
    • Making software developers more productive
  • Transfer the resulting technology to Microsoft businesses
  • Ensure that Microsoft has a future

·         Provide Corporate agility – rapid response to change

    • New Technologies
    • New competitors
    • New Business models

·         Reservoir of technology

 ·         Pool of Expertise and smart people

He did a demo of Gigapixel panoramic photography. The zoom was incredible! We started out by looking at a photo of the Seattle skyline and ended up zooming far enough in to see 9 people standing on the observation deck.

Looking at surfaces with Vision.

He also showed us some research that Andy Wilson has done, prototyping interacting between the physical and virtual worlds. The video was cool, but I think that this demo, which was done by a separate company about which I know very little, was better. I had previously seen this demo at the Java Posse Roundup.

He also showed us some data from a study that they did using a “Sense-cam” with memory impaired subjects. These people were recorded for 1 day using a sense-cam (that video-recorded everything that they did, and then they were told to watch the sense-cam recording every day for 2 weeks. Not only did their memory of that day improve, but they were able to recall more and more details as time progressed. The surprising result was that they could still remember for 3 months after stopping. This was a small study, but it had some interesting results (not known if they would be repeatable). Microsoft is now working with memory researchers around many different memory impairments to see how this might help people maintain memories.

Microsoft Research addresses challenges for the company. Kevin described some of those challenges as follows:

  • Today’s CPU architecture: heat becoming an unmanageable problem
  • Power density too much of a problem. That’s why going to multi-core.
  • But, no generalized models for highly concurrent software.
  • Third problem: code is too big

 

How to fix:

Build smaller components that are loosely connected. Achieve verifiable composability

Loosely coupled, asynchronous, concurrent, composable, decentralized, resilient systems

Video for Kids about careers in CS

Day 1 at the MTS07: Keynote

Keynote:

They keynote was delivered by Bill Hilf. Bill comes from the open source community but now works for Microsoft, as the General Manager of Platform Strategy. His intent is to build the community, for the benefit of the software community as a whole as well as for the benefit of Microsoft. Bill seems to get the idea about how open source can benefit Microsoft, and how collaboration can help as well.

Bill is unapologetic. Microsoft is in the OSS to make more money. For him, this is not an emotional process. By building partnerships with other companies, he can sell more software (licenses, etc.). They sponsor every open source conference, to some extent. They will speak and sponsor at every event.

Port25 is the community front end for communicating the strategy and intention coming out of the open source lab.

http://port25.technet.com

Codeplex is open source community for developers, based on Visual Studio

Bill described a set of lessons about cooperating as well as competing with other companies, that he has taken from his favorite video game: Official Strategy Guide, World of Warcraft

Collaborate and compete, but there are challenges to doing so:

  • The Observer Effect – when you enter into an environment you change it by becoming a part of it
  • Balance – how much to compete, how much to cooperate
  • Perceptions – small but loud open source philosophers.  They believe that commercial software shouldn’t exist.  Huge base of people who write and deploy code and make policy about code: much more pragmatic.  Understanding the audience is important, and don’t target the business policy to the philosopher.
  • Red Oceans and status quo – what could you build?  Windows and Office are existing markets that make a lot of money.  Moving those markets is not a trival task. 
  • Focus – limited resources
  • The benefit and bane of history.  History of Microsoft, what has been problematic, what has been done and what they don’t do well.

 

Things that matter include:

  • Relationships
  • Platforms
  • Communities
  • Ecosystems
  • Value
  • Making Money

 

Lessons:

  • Patience is the key
  • Learn what you can handle
  • Invest in friends and skilled allies (hire people smarter than yourself)
  • Identify goals and suitable targets
  • The right place at the right time
  • Use all resources – “play long, play hard, and use as many sources as you see fit”

 

Port25
Community front end for communicating strategy and intention coming out of open source lab
CodePlex
Open Source Community for developers, based on Visual Studio

Bill Wagner on DotNetRocks

Check out Bill Wagner’s latest appearance on DotNetRocks, Show #223. For anyone who doesn’t know, Bill is my business partner and author of Effective C#, The C# Little Black Book, and various articles. I haven’t listened to his DNR podcast yet, but I plan to listen to it on the way home from Redmond tomorrow.

Bill on Dot Net Rocks

UI Smackdown 2007 Early Bird Expires Today

If you’ve been planning to attend the User Interface Smackdown 2007 event to explore GWT, Flex, and WPF, today is the last day to get early bird pricing. At close of business today, we’ll be updating the pricing, so if you’ve been planning to attend and have just been procrastinating, the time is now.

We’re also getting really close to reaching capacity for the event. Unfortunately, the “Buy now” buttons for Google checkout don’t seem to support limiting quantity, so we’ve been manually watching registrations.

On a more technical note, I’m going to have to look into tying into the Google checkout API, I think. My wish list for Google checkout includes support for limiting quantity, being able to specify how many items to buy at a given time, and being able to add a comment field, so that people can manually add information about who they are registering. That’s probably a bit much to ask for in the Buy Now button realm, but hey! Anyhow, I’m looking forward to diving into the Google checkout API to see what we can do with it.

And, back on topic: register now if you’ve been planning to attend. Hope to see you there!

Registration link

UI Smackdown 2007 Event Details