February 2004 - Posts
When it comes to smart phones, Symbian is undisputedly the market leader with 97% market share. MS smart phone is only 3% (that is about the same as Linux on desktop). So, why would a Symbian developer even care about what's happening on the MS side? Well, AnchorDesk's David Coursey thinks that MS smart phone has the potential to grow. I agree with him.
Smart phone is cut throat business with many players. A monoly would not last very long. As the market moves to enterprise space, the battle between Nokia/IBM against MS would heat up. Again, to know more about how you are going to respond to the changes, come to my MDC presentation. :)
Motorola has just announced two new Smartphone 2003 phone that will be availaable later this year. Both phones support tri-band GSM/GPRS, WiFi and bluetooth connectivity. Both have 1.3 megapixel digital camera with zoom. Even more important, both come with Smartphone 2003 OS, which has the latest version (SP2) of the .NET Compact Framework. The MPx100 is a "consumer" phone with a traditional key layout.
The MPx is more of an enterprise phone and it has a clamshell full keyboard. Very nice!
Now, we see some serious competition with Nokia 9500!
Nokia has just released its Series 80 Developer Platform with a new enterprise phone: Communicator 9500. It features
- two full color LCD screens (a large 640x200 and a 128x128 external)
- full keyboard
- tri-band GSM (including EDGE network) compatibility
- bluetooth and Wifi connectivity
It is easily the most feature-rich mobile phone out there. More importantly, the Series 80 platform is produced in alliance with IBM and runs important IBM mobile software based on the J2ME Personal Profile. Examples of such software include DB2 Evereyplace database, WMQe messaging middleware and OSGi/SMF microkernel. Very impressive.
What does this mean to Windows Mobile developers who are focused in the enterprise market? Well, come to my MDC talk and I will tell you all about it.:)
Cross posted from my other .NET blog
I tried out JetBrains' VS.NET plugin for C# today. So far, I liked it. I think it is on the right track to bring some serious competition to Whidbey's refactoring tools. The installation was smooth. You would need a username and license key from the bottom of the download page. It just adds a "Resharper" menu item to your C# project workplace in VS.NET 2003 (I also have Appforge and XMLSpy plugins installed. Resharper only adds the highlighted menu item).
With Resharper installed, VS.NET takes some extra seconds to startup because it needs to build its own symbols from the system DDLs. Now, let's look at some of its features:
Refactoring support in this first EAP build is very primitive. It only supports variable renaming. However, as I had mentioned before, renaming is probably the most urgently needed refactoring feature in VS.NET. Currently, ReSharper does not allow you to review the changes to be made. I expect this to be fixed in future builds.
2. Find usage
An advanced editor feature that is closely related to variable renaming, is to find all usages of a certain variable across multiple files and classes in a solution. ReSharper has a very good "Find Usage" utility.
The find results can be organized in the object hierarchy structure.
Or, the results can be organized in the file system structure.
3. Code templates
ReSharper supports surrounding code blocks with structures and insertion of live templates. They work pretty much the same way as Whidbey does. I wish there is a way to add custom live templates in the future.
4. Code completion (IntelliSense replacement)
Last but not least, the ReSharper provides its own "smart" code completion utilities. To use that, we can turn off IntelliSense by check off the "Auto list members" box in Tools -> Options -> Text Editor -> C# -> General. Using the Ctrl-Space key, we can get a list of all possible code completion options as IntelliSense would normally give us:
Using the Shift-Ctrl-Space key, we can get a list of possible completion options based on the code context. That is pretty useful when you have a large number of data members, properties and methods in a class (like some of the system classes do!!)
Overall, ReSharper needs to be substantially better than Whidbey's refactoring tools in order to convince people to pay extra for it. I liked what I see so far. But it still has a long way to go.
PS. Luke Hutteman also has a good review on ReSharper.
I am officially invited to present at the upcoming Microsoft Mobile Developer Conference 2004 (MDC) as an independent expert. Thanks to Kevin and Jonathan! The title of my presentation is:
CLI347 - Windows Mobile-based Smartphone Development for J2ME/Symbian Developers
The presentation introduces Windows Mobile from a J2ME and Symbian developer's perspective. Pros and cons of different technology platforms and their application areas will be discussed. Rest assured, the discussion will be unbiased, as I am not a Microsoft employee and I have a long history working with the J2ME and Symbian developer communities.
We will also drill down to the technical level. For example, we will cover how to implement proven J2ME/Symbian design patterns in the .NET Compact Framework and how to design end-to-end architectures that are easily implementable on all platforms. I hope this session is not only useful to J2ME/Symbian developers, but also helpful to Windows Mobile developers who are interested in the big picture and learning some practical design patterns along the way.
Anyway, I'd love to hear about your suggestions. Is there any topics you specifically want me to cover? Why? Leave your comments below and let me know!
The early access build of IDEA's ReSharper comes out today. It aims to support advanced code editing and refactoring features for C# developers using VS.NET. I am a big fan of the IDEA Java IDE and have high hopes for this VS.NET plugin. Get yours from
Username and password are both "eapuser". It is still a very early build and only works with VS.NET 2003. I will post more screen shots and reviews after I have time to play with it this weekend!
One of the key features touted in the newly released MapPoint Web Service v3.5 is the ability to render maps optimized for small devices. I used a MapPoint program I wrote a while ago (in .NET CF) to test it out! It turns out to be pretty good. As we can see below, compared with default style maps in v3.0, the v3.5 "phone" style maps are cleaner and use less colors. They do not show detailed side streets, which you cannot read on a small screen anyway. They would also display better on devices with limited number of colors.
The same maps display well on PocketPC devices as well.
To use the phone style map is very easy. Just update your MapPoint Web Service reference and update the following line of code and you are done!
mapOptions.Style = MapStyle.Phone;
Please continue the discussion here
As much as I love "mobile middleware", there are things I feel awkward using on today's mobile devices. One example is the calendar application: I would like to see details of today's task while still seeing the outline and repeat patterns of the week or month's schedule; Another example is Pocket Street maps: when I want the driving direction from A to B, I want to see a detailed map around each corner while still seeing the overall route (that is why big maps with fine prints are so popular). The list go on. But they have a common pattern: How do we fit drill-down information and outline information into a small screen at the same time?
That is indeed a big research question for UI designers. University of Maryland has developed a highly innovative "fish eye" UI solution with Microsoft Research to do just that. Their sample application, the DateLens, demonstrates the concept using a calendar application. Very cool. Make sure that you check out their demo video on their site. The desktop outlook plugin is available for free from their site -- you can see for yourself whether it improves your productivity. I hope they would make the .NET CF source code available under a shared code license! ;)
The research lab that developed this application has just entered a 3-year, 1 million dollar contract with Microsoft. In any case, I wish those innovative UI components (fish-eye grids and two-head scroll bars) make their way to WinForms designer toolbox very soon!
Please continue the discussion here
As a mobile gadgets geek, I own more than a dozen smartphones -- from Nokia's latest models to Microsoft Smartphone 2003 beta devices. Those devices are fun to play with. However, selecting wireless data services for them is not fun at all. Wireless carriers have a ton of marketing speak when it comes to mobile data services for consumers. It is a challenge to find out what exact you need without being over-charged. As the MDC approaches, I need to renew my services so that I can demonstrate some cool applications to fellow MDC attendees. I will post my wireless carrier research notes here. I'd appreciate your comments and, hopefully, it will be of help to mobile developers out there. :)
First of all, I want a flexible GPRS/EDGE service plan. Although the GSM data service might be OK for casual users who mainly play offline games, it is definitely too slow and too disruptive for serious end-to-end applications. The service must support unlocked devices -- I usually swap the SIM card in and out of different device depending on my need. The carrier's customer support need to supply instructions on how to set up GPRS access point etc. Fortunately most wireless carriers meet this requirement with the notable exception of NexTel, which only seems to support Motorola handsets.
The data service should allow access to any Internet IP address (not limited to the carrier's portal) and restrict as few port numbers as possible. I need a plan with a large bandwidth cap (all-you-can-eat plan is the best) since I need to install and stress test the applications under different network conditions. With a high bandwidth plan, I can even use my bluetooth GPRS phones as modem to access the Internet from my laptop. T-Mobile and Sprint both offer all-you-can-eat GPRS plans.
If I have a choice, I would prefer EDGE service much more than GPRS since the former is much faster (EDGE is almost 3G speed). It seems that ATT is the only nation wide EDGE provider but it costs $20 per 8MB ... Also, MS smartphones do not yet support the speed enhancements of EDGE.
In addition to smart client applications, I would also like to develop applications that utilize mobile services, such as the multimedia messaging services (MMS) and integrated mobile billing/payment systems. I am a big fan of multimodal end-to-end applications and one-click micro-payment. MMS is already the hottest data service application today. Although the current breed of MS smartphones do not support MMS, the new camera smartphones and pocketpc phones are just around the corner. Using XML Web services exposed by the carrier, we can develop MMS applications that interoperate with a large number of MMS phones (all new Nokia models, for example) from the server side. Almost all carriers support MMS these days. But few of them actual expose MMS servers to developers. I think you can access Cingular servers via the Nokia developer program, and ATT/T-Mobile MMS servers via OpenWave's developer program. Vodafone's Mobile Web Services platform is open to Microsoft developers. But Vodafone is not available in the US
So, what is the verdict? The ATT EDGE service should work great on my latest Nokia phones (6620 and 6230). The T-Zones Pro GPRS data service is cheap and unlimited (a huge plus!!!). I will make a decision in the next couple of days!
Please continue the discussion here
It has finally happened. The news is already all over the place today: Nokia takes control of Symbian. It is obviously a smart move for Nokia -- it cannot let a committee comprised of its competitors to determine the fate of its most valuable phone platform (actually, I think the Series 40 is more valuable in terms of market share :).
But I perceive this as the golden opportunity for Microsoft Smartphones: the competition is now Microsoft vs. Nokia. Independent phone vendors might see Nokia as a bigger competitor (since it sells hardware as well as software) and give Microsoft a break by licensing Smartphones.
Of course, another potential winner in this race could be Java: as phone makers adopt both Symbian and MS Smartphone platforms. It is natural for them to install J2ME runtimes on both models to provide a consistent and independent platform for their developer community. I believe Motorola has already started in this direction. Only time can tell how these things would work out!
Now, what do I think about this Symbian versus MS Smartphone contest? I think Symbian is a better phone OS for end users but MS Smartphone has better developer support. But the whole landscape is changing fast. For example, if Symbian starts to aggressively support J2ME optional packages, it would become much more friendly to developers; On the other hand, the next version of Smartphone OS could well be very stable and usable as MS pours in resources in research and development.
More Posts Next page »