| |
January 11th, 2010 by Payman Hodaie
One of our customers, forwarded me the following CNN article.
http://www.cnn.com/2010/TECH/01/09/ces.apps/index.html
A must read.
Posted in Microsoft | 1 Comment »
January 9th, 2010 by Payman Hodaie
For the past 8 years, I have been developing enterprise applications in Java and C#. When I first started developing iPhone apps in Objective-C, I missed the comfort virtual machines (vm) provided me. But, once I completed my first app (with smooth sliding and scrolling views, fancy graphics, and animations) I was happy to give up all vm benefits for the close to the metal nature of Objective-C. I am so glad I didn’t forget the importance of explicit memory management from my early 90s C programming days.
When you think about it, performance is paramount when it comes to apps running on hardware constrained mobile devices.
Posted in General | No Comments »
January 9th, 2010 by Payman Hodaie
Couple of days ago, Omid, our CEO, pointed out an important fact to me: Apps cover not just the traditional application space, they are also the new universal format for content that is both informative and functional.
Considering that the content space is orders of magnitude larger than the application space, it’s no wonder that app market had such an explosive growth in such a short time.
We are just at the beginning of this new phenomenon.
Posted in General | No Comments »
January 7th, 2010 by Payman Hodaie
If IBM Rational is serious about EPF, it should contribute all of RUP content, and allow users to freely tailor and blend its content. By now, it’s obvious that OpenUP is not comprehensive enough for real-world projects and had minimal acceptance.
Posted in EPF, RUP | No Comments »
January 7th, 2010 by Payman Hodaie
In the last few months. third party software development world has made a historical paradigm shift to cloud-based computing and App store distribution model.
The most significant aspect of this shift is the opening of almost any platform (televsions, cars, netbooks, phones) to sophisticated third party applications. Each of these platforms has its own unique technology. Previously, these platform were only open to minute number of embedded developers closely working with the hardware vendors and the code was pre-installed on the hardware before it reach the consumer. Now any third party developer can develop apps for any number of these platforms.
Imagine developing an app that users can download to their iPhones that interacts with an app that they have running on their Samsung HD TV. All through a cloud-based platform. The users simply go to Apple’s and Samsung’s App Stores and purchase the app. Or an app running on Ford cars interacting with Android phones. The possibilities are endless.
The multi-technology and app store distribution model of this new paradigm has significantly increased the complexity of the development process, hence making new generation of software development methodologies critical. For example, we have tailored some of our development processes to include micro iterations (to satisfy quick-time-market business requirement), and app store submission/approval activities.
Posted in Mobile Development, Multi-language Development, Processes & Methodologies, iPhone | No Comments »
December 20th, 2009 by Payman Hodaie
I came across the term “bloatware” in a Forrester Research report and right away I thought of RMC. The author, Clay Richardson, writes:
Bloat kills. Whether it’s excessive complexity in the application, its underlying platform or architecture, or the process used to deliver it, overloaded platform software and heavy processes impede delivery of the solutions the business demands.
RMC’s steep learning curve, heavy-client architecture, lack of support for collaboration, and underlying IDE platform make it a bloatware poster child.
Lately, being immersed in mobile application development, I have ever greater appreciation for lean intuitive applications and disdain for bloatware.
Posted in General | No Comments »
December 15th, 2009 by Rakesh Kamath
We have been working on a lot of apps on mobile platforms, especially the iPhone and as I mentioned in my previous post, we keep coming back to the problem of data integrity – in the cases where there is a server component and data needs to be synced up with the server.
Apps that depend on data on a server have several options of accessing data on servers. There is the ubiquitous RSS – get and read feeds. This is great for reading data off a server but quickly loses relevance when the application has a more complex data model and the app needs to write data to the server. The problem of writing data to server is easily solved through web-services, REST services and the likes through which you can talk to a service that takes care of translating your data into the server’s database.
The problem however is keeping the data on the device in sync with the server component. This problem is prominent on mobile devices because while your app on the device is working and live, there is not guarantee of continuous sustained connectivity with the server. Network connectivity is unpredictable and unavailable based on where you are, there are other problems that may interrupt your application. For example on the iPhone, an incoming phone call may interrupt your app while the data is being synced with the server. Your app or your device may crash.
Given all these possible scenarios, how do we ensure that data on the device is always in sync with the data on the server and secondly how do we ensure the integrity of the data given the number of breakages and opportunities for data corruption given the very plausible scenarios I mentioned above.
Over the next few weeks, as we evolve and implement our solutions to this problem, I plan to write a series of posts that looks at this problem in depth and possible solutions and their feasibility. One of the obvious first things we looked at was what are apps out there currently doing to address this issue of data integrity? Answer? Surprisingly little. Most apps out there simply don’t allow the user to do anything that requires server connectivity if the apps detect that there is no connectivity. This is not a great solution, and is primitive – especially given what we have come to expect on the desktop. Solutions like Google gears and soon the offline support in HTML5 make what’s being done on the mobile platforms look primitive.
So, why are we looking at this problem now? Of course we are motivated by the fact that so many apps face this problem but there is no well defined solution and doesn’t look like anybody is looking at it. But perhaps more importantly, technologically the tools are in place at this moment in mobile platforms for us to come up with a solution. The tools and utensils are there, the ingredients are all laid out for us, nobody has come up with a recipe yet or even entered the kitchen.
The iPhone, the Android and soon the Blackberry with v5 of the Blackberry development platform have support for SQLite – a full fledged transactional light weight embeddable database engine on the device itself. The mobile platforms themselves have powerful development kits that allow us to come up with robust solutions in combination with SQLite (and other mobile database engines). The tools are there.
Over the next few weeks, I am going to describe various possible solutions and think through their feasibility and suitability through my posts. I think that would be the best way to get peer feedback and ideas as we hardly know everything there is to know and your input would be invaluable.
Keep an eye on this space.
Posted in Architecture, Mobile Development, The state of the art, iPhone | No Comments »
November 23rd, 2009 by Yan-Jing Mao
There have been quite a few development posts in our blog as of late, so I thought I’d share some current activities from our products and services front.
In the past month, we welcomed three new customers to our IRIS Product Suite and Content Bridge for VSTS, including a large Canadian Federal government agency. Two of the customers were specifically looking for a solution to bring RUP or RUP-inspired methodology into VSTS for process enactment. After evaluating their requirements, we selected the right tool from our product family and provided our expertise in this area to deliver the needed solutions for them.
As VSTS continues to gain maturity as an ALM tool, we have noticed growing interest in processes and process integration within the development environment to facilitate its enactment. Organizations who have adopted TFS initially for centralized source control and automated build capabilities are now ready for more. After having deployed and migrated existing projects to VSTS, many are looking into bringing their own processes into the tool to benefit from process guidance and work item tracking in their daily development activities.
However, creating process templates for proprietary processes remains a challenge. In this regard, it is a pity that a process tool, such as RMC, does not provide cross-platform support to generate process templates that can be used in a (competitor) enactment platform.
I believe that a well-rounded process tool should not only satisfy the modeling needs of process authors, but also provide the necessary support to help project teams deploy and implement processes in a chosen enactment tool, whichever it may be.
For those who are interested in seeing an RUP process template live in action in VSTS, here is a recording of a webinar that we hosted with Microsoft last year. In this webinar, I used an RUP Process Template for Small Projects as an example to create a project in VSTS.
Posted in Process Enactment, Products, VSTS | No Comments »
November 8th, 2009 by Payman Hodaie
The version 1.5 of MOF Mobile Reference is available for download as of yesterday. This version includes MOF roles, processes and activities. Now I am working on the next version of CMMI Mobile Reference that will include sub-practices and work products.
Posted in COBIT, MOF, Process Improvement, iPhone | 1 Comment »
November 2nd, 2009 by Rakesh Kamath
Its been a little more than a couple of months now since I last blogged. That post was about the release of the Yardistry design tool. This post is about the release of an iphone app + microblog site that I just finished work on. I regret not having taken the time to post regularly during this project because we discovered and realized so many interesting aspects of iPhone development during the development of this project.
While I cannot talk about the specifics of the iPhone application nor the problem it solves due to client NDAs, I thought that it would still be possible to talk about the interesting aspects of the app without giving away too much.
The project started off as a native iPhone app that would allow users to setup events in a particular domain and then allow the user to post updates on that event to their contacts/friends in existing social networks such as Twitter and Facebook. As analysis progressed, it soon became obvious that while posting to existing social networks is useful, we would not be adding real value unless we gave the audience that the updates were sent out to – the friends and family – a user experience that could not be achieved with Twitter and Facebook since we kept hitting walls in the API as well as the user experience on these sites. I posted my observations on this early on during the analysis and early development of this project in this post.
The application that we ended up with is so much more useful and complete. Along with the iPhone app, we built a polished microsite that the friends and family could visit and view the updates and comment on them. We also hooked in a flexible REST-full API under the hood using which the iPhone app client could sync the events, updates and comments with the server. Clients built on other mobile platforms in the future can easily hook into this API. The iPhone app itself now includes utilities that focus on the problem domain and makes uses of the iPhone capabilities such as camera and location awareness to bring real value to the user experience. It is a little frustrating not to be able to talk about the problem the app solves or the details of the application as the value does not come across without it. But this will have to do for now.
Our choice of the technology stack on the server side is interesting to note because it’s the first time we used Groovy & Grails with mySQL to build both the microsite and the REST API. It was a very rewarding experience to work with Groovy & Grails because it allowed us to build a sophisticated scalable site in record time and I can foresee how maintenance pains will be eased dramatically compared to other technologies we have used. The focus on convention over configuration opened up a huge number of shortcuts to achieve what would have been laborious manual coding otherwise that would have taken us twice as long to complete the microsite. Since Groovy & Grails lie on top of the Java platform, we did not have to make any sacrifices since we still coded any complicated business logic and algorithms in Java. It all plays together seamlessly.
Among the many interesting problems we hit and thought about, one that stood out was syncing data between the iPhone and the server especially when the device moved between being online and offline. What should we do when the device is not online and the user posts an update or a comment? What approach should we take here? Should we have offline storage that gets synced with the server once the device goes online? Should we sync all the data in timed syncs and on specific actions? We took a look at what a lot of the apps out there do and noticed that most apps tend to allow actions that require talking to the server *only* when the device is online. When not online, the app would not allow the action. Ultimately, that’s the model we went for.
However, we are still thinking about this problem. We can see us hitting this problem frequently in the future in apps where not allowing the action is not an option. It seems like a problem we should provide an elegant and sophisticated solution for. Payman and I are going to be working on this in the background and if we come across any solutions we think might be worth discussing, we’ll put it up here. I hope you will look at them and leave us your thoughts.
There are other such interesting questions that we came across and continue to come across as we start on new mobile platform projects. I hope to find time to post them here as frequently as I can manage.
Posted in General | 3 Comments »
|
|
|