October 2007 - Posts
I read this post from Mozilla labs a few days ago. I can't sleep so why not blog.
What is Prism?
"Prism is an application that lets users split web applications out of their browser and run them directly on their desktop."
Well I can't disagree with that.
"Unlike Adobe AIR and Microsoft Silverlight, we’re not building a proprietary platform to replace the web."
I can disagree with that.
Let's start with AIR. If AIR is a platform then FireFox is a platform. AIR has the webkit engine to render html/css/javascript and load swf files. Same as FireFox. How is it replacing the web? AIR solely exists to display web content on a desktop. Maybe I'm ignorant on the internal working of AIR, but it seems to me to be essentially a web browser that allows some offline storage.
I could be wrong, but Silverlight is not a proprietary platform replacing the web. There is the open source version, Moonlight which makes it non-proprietary. Secondly, it extends the web platform not replaces. How is Silverlight a web replacing platform but Javascript is not? Both are programming languages on the web that run on the client to create richer experiences. The only difference is that Silverlight has to be added as a plug-in, but browser developers have already built-in support for Javascript.
"Prism lets users add their favorite web apps to their desktop environment. When invoked, these applications run in their own window"
Maybe I'm over simplifying this but this is basically opening a new browser window for each app and removing the browser chrome? And I need to download a separate runtime for that innovation? If I download a runtime isn't this a new platform?
Granted it's still new so they have other things planned:
"Prism isn’t a new platform, it’s simply the web platform integrated into the desktop experience. Web developers don’t have to target it separately, because any application that can run in a modern standards-compliant web browser can run in Prism....And while Prism focuses on how web apps can integrate into the desktop experience, we’re also working to increase the capabilities of those apps by adding functionality to the Web itself, such as providing support for offline data storage and access to 3D graphics hardware."
I'm curious to see how offline storage is implemented without developers targeting that in any way. Same with 3D acceleration. That clearly won't involve and code changes.
After you add those changes it seems like it really is the same as AIR, but "Unlike Adobe AIR [..] we’re not building a proprietary platform to replace the web."
A few things bothered me about that post:
- It seems the authors either misunderstand Prism or Silverlight/AIR
- The general insinuation that MS/Adobe are trying to F**k up the web with proprietary platforms. "we’re not building a proprietary platform to replace the web. We think the web is a powerful and open platform".
- "Ideally you shouldn’t even have to download Prism, it should just be built into your browser." - Yeah, so should Silverlight and Flash. I don't want to have to install those either.
I am curious to see Silverlight running in Prism though. Actually I would much prefer to see Silverlight running on AIR. It's like a platform within a platform within a platform. The mind can barely fathom.
Long live proprietary platforms that replace the web!
Technorati Tags:
Silverlight ,
AIR ,
WPF ,
Prism ,
Mozilla
MOSSCamp is less than 2 weeks away. Don't forget to register now.
All attendees get a MOSSCamp t-shirt designed by our Sr. T-Shirt Designer, Erik Klimczak.
A couple thoughts on the event keynote. Does anyone attending have ideas? One thought I had was to make it a Collaborative Keynote -- harnessing the collective wisdom of the audience. I don't know about most of you, but I can't listen to someone lecture for more than 5 minutes without zoning out. What I propose is to have someone be the keynote moderator.
The keynote moderator aka Camp Counselor can start off by asking "What can SharePoint do for you"? As people in the audience answer, we can build a discussion around the typical information that would be delivered in a keynote SharePoint overview. At most events, people attend, eat pizza, listen and leave. One of the primary goals of this event is to foster group ideas and build connections between SharePoint developers that spread beyond this event. This is your chance to share knowledge and build a community around fellow SharePoint enthusiasts. I think a collaborative keynote would be the best way to get people talking to each other and set the tone of group participation for the rest of the day. Between everyone in attendance, we should be able to build a complete overview of SharePoint.
During the keynote discussion, we can then develop a list of breakout sessions. If someone starts talking about SharePoint Wikis and you want to learn more, it's your chance to volunteer to organize a breakout sessions on SharePoint Wikis.
I'd also encourage everyone to use the wiki to take notes to help spread the ideas we discuss.
Any thoughts? Collaborative Keynote or 60 minute PowerPoint presentation?
Also, if you're blogging about MOSSCamp, be sure to tag your posts as "MOSSCamp"
Here are some people that have been covering MOSSCamp:
http://timheuer.com/blog/archive/2007/10/26/sharepoint-devcamp-chicago.aspx
http://larryclarkin.com/MarkYourCalendarsMOSSCampOnNovember9th.aspx
http://blogs.msdn.com/angelab/archive/2007/10/22/mosscamp-in-chicago-november-9th.aspx
http://phacker.wordpress.com/2007/10/25/chicago-mosscamp/
http://davebost.com/blog/?p=326
Big thanks to Larry Clarkin, Dave Bost, George Durzi, Chris Kadel and Joel Wurfel who are helping organize this event.
My friend Kurt Brockett at IdentityMine started blogging again (at least somewhat more regularly for the moment) I was reading some of his older posts and I found one post entitled WTF is WPF. He talks about the wow factor created by re-branding WPF/E to Silverlight and competing against cooler named products like AIR, Flash, Carbon, Cocoa, etc. Well, you can just read the post.
Unfortunately he didn't have any name ideas. Kurt, I'm a little disappointed in you. I thought your business card said Director of Product Management? This should be in your wheel house.
Here are my ideas:
| Name | Description | Rating (1-5 Monkeys) |
| RIALITY | Acronym for "Rich Interactive Applications, Like Totally. Yeah!"
| Should play well with the pivotal teenage silicon valley girl developer demographic. Otherwise, not so good. 1 Monkey
|
WPF Ultimate WPF Home Premium WPF Home Basic WPF Business WPF Enterprise | Part of the problem with WPF is that it's a vague, all-in-one framework. What if I use my WPF for home entertainment? Or business productivity? I need an edition of WPF that's right for me. Some type of comparison table would help. Like if I don't care about dependency properties, I don't need WPF Ultimate. WPF Home Basic Ideal for the casual developer who only needs to display photos. Easy to develop and maintain. XAML? What's that?1 Don't worry, WPF Home Basic is all wizard based. No glass for you! WPF Business WPF Business is the first edition of WPF designed specifically to meet the needs of small businesses. You'll spend less time on technology related issues like coding-so you can spend more time making your business application look pretty. WPF Enterprise Designed to significantly lower development costs and risks, WPF Enterprise meets the needs of large, global organizations with complex 2D animation and text beveling effect needs. WPF Home Premium WPF Home Premium is the preferred WPF edition for home desktop and mobile PC applications. It provides a breakthrough unified programming model that brings your UI into sharper focus while delivering the Storyboards, StackPanels, and Routed Events you need from your PC application at home or on the go. WPF Ultimate WPF Ultimate is the choice for the developers who want to have it all. Easily shift between the worlds of productivity and play with the most complete edition of WPF. Ultimate provides the DockPanel, StackPanel, and Grid controls needed for work, and all the video brushes that you want for fun. Specifically, WPF Ultimate offers all of the features found in WPF Home Premium, including Labels, StackPanels, and Routed Events. It also offers all of the features found in WPF Business, including DockPanels, Resource Dictionaries, and Buttons. And WPF Ultimate has all of the new Dependency Properties and Data Templates that help take WPF to a whole new level of programmability. In addition, WPF Ultimate includes support for new animations, including inverted negative 3G dive, counter-clockwise swirl, the shark and other new, theoretically impossible mind altering effects. Exclusive to WPF Ultimate are WPF Ultimate Extras. WPF Ultimate Extras are add-ons that extend certain controls in your application or just make programming more fun. WPF Ultimate Extras currently planned include: - Really Big Button
- Bouncing Textbox
- Möbius Label
- Spinny Thing
| Has the potential to create confusion in the development community. Success of WPF Ultimate is also dependent on the release of the highly anticipated WPF Ultimate Extras. .5 - 3 Monkeys depending on the edition |
| Heavymetal | WPF/E -> Silverlight WPF -> Heavymetal Get it? | Yeah, I didn't think it was too funny either. It was Kurt's idea. 2.5 Monkeys |
| Nothing | I always thought the Silverlight name was somehow related to "Flash". What does a flash look like? A silver light. What does AIR look like? Nothing*. *Unless you live in Mexico city, then it's a black ominous cloud of pollution. But Black Ominous Cloud of Pollution doesn't have a nice ring to it. | Tough call. When someone asks what you are working on you can say "Nothing" - Short, easy, and probably an accurate description for most corporate developers. 3 Monkeys |
| EyeCandy | From Wikipedia: "Eye candy is something that is most remarkable for its visual appeal." Hmmmm... not bad. WPF does allow you to create rich graphics with holographic 3D inverted color changing rotations all while displaying a nice Apple-like reflection. | From Wikipedia: "In computer software, especially in operating systems, too much eye candy is often criticized." Oh. 2 Monkeys |
| Seven | I overheard this conversation the other day: GEORGE: Oh, no no no. Course not. I got a great name for our kids. A Real original. You wanna hear what it is? Huh, you ready? SUSAN: Yeah. George uses his finger to draw a number 7 in the air, accompanying the Strokes of his digit with a two-tone whistle. SUSAN: What is that? Sign language? GEORGE: No, Seven. SUSAN: Seven Costanza? You're serious? GEORGE: Yeah. It's a beautiful name for a boy or a girl...
| It's a beautiful name for a boy or a girl.. or a unified programming model for building rich Windows smart client user experiences that incorporate UI, media, and documents. Seven is also the number of syllables in "Presentation Foundation". Coincidence? I think not. 4 Monkeys |
Seven is not bad. But I have a better one. I'm going to call the WPF team tomorrow. It'll go a little like this:
Me: Awright, I tell you what. You look like nice people, I'm gonna help you out. You want a beautiful name? Soda.
WPF Team: What?
Me: Soda. S-O-D-A. Soda.
WPF Team: I don't know, it sounds a little strange.
Me: All names sound strange the first time you hear 'em. What, you telling me people loved the name Silverlight the first time they heard it?
WPF Team: Yeah, but uh... Soda?
Me: Yeah, that's right. It's working.
WPF Team: We'll put it on the list.
Me: I solve problems. That's just what I do.
Plus, developers love Soda. WPF is now Soda, the most advanced desktop RUCCA.
1Adam Kinney a.k.a the Silverlight Surfer explained to me that XAML was like XML with more tags. Cal Schrotenboer said that comparing XAML to XML was like comparing a lawn mower or a bike to a car. Lawn mowers and cars do both have 4 wheels so they seem similar. Plus you can race both of them. Confused, I went to Cal's blog at http://www.wpflearningexperience.com/
Ooooopps.
Thank goodness Kaspersky's got my back.
Technorati Tags:
WPF ,
Windows Presentation Foundation ,
Trojan-Clicker.JS.Linker.w ,
Kurt Brockett ,
Soda ,
Adam Kinney ,
Nothing ,
Ominous Black Cloud of Pollution ,
Cal Schrotenboer ,
Lawn Mowers ,
Silverlight Surfer
I've decided to start a new feature called "Monkey's Mailbox". It's kind of like Mossberg's Mailbox. Basically send me any technology related questions and I'll select a few of the best each Friday to answer on this blog. You can email your questions to kmarshall at claritycon.com (put "Monkey's Mailbox" in the subject). Feel free to ask anything about technology from "How do I use BitTorrent to replace my Netflix subscription?" to "How do I use LINQ in a tail recursive function?" or even "Of Leopard's 300 features, what are the top 275?".
Why should you email me instead of grandpa uncle Walt? 2 reasons.
- If you haven't noticed, Walt is big time. Chances are he gets a lot of questions and your's is probably sitting in his Junk Mail folder. I on the other hand will be lucky to get one question. Chances are I'll answer it.
Unlike your typical PC guy I won't make fun of you for being computer illiterate - Would you ask your grandparents for computer advice?

I didn't think so.
So start sending in those questions. The Monkey's Mailbox is empty.
I'll be attending Silicon Valley Code Camp later today with my co-worker Andrew Karcher who is presenting a couple of sessions. I'll be live Twittering the event so you can follow along at http://twitter.com/ksmarshall Stop by and say "what up" if you're around..although you probably don't know what I look like.
Look for the guy in the suit.
Big thanks to Peter Kellner for organizing this event. It's hard enough planning for an event with 50 people let alone 907. Although he said he had pizza for about 350. Considering I can out eat a small Trinidadian family, I think there might be a pizza shortage.
Since moving to SF, I've been able to attend lots of cool, developer focused events. SF has a thriving tech community that has been a huge change from my experiences in Chicago. Over the past view months I've been involved in organizing some events for developers in Chicago like Facebook Developer Garage & SilverlightDevCamp with the goal of creating some enthusiasm around technology and bringing developers together to help build the tech community. The latest one I'm co-organizing is MOSSCamp on 11/9.
MOSSCamp is a half day event designed for developers to discuss the latest topics about developing on SharePoint. The idea is to have the attendees organize the sessions they would like to see and have everyone participate. Kind of like an unconference. Although in Chicago it takes a little more prodding to get people to participate so we have a few sessions planned ahead of time. I would prefer if none of the sessions were pre-planned and it was more spontaneous, but we'll see how it plays out. We are planning to be flexible about the which topics we cover and who speaks, so the session list on the wiki is only tentative and anyone can add new ideas.
A couple of ideas I had to get more attendees involved are the SharePoint Airing of Grievances and the SharePoint Customization Show and Tell.
The Airing of Grievances was inspired by the Seinfeld Festivus episode. The format will be that attendees will have a chance to get in front of the audience and tell everyone how SharePoint has disappointed them in the past year. Ideally we will be able to address some of those issues thought breakout sessions. If not, at least it's a chance to vent. There may even be some members of the SharePoint product team in attendance to listen to your grievances directly. Don't be shy. Tell them how you really feel.
The SharePoint Customization Show and Tell is a chance for everyone to get in front of the audience, show off their SharePoint mods and explain how you did it in 3 minutes. The 3 minutes will be strictly enforced so think about what you want to say :) Almost no one likes the default SharePoint look and feel so show us how far you can take the customization. The less SharePointy the better.
If you have any ideas for other events in Chicago that you'd like to organize or you would like to organize a MOSSCamp in your city, send me an email at kmarshall at claritycon.com.
Here are the details:
Date: Friday, November 9th
Time: 11:00am ish - 5:30pm
Location: Clarity Consulting 1 N. Franklin St., Suite 3400, Chicago IL 60606
Registration: Please register to reserve your place at MOSSCamp.
Website: http://www.mosscamp.net/
Contact: MOSSCamp@gmail.com
Microsoft, Clarity, IMG, Revere, and Sogeti would like to invite you to join us for a FREE developer event where we dig deep into the real world uses of Microsoft Office SharePoint Server 2007. This event isn't your typical introduction to MOSS; we will discuss topics you are guaranteed to come across when deploying MOSS in your organization or for a client. Our goal is to bring together MOSS (a.k.a SharePoint) developers in the Chi-town area together to share experiences and collaborate on some cool SharePoint stuff. If you're the "SharePoint guy" (or "SharePoint gal" as the case may be) then this is the conference for you.
Familiarity with MOSS isn't a pre-requisite to participating in this event, however, we will not be spending much time discussing out of the box features. We will look at how you can take MOSS's features to the next level and apply them to your projects.
MOSSCamp Chicago will be organized in unconference style. We've put together a bunch of sessions which we believe will be useful for all attendees, however, we're hoping that you will participate in and drive the sessions to make sure you get the most out of them. Like SharePoint, this event is about collaboration.
Plus there will be food, drinks, MOSSCamp tshirts and tons of great raffle prizes including almost every SharePoint book written.
If you have suggestions for sessions, or would like to present, please contact us at MOSSCamp@gmail.com or post your comments and suggestions on the MOSSCamp Discussion Board.
And if you don't like SharePoint, stop by our SharePoint Airing of Grievances session to voice you issues which we can try to address throughout the event.
Or submit a slide for our SharePoint Customization Show and Tell. If you have a cool example of some SharePoint customizations, make a PowerPoint slide with a screenshot, email it to MOSSCamp@gmail.com or add it to the Wiki and you'll get 3 minutes to tell everyone how you did it.
You can also view a tentative schedule and list of sessions at our Schedule and Sessions page.
While the new LINQ features in VS 2008 are great, I've had a few problems. Here is #0001. Actually #0001 is probably random crashes, but I can't really narrow that down to repeatable steps.
After dragging a few tables from my database onto the design surface, all of my LINQ code worked great. Then I added a new table to the designer and I was not able to access it using LINQ. It was on the design surface, but the code for the datacontext class was not being regenerated. I rebuilt, closed VS deleted the compiled DLLs, but no luck. Pretty frustrating. Obviously a big downside of wizard generated code is that when it's not working, there isn't much you can do.
The way I ultimately got it fixed was the following.
-
Renamed my current .dbml file, "LINQTest.dbml" to "LINQTest2.dbml"
-
Copied "LINQTest2.dbml" into the same location
-
Renamed "Copy of LINQTest2.dbml" to "LINQTest.dbml"
-
Designer regenerated code behind file for "LINQTest.dbml.
-
Deleted "LINQTest2.dbml"
Not ideal. Clearly you want to make you changes in large batches if possible. I imagine this will be fixed in the final version coming out soon. Still it's a little surprising that a big feature like this would have an obvious bug in Beta 2.
In July I decided that I'd start blogging about my experience of moving from Chicago to SF, but that only lasted about 4 posts. It's the weekend and I'm too lazy to write something original so I thought I'd move over some of my old posts from that other blog before I delete them.
--------------Note: Edited slightly to make it more work blog friendly :)
Big networking day here in 'Frisco. Not only did I leave the home office once, but twice. I went over to 111 Minna Gallery for SF Beta in the evening. Pretty cool event considering I didn't know anyone there. I did talk to one person though. They asked if I was waiting in line and I said "No". I'll count that as networking. Although, I usually prefer to do my networking online via the safety of my computer. With Facebook, I can just see someone and "Add as Friend". No awkward conversations needed. Minimal friend obligations. And if we get in a fight I can just "Remove Friend." According to Facebook I have 18 friends. Apparently several of them are "Looking for Random Play". Rrrrrrrr.....1
So the big announcement was Powerset. It was presented by a guy with a Ph.D. I feel like he may have been smarter than me so I listened.
Powerset is a Natural Language Search Engine2. Why do we need another search engine? Clearly Ask.com does everything I need. Luckily the Ph.D guy had a slide to explain.
The basic difference is that it crawls pages for meaning rather than keywords. So you can enter a natural question like "Who hasn't won the World Series in the last 100 years?" which gives different results (the Cubs) than "Who has won the World Series in the last 100 years?" (everyone else).
Apparently it can also distinguish between synonyms well. So if you search for "Rich Internet Applications", it will also return a list of "Rich Interactive Applications". It knows that Rich Internet Applications are the same as Rich Interactive Applications. Pretty amazing technology.
Can Powerset unseat our Google overloads? It'll be tough. Powerset's cost per indexing page must be significantly higher than Google's since it's reading information to extracting meaning rather than keyword scanning. To cover that longer term they'll have to combat the Google advertising machine which I think accounts for over 40% of online advertising. But if Powerset is successful in proving that it returns a more relevant result set with simpler queries, they should be able to draw enough users to attract advertising dollars. It would be interesting to see how firms would buy ads based on the meaning of a search rather than keywords.
I encourage everyone to try out Powerset or go back and give other search engines like Yahoo, Live, and Ask a try again once in awhile. While I still do think Google has the edge, it would be unfortunate if everyone assumes Google is the best and only uses it. Competition between search engines will force them all to keep innovating and constantly improve. Until my blog comes up as the first result for "Kevin Marshall", they all have some work to do.
1 I was actually trying to find the onomatopoeia for like a sexy, flirtatious sound. I have no idea what it is. Google is no help. This is why I need Powersearch. I was thinking "reow", but Urban Dictionary says "reow is the noise a cat with mental retardation would make" as in "The retarded cat said, "Reow" after it walked into a pole." Probably not the effect I was looking for. Although I am excited about using "onomatopoeia" in a blog post.
Funny side note, when searching for "rrrrrr" in Google I got this:
I'm still amazed that people actually click on Google ads. Actually I just clicked on that one so eBay gets charged. I probably have a 10K word eBay rant post in me.
2Powerset.com -- I really just wanted to use the "sup" tag again which I've never used before.
In July I decided that I'd start blogging about my experience of moving from Chicago to SF, but that only lasted about 4 posts. It's the weekend and I'm too lazy to write something original so I thought I'd move over some of my old posts from that other blog before I delete them.
------------
Being the only member of my company's San Francisco office, it's good to get out once in awhile and speak to actual people. Not that talking to the stray cat that wanders into my apartment isn't enjoyable, but I don't think he fully appreciates my sarcasm. So today I went to Lunch 2.0 at Microsoft's office in SF. Lunch 2.0 is networking event at different companies in the Silicon Valley area. Plus the food is free which was my main reason for going.
Normally I'm not the most socially outgoing person so it's always a little awkward at first. Luckily I had a bottle opener on my keychain, so I met everyone that was drinking imported beer and needed to borrow it. Am I getting to old to have a bottle opener on my keychain? It is a classy Becks one though. I want people to know I'm a high roller.
Anyway the first person I talk to is this guy wearing dark glasses who didn't really say much. It was a little like talking to Chris Moneymaker in the final round in the World Series of Poker.
I started talking about what I do, software development, flamenco dancing, etc. and he says he works for French Made TV. At least I thought it was "French Made". I'm imaging some video podcasts about wine or the latest advancements in increasing the pungency of cheese. Then he says "We have video how-to's by women dressed as French Maids." Ohhh....French MAIDS....
I really didn't know how to respond at that point. I went with my de-facto "Cool."
Then I took a big sip of my frosty beverage.
On a side note, I'd really like to try to bring Lunch 2.0 to Chicago. They have started in other cities like LA, Boston and NYC. Chicago always feels a little behind as far as the technology scene goes so I'd like to try to help organize more fun, tech related events. Lunch 2.0 in SF has really grown into a great networking event and a place to find out the latest about what companies are working on. Through Lunch 2.0 I met Kurt Brockett and Anand Iyer who helped me co-organized the first SilverlightDevCamp. Since I only fly back to Chicago about once a month or so, I need someone local to help out. I'm sure I can get Clarity to host the first one to get it started.
Technorati Tags:
Lunch 2.0 ,
Chicago ,
Becks
After I just finished posting about Popfly, I saw this post on Valleywag. I think I strongly disagree with every sentence in that last paragraph.
- "Rarely has Redmond produced such a simple, visually appealing tool for developers." - How many tools does MS produce for developers? Visual Studio & Expression Blend? Where do they get "rarely"? It's not like they are cranking out tools like Nokia makes phone models. Blend is simple and visually appealing so that makes 50% of the time at least. And even people who don't like .NET have to admit it's a pretty solid developer IDE. Plus I've already written previously
- "After playing with Popfly, talented developers will likely migrate to more powerful tools." - Umm..... talented developers are probably already using more powerful tools. Probably because they're talented.
- "But Microsoft is badly losing in the battle with Adobe's Flash."
#3 definitely deserves it's own paragraph or several.
How is Microsoft losing badly to Adobe? I'm going to assume he's referring to Flash vs. Silverlight in this case.
The most commonly cited metric of Flash dominance in the marketplace is it's 94% or so install base. I think that number is essentially meaningless for several reasons.
- Silverlight was released as 1.0 last month. Flash 1.0 was released in 1996. 10 years is just a little bit of a head start to establish an install base. If Adobe/Macromedia could not get a free product with little or no competition installed on most browsers over 10 years then I would think they were doing something seriously wrong. I would be shocked if Silverlight 2.0 or 3.0 did not have similar install numbers. At worse Microsoft could include Silverlight in IE and instantly skyrocket the number of users with it installed.
- It's not as if users choose Flash over Silverlight. Users choose to view content created in Flash and therefore need the plug-in. Since Silverlight is still new, there is still relatively little content created in it and users have not needed to install the plug-in. Development on a new platform takes some time to ramp up. Once Microsoft lines up more Silverlight content like MLB, the number of installs will increase dramatically. If YouTube switched to Silverlight, how fast would Silverlight gain ground? Outside of the zealot developers on each platform no one cares weather something is in Flash or Silverlight.
- It's not a win / loss game in terms of installs. Both can be installed at the same. Both can have 100% install base and it doesn't matter.
- How much revenue does Adobe make off of 1 additional install of Flash? $0.00? What about Microsoft? $0.00 per Silverlight install. Does Microsoft care if Adobe gives away more free Flash plugins?
So if the number of installs doesn't matter, what does?
What probably matters to Adobe is sales of their creative solutions and enterprise and developer solutions. For Adobe that amounted to about $605 mil or 70% of their revenue in Q3 2007. (ended 8/31/2007) If one developer builds a Flash game and 2 million more people download the Flash plugin, how much revenue does that bring to Adobe? $500 for the developer tool to create the game? They essentially gain nothing from the number of users with the plugin installed. They need to grow the number of developers building RIAs with Flash. Previously they had no competition in this space. Now they have Microsoft. I would have to assume that their revenue numbers will start to decline over the next few years as Microsoft gains momentum in that space.
What has to matter to Microsoft is also their Server and development tools. For Microsoft that amounted to about $3 billion or about 25% of their revenue in Q4 2007 (ended 6/30/2007). Microsoft is still doing very well in that area despite badly losing to Flash. Microsoft previously didn't really have a competitor to Flash. Every developer/designer they convert to the Microsoft platform from Flash hurts Adobe's core business of creative solutions. The same isn't necessarily true.
Additionally, I've always viewed Microsoft's developer tools as a means to sell more server products. I don't know what % of that $3 bil is dev tools vs servers, but I'd imagine that servers are a much larger share. Silverlight is a means for them to sell more servers like DRM servers, digital asset management servers, and streaming servers.
To sum it all up I think Microsoft could just give away their Silverlight development tools and the plugin and it will still create more revenue for them through their server and OS business as more people adopt silverlight. And more people will adopt silverlight. Adobe's business seems to be built around tools like Flash. If they gave that away for free they'd be hurting a big part of their business. It really seems like it's going to be a tough battle for Adobe over the next 3-5 yrs. Probably a lot like this.
I do think that it's exciting that Adobe is challenging on different fronts like server products and more pure developer tools. I'm sure it will spur Microsoft to make improvements in those respective areas.
Anyway, I could be way off on my arguments. After all I am a developer and I should probably be coding instead.
As you've probably read in dozens of other places, Microsoft released Popfly into beta today. It's been around in alpha form for awhile so there are already dozens of pre-built blocks and mashups to play with.
Microsoft says Popfly is:
"the fun and easy way to build and share mashups, gadgets, and Web pages. It’s made up of online visual tools for building Web pages and mashups and a social network where you can host, share, rate, comment and even remix creations from other Popfly users." Actually it took me a few seconds to think of why that sentence sounded hokey. Then Bedazzler popped in my head. Sure enough, MyBedazzler.com (I highly recommend you check out that site. Every time I hear the word "Bedazzler" it makes me laugh)
When a product is pitched as "Fun & Easy" you can't have high expectations.
So how does it work?
Popfly works on the concept of blocks that you can link together visually to create a mashup. So the content from one block can be used as input to another block. Kind of like laying out a flow chart. You can adjust the properties on the blocks to change how the mashup works. For example you can customize the Upcoming block to filter on event keywords. Behind the scenes the blocks call their respective web services like Digg, Flickr etc to return data to be displayed or passed as input to another block. One nice feature is that you can click the lightbulb icon on a block and it'll give you mashup ideas by displaying the blocks that it will work with well.
Some of the current blocks include RSS, Twitter, Upcoming, Virtual Earth, Yahoo Traffic, SoapBox, Facebook, Technorati, Xbox Live and various display options like the famous Page Turn sample or slideshows.
It's still relatively new so don't expect to find a ton of great Popfly apps yet. There are currently a handful that were created in the Alpha period listed as the most popular, but each has 1 review. On the plus side, it'll be easier to create a cool mashup and have the most popular app on there.
If you are really interested in Popfly, there is a "Mashup and Win" contest starting now. The best Popfly mashup submitted by October 31st has a chance to win a Zune 2.0 or an Xbox 360 Halo 3 Super Special Ultimate Elite Limited Edition.
From a technical perspective, it's probably the best Silverlight application out there besides Top Banana. It's probably even one of the better RIA applications out there in that it runs as if it were an actual desktop application. The UI is very responsive even with the gratuitous spinning animations when you mouse over anything. Although, the UI earns a lackluster "meh". It's ok, but not an achievement UI aesthetics. Something like Top Banana is more impressive UI in my opinion.
In terms of using it, I think I'd have to try it out longer. I'm more accustomed to writing actual code rather than linking to boxes together. I really have no idea what the boxes are doing when I connect them together. At this point I could probably write the same mashup in Visual Studio a lot faster than I could in build it in Popfly. I felt like a 2 yr old playing with legos - just mashing blocks together. I could also do without the huge zoom in animation when I change a property. Sure it looks cool, but it's not really optimized for productivity.
There is also an "Advanced Mode" if you want to edit actual code. I'm a little spoiled by Visual Studio and Intellisense where I can mouse over a method and it tells me what it does. The advanced mode is just a text editor. For example there is a line of code "checkForCallingDepth1();" What does that do? Is there a "checkForCallingDepth2()"? It doesn't return anything so do I need it?
One other issue. For a tool that seems primarily non-developer focused, the interface isn't very non-developer friendly. Look at the difference between Popfly and Yahoo Pipes.
Popfly Flickr block and filtering

Yahoo Pipes Flickr block and filtering

The Yahoo Pipes blocks seem more intuitive because of it's natural language. Why give me the name "getPhotos"? Plus the Yahoo interface is one simple line to find 20 pictures of cats. The Popfly interface takes about 1/2 the screen for the same function (well once it completes its swooping zoom animation). The filtering is another great example. How are the conditions supposed to work in Popfly? Do I need "x = 3" or "x == 3"? Why is it "x"? Where is that variable defined? What about doing something like "contains" that the Yahoo filter makes easy? As a developer, I wouldn't expect a tool like Popfly to be more confusing than writing actual code.
My biggest issue is that I'm not so clear on the target audience. I would be mildly surprised if anyone with development experience used this to build a quality mashup in lieu of writing their own code. It also appears too confusing for non-developers. I don't know if it would be harder to explain to my mom what a mashup is or for her to actually build a mashup in Popfly. Plus there are so many mashups out there. How many more twitter / flickr / rss / map mashups do we need? The potential for an innovative mashup seems slim. And if you could make an innovative mashup, it would probably be something that doesn't already have a block in Popfly that you could use.
Utlimately, I'm not super excited about Popfly long term. Microsoft has the marketing ability to make something like this maintain a buzz for awhile, but I really can't imagine people using this 1 year from now. Although it's still a beta so it may improve greatly in the final version and as more people build better blocks. (Well perpetual beta is a hallmark of web 2.0 apps so maybe it will never move out of beta).
Regardless, I think the developers did an awesome job building the Popfly infrastructure and it's a pretty impressive technical achievement considering Silverlight is still an alpha product. In my opinion it's a great platform for showcasing Silverlight, but a poor platform for actually building mashups.
One of may favorite things on the iPhone is the scrolling lists. Actually it's hard to choose because I love everything about the iPhone.
When scrolling a list on the iPhone, the list scrolls proportionately to how fast you flick you finger on the screen. I'm not sure what the right name is for the scrolling action, but I call it kinetic scrolling.
This is a great feature since scrollbars are often cumbersome on touch-screens. While they work great for mice, it's difficult to make scrollbars big enough to respond to a finger press without taking up too much space. Plus with the physics of the kinetic scrolling, you don't have to keep pawing at the screen to scroll through long lists.
So at Clarity, we have a couple of touch-screen applications in the office like our
WPF Dart Scoreboard. The player selection screen displays a list of users so you can select your name to keep score. It's a little difficult to scroll so I wanted to make something similar to the iPhone interface.
I've seen a few different WPF controls to mimic iPhone functionality like Cover Flow, but I hadn't seen anything like the scrolling lists. Here is a video of some sample code I wrote to try and mimic the iPhone.
View the video
here.
You can view it live here (only works on windows and you'll need the .NET Framework 3.0 if you don't already have it) or download the source code here.
I didn't have to write very much code to get this to work. It only took about 30 minutes to get the scrolling to work right. Well it took me about 30 minutes to read up on some high school physics to remember some equations. Amazing how much you forget in only a few short years. Actually probably closer to a decade, but still.
On a side note, high school must be so much easier with the amount of information available on the web. You can find sample problems and solutions for everything. Or maybe that's a sign that I'm getting old when everything seems like it was harder when I had to do it.
So here's the code.
If you'd like to see the XAML, you can just download the
source code. It's basically just a listview wrapped in a scrollviewer.
In the OnPreviewMouseDown event I track the time and position of the click.
1: protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
2: {
3: mouseDragStartPoint = e.GetPosition(this);
4: mouseDownTime = DateTime.Now;
5: }
Then in the OnPreviewMouseUp event, I call a method to scroll the list with the current time / position and the time / position from the OnPreviewMouseDown event.
1: protected override void OnPreviewMouseUp(MouseButtonEventArgs e)
2: {
3: Scroll(mouseDragStartPoint.Y, e.GetPosition(this).Y, mouseDownTime, DateTime.Now);
4:
5: base.OnPreviewMouseUp(e);
6: }
The code that performs the scrolling is below.
1: private void Scroll(double startY, double endY, DateTime startTime, DateTime endTime)
2: {
3: double timeScrolled = endTime.Subtract(startTime).TotalSeconds;
4:
5: //if scrolling slowly, don't scroll with force
6: if (timeScrolled < TIME_THRESHOLD)
7: {
8: double distanceScrolled = Math.Max(Math.Abs(endY - startY), MIN_DISTANCE);
9:
10: double velocity = distanceScrolled / timeScrolled;
11: velocity = Math.Min(MAX_VELOCITY, velocity);
12: int direction = 1;
13:
14: if (endY > startY)
15: {
16: direction = -1;
17: }
18:
19: double timeToScroll = (velocity / DECELERATION) * SPEED_RATIO;
20:
21: double distanceToScroll = ((velocity * velocity) / (2 * DECELERATION)) * SPEED_RATIO;
22:
23: DoubleAnimation scrollAnimation = new DoubleAnimation();
24: scrollAnimation.From = myScrollViewer.VerticalOffset;
25: scrollAnimation.To = myScrollViewer.VerticalOffset + distanceToScroll * direction;
26: scrollAnimation.DecelerationRatio = .9;
27: scrollAnimation.SpeedRatio = SPEED_RATIO;
28: scrollAnimation.Duration = new Duration(new TimeSpan(0, 0, 0, Convert.ToInt32(timeToScroll), 0));
29: this.BeginAnimation(CustJournal.ScrollOffsetProperty, scrollAnimation);
30: }
31: }
I'm not sure if my physics equations are correct but it seems to work. The TIME_THRESHOLD variable is there so it won't kinetically scroll if you keep your finger on the screen and you are slowing scrolling the list. I also added a MAX_VELOCITY to keep the list from scrolling too fast. For DECELERATION I used 980 based on the 9.8m/s of gravity. In my unitless physics engine this seemed to work well. The speed ratio is adjustable to control the animation speed. It runs at .5 which made the text somewhat legible even if you scroll quickly. This code is just a prototype to see if I could get it working, but I plan on rewriting a better list control in the future.
If you find it useful (or think it sucks) let me know.
How do you effectively measure the effectiveness of an evangelist? Blog readership? Event appearances? Customer satisfaction? Surveys? Product sales per region? I don't know if any of those are a true measure of evangelizing power.
For me it comes down who is most effective at getting their message out to uncharted territories.
Let's look at Adobe.
Obviously as I posted before there is Ryan Stewart, the RIA Mountaineer.
We know that there is some small monastery full of Buddhist monks in the foothills of Nepal that hasn't yet been enlightened on the benefits of rich internet applications such as the intuitive, effective user interfaces. Ryan is going to find them and evangelize. I don't know how they get internet access out there, but perhaps he has some sort of Adobe satellite connection in that backpack.
Then there is James Ward, the RIA Cowboy
He's a cowboy or "El Vaquero de RIA" as they call him at the New Mexico Flex User Group. If RIA developers need wranglin', he's the man roping them in with connected, responsive applications. Oddly enough, the National Senior Pro Rodeo Association is sponsored by SilverLite. Clearly the RIA frontier is a wild, unpredictable place.
How can Microsoft compete with Adobe's pantheon of RIA adventurers?
Adam Kinney, Technical Evangelist covering Silverlight and WPF.
Sure, he's covering Silverlight, but how do you compete with a cowboy? A pirate? Silverlight Pirate probably sends the wrong message. Although, the high seas seem largely unclaimed by Adobe evangelists.
I propose that he becomes Adam Kinney, Silverlight Surfer.
Of course the Silver(light) Surfer can also evangelize in outer space which should give Microsoft initial RIA supremacy of the cosmos until Adobe counters with Lee Brimelow, RIA Astronaut.
Next is Jesse Liberty, Silverlight Geek.
It's close. But not adventurous enough.
I submit, Jesse Liberty, Captain Silverlight. Battling the evil forces of non-rich interactive applications wherever they may be.
(Tough to see, but the podium actually says "Liberty" on it which I thought would make the re-branding process easier)
Finally, there is Tim Sneath, Client Platform Evangelist.
Tim doesn't have a picture on his blog. Or a bio. Clearly a man who prefers stealth. Therefore I now dub him, Tim Sneath, Silverlight Ninja Warrior. Probably unbeatable by Adobe. The only way they can counter is with a RIA Pirate, which as we have discussed previously is probably a bad idea.
I'm also planning on re-branding myself as the Indiana Jones of software development in the upcoming weeks. Just need to take some photos of myself in the jungle or some ancient ruins with my laptop.
Technorati Tags:
Ryan Stewart ,
James Ward ,
Tim Sneath ,
Adam Kinney ,
Jesse Libery ,
Lee Brimelow ,
ninjas ,
pirates ,
cowboys ,
Silver Surfer ,
evangelists

Last night I attended SF Ignite. I've heard about Ignite before, but I hadn't been to one. I was pretty excited to see that there was one nearby in SF. Ignite is described as:
"If you had five minutes on stage what would you say? What if you only got 20 slides and they rotated automatically after 15 seconds?"
It's amazing how much better presentations are when you are forced to put only as much content on one slide as you can talk about in 15 seconds. All presentations should work this way. Next time I meet with a vendor, I'm going to run the slideshow. Next....Next.....Next...Buh Bye now.
Here's a rundown of the talks with my monkey rating system. (1 - 5 monkeys, 5 monkeys being interesting enough that I didn't wander outside for a smoke break)
First Block of Talks
Annalee Newitz - Spaceships (and a few dragons)
Fairly well done talk on the mythology of spaceships and dragons and why they have a special place in hearts of geeks everywhere. She mentioned people creating Top 10 spaceship lists. That's just silly. Who has time to make a list of top 10 fictional spaceships? What we should be focusing on is the Top 5 dragons.
Official Top 5 Dragon List
5. Yoshi - "Yoshi can eat almost anything."
Also fairly dominant in kart racing, baseball, tennis, soccer, and basketball. He's like the Bo Jackson of dragons.

4. Mechagodzilla - "Mechagodzilla has armour constructed out of a mysterious and nearly indestructible alloy known as "Space Titanium." Mechagodzilla's head is also able to generate a cylindrical force-field around the robot's body by spinning around rapidly. It is also equipped with a staggering amount of firepower. MG is also equipped with powerful missiles in its fingers, knees, and even its toes."
Would be ranked higher if he hadn't lost to Godzilla several times. Perhaps he needs missiles in his elbows to put him over the top. Can't deny his upside potential though.
3. Fing Fang Foom - "Fin Fang Foom possesses super strength, the ability to fly via his wings at supersonic speeds, and can spew a destructive acidic mist resembling flame from his mouth. The dragon is also extremely durable and can regenerate at a rapid rate. Fin Fang Foom is also a shape-shifter, can communicate telepathically and excels in hand to hand combat."
I don't know why you'd need to shape shift when you're a dragon, but at least he's got the option. I mean you're already a dragon. What's better? A two-headed dragon? Quadra-armed dragon? Plus you have to admire the dedication of a dragon learning hand to hand combat when he can already spew a destructive acidic mist.

2. Lockheed - "Lockheed is the member of a highly advanced dragon-like extra-terrestrial race, who are capable of traveling through space via special astral ships which transport their essences."
Not only is he a dragon, but an advanced alien dragon. I don't know how you stop a space going dragon with sharp, pointy claws. Plus he's smooth enough to hang with the ladies.
1. Figment - Secure enough in his dragonhood to wear a yellow sweater. Plus he also doubles as a pirate in Disney World. A pirate dragon seems fairly formidable and earns him the #1 spot.

Honorable mentions: Puff the Magic Dragon, Norbert, Soup Dragons, Drachenstein
Oh yeah, the presentation - 4 Monkeys.
Bryan O'Sullivan - Functional programming: from buzz to products
Talked about Haskel which I'd heard of before but never actually seen. I still really don't know anything about Haskel even after his talk. Although he really seemed to like Haskel. Really, really like it. Almost uncomfortable so. Maybe I'll learn it someday. I'll put it in the queue between hieroglyphics and Sanskirt. I already know Scheme so that's close enough.
2.5 monkeys
Ian Kallen - Understand The Web Spam Ecosystem In 5 Minutes
Really didn't get to the heart of why I get 500 emails a day about needing $100,000 to claim some dead maharaja's fortune who may or may not be related to me. Or others that are probably inappropriate to post on my companies blog server. Lost his train of thought. Then lost me. I think his point was that Technorati contributes to spam.
2 Monkeys
Toby Segaran - Social Data Mining
Probably one of my favorite talks. He had interesting look at data mining information from Hot or Not (may not be appropriate for work depending on who has their picture on the main page. On a side note, I'm shocked that site still exists), Google groups, Craigslist and others. Showed examples of which words describe people in LA, SF, Chicago, Boston. Cubs was number one in Chicago. Go Cubs!
I'm going to buy the book.
Funny and intelligent. I give it 5 monkeys.
Brooke Blumenstein - Web 2.0 Outside the Tech Scene
She talked about some knowledge base her company uses and how they tag documents. I have knowledge base to, I call it Google. In all fairness, I was eating a quesadilla at the time and might have missed the the real differentiater between her knowledge base and every other management consulting firm's knowledge base that maximizes value by leveraging the collective intelligence of their vast MBA armada.
1 monkey
Tara hunt - Forget Venture Capital, Raise Social Capital!
Kind of funny. Only kind of. She seemed to enjoy her own talk more than I did though.
1.5 monkeys
Dan farmer - faster than the bear
Either he didn't speak or I spaced out and lost 5 minutes that I'll never get back.
0 monkeys
Second Block of Talks Violet Blue - Pron or Not?
Really funny speaker. Great picture of a cat being chased by Domo-kun. Talked about censorship and what's considered obscene on the Internet.
4.5 Monkeys.
Chicken John - Art and Innovation
Pros:
-Did a flip over the railing to get on stage
-Referred to himself in the 3rd person, ex. "Chicken John likes to talk with his mic real close"
-Running for mayor
-Explained how the voting system in SF works
Cons:
-When asked why we should vote for him, really had no answer. Before i went and made a web page for my mayoral run, I'd probably give that question some thought.
-I still don't understand how voting in SF works
2.5 monkeys
David Recordon> - ScubaBots
David talked about the lack of technological progress for dive sites. I think they still use webrings. Since divers leave early in the morning before anyone can report about dive conditions, divers need to make dive / no-dive decisions on old data. Led into his idea for dive robots. I like it even though I don't dive. I didn't even make it out of the training pool during dive class. At least i could live vicariously through the dive bot's webcam.
4 monkeys
Jonathan Foote - SWARM: Spherical Kinetic Robots
He talked about building these semi autonomous hamster ball like robots with GPS, lights, music, and a hive mind. Sounds awesome right? It had a few moments like when he showed a bunch of physics equations to prove this was a scientific endeavor and not the product of an all night drug binge at burning man. It would have gotten a higher monkey rating if his co-workers weren't cheering at everything he said as if it were the greatest presentation ever given.
2.5 Monkeys
Patti Roll - Timbuk2 + CrowdSourcing = Awesomeness
I almost walked out before this one. I thought it was about Timbuktu, the remote control software. That would have been a crowd pleaser. Instead it was the bag maker. She showed some pretty interesting ways that Timbuk2 interacts with their customers via Web 2.0 technologies. Best tip, if you post bags of yourself on Flickr with a Timbuk2 bag and they use it, you get a free bag. Rather than paying for pro photos, they trade people bags for permission to use the photos for marketing. Frugal yet genius.
4.5 Monkeys
I missed the rest so I hope there wasn't a 5 monkey talk in the bunch.
Anyway, if anyone is interested in organizing an Ignite in Chicago, I'd love to help out. I'll even present so other can critique the presentation power of 10K monkeys.
Technorati Tags:
Ignite ,
SF ,
Dragons ,
Scuba Robots ,
Godzilla ,
Chicken John ,
webrings ,
Timbuktu ,
Deadly hive mind robots with MP3 players ,
Bo Jackson ,
Puff the magic dragon ,
Haskel
Rich I Applications have generated a lot of interest as Microsoft & Adobe have focused attention on Flash/Flex and Silverlight. But what does the 'I' stand for? Abobe first described the term "rich Internet application" in 2002. Microsoft has more recently referred to RIAs as "Rich Interactive Applications". Ryan Stewart from Adobe and Scott Barnes from Microsoft are on the forefront of the acronym war waged in the blogosphere. Who will win?
Let's break it down.
| Topic | Ryan Stewart (Internet) | Scott Barnes (Interactive) | Winner |
| Author Credibility | Ryan started tagging posts on his blog as 'Rich Internet Applications' in July 2006. That's almost 15 months of tagging power behind 'internet' Plus he is the Rich Internet Application Mountaineer.
You can't deny the dedication of a man who is scouring the back country and mountain tops for Rich Internet Applications. | 4 posts over the last few months tagged with 'Rich Interactive Applications'. The quickest way to convince people is repeat Rich Interactive Application until it's stuck in their heads. Maybe even add a catchy tune sung by John Cougar Mellencamp. "This is ouuuuur country" Haunting isn't it? From the east coast to the west coast it's Rich Interactive Applications.
| Stewart |
| Staying on Message | From Ryan's blog: "RIA confusion exists in many places. I think Flash and Silverlight are VERY much Rich Internet Application technologies. They are bringing a rich, interactive desktop-like experience to the web, which is the whole point." Confusion? You just said they were interactive. I don't know what to believe now. You gotta stay on message and hammer the talking points home. Rich Internet Applications. Apply directly to the forehead. Rich Internet Applications. Apply directly to the forehead. Rich Internet Applications. Apply directly to the forehead.
| Scott tags his posts as "Filed under: RIA, Rich Internet Application, Rich Interactive Application" You can't draw readers to your posts thinking they're going to sit down with a nice venti non-fat vanilla latte extra whip and read about Rich Internet Applications and then pull a bait-and-switch and bust out a 1000 word post on Rich Interactive Applications. You must wipe Rich Internet Applications from the lexicon until it disappears from tag clouds everywhere. | Push They're both penalized. Ryan can't use the word 'interactive' in the same paragraph as RIA unless he's saying "RIA means Rich Internet Applications" not "Rich Interactive Applications". Scott can't use the word "Internet" in his posts. |
| Attack Ads | You win a debate by going negative and attacking your opponent. If it's good enough for our government, it's good enough for the blogosphere. From Ryan: "Scott has decided that it’s now rich interactive application (though last year he was still using rich internet application). I wondered why Scott was pressing so hard because even other Microsoft staffers don’t push the interactive with the enthusiasm he does. Then I saw this and everything was explained." It's just too subtle. I mean I gotta click all of these links, read more and draw my own conclusions. I'm a simple man, spell it out for me. Something like "I just want to illustrate that there is an agenda behind the man"
| From Scott: "[Ryan] later joined Adobe and has since been struggling to keep some kind of neutrality in the room, by lacing it with enough "RIA" abstracts to some how shift the focus away from subtle Adobe product placements?" So what's the conclusion? "I Say this not to offend or attack, but illustrate that there is an agenda behind the man :)" There we go :) Spell it out for me, Ryan is in the pocket of Big RIA and can't be trusted.
| Barnes |
| Accuracy of Description | Does 'Internet' really describe what these applications are all about? What about RIA application that are only INTRANET based? Huge gaping whole in the nomenclature.
| Are any applications not interactive? Spreadsheets and word processors are what the majority of people would classify as applications. Applications typically have a user interface and therefore are interactive. I expect an application to be interactive. Considering an RIA to be a step forward because it's interactive doesn't really seem like progress or an evolution of the meaning of RIA.
| Push |
It's a tie and I've run out of comparison categories. In the end it doesn't matter. It's like DVD. Who even knows what that stands for? Everyone thinks the V is for "video", but it was originally for "versatile." If you say RIA, everyone knows what you are talking about regardless of the specific meaning of the words.
To both of them I say: That paper was written in 2002. It's almost 2008. Let's make some progress already. Spend your time coming up with something to describe the next trend in application development. Often times RIA is describing applications that are obfuscated by gratuitous animation and UI effects that are probably a step backward. A swirling animation and sound effect because I clicked a button isn't progress. I want something that describes the benefits. Like Rich Intuitive Effective Application (RIEA) or Rich User Centric Connected Application (RUCCA). That way, if someone builds a RIEA, I know it is probably a step forward in user experience. Although RIEA is a bit tough to say. Bring the RUCCAs!
Sent from my iPhone.
More Posts
Next page »