Archive for the ‘Mobile Apps’ Category

Is your apps “Cloud Ready”?

December 11, 2016

It was mainframes before the 90s, then came the client-server architecture and the web followed that in 2000.  The web architecture is somewhat similar to the mainframe architecture. I started my career in client-server, went to the web and now I’m in cloud. The technology departments in the corporate world and the IT services firms assisted in the migration from mainframe to client-server to the web. One need to change the mind-set while designing apps for specific technology platform. It will be easy to understand if you look at each of these technology framework as a genre. The current cloud architecture actually resembles the client-server architecture to a great extent. These days, the apps are feature rich with majority of the processing happening on the server side while still rendering logic on the client side (AngularJS website, apps on your phone etc.)

The are multiple cloud offerings, I mean IaaS, PaaS and of course there are many vendors Amazon, Microsoft, Google, Rackspace, Openstack and the list keeps going. You can have private cloud, public cloud and hybrid cloud. Now, everything you need is provided and is available as an app. The concept called SaaS which started in early 2000s with the advent of websites.

Let’s talk about migrating your applications that are currently living in your data centers or co-hosted or on your own premises. The easiest way is to follow the IaaS path wherein the physical servers are replaced with the VMs in the cloud. I’m saying this as easy because if your servers are currently in a data center you are any way remotely connecting to them from your personal device (PC, mac, Chrome – whatever), it doesn’t matter whether the remote server is in your DC or in Amazon or Microsoft DC. Apart from this, your applications doesn’t need to undergo any change, pretty much. However, this will not let you take advantage of “the cloud” offerings.

The second approach is to build your apps and make it available as SaaS by using the PaaS. This is where you will reap the benefits of the cloud architecture. Wait, you will hear from everyone, oh you are going to get locked up with a vendor! This is true if you were asking me about this even three years ago. Now, the cloud offerings have matured and one approach you can follow is to use containers such as Docker.

Let us take a hypothetical app where you receive data from your various vendors, the app need to load the data, notify vendors / your IT / business on failures, notify customers of the changes and that the latest information is available on the website for everyone to access. In such an app, in the current world (hosted in a physical or virtual server in your DC), you can have your own FTP server to pull the data from vendors and store the files in the file system of your server; with SMTP service running in your server to send the notification emails; any failure files can be moved to an error folder and error logs written to a log file in the log folder; Once the data is valid, you can update your database which forms a separate cluster in your network. If such an app/ website need to be hosted on the cloud, it need to be made “cloud ready”. What does it mean by “cloud ready”. Some of the salient features of a “cloud ready” apps are being machine agnostic, self-aware, secure and more. We will see the top ones here.

  1. Machine agnostic. – some examples
    • No file system – store files on AWS S3 / Azure cloud storage/ drop box [if you really want one, try the AWS EFS, it’s a network file system and you can use like NAS]. If you have a server, you will have a file system, but you should avoid them as it will have issues when you scale up and scale down. In Azure, the local C drive is temporary and you lose all data on it on reboot (other than the OS).
    • No local ftp / SMTP – use other mechanisms or 3rd party [FTP is a serious security issue], use AWS SES or other providers for email.
  2. Self Aware
    • Apps should be service oriented and the service endpoints are fetched from the application config files.
  3. Secure
    • Secure communications – Use SSL and encrypt all communications especially if you are in a regulated industry (eg:HIPAA). if you are app is calling other allied service end-points pass encrypted data and follow authentication and authorization policies. This is something often discounted when you are writing apps for your own DC though it’s a recommended practice.
    • Encrypt Data @ Rest- Don’t keep PII (Personal Identifiable Information) but if you need, you should encrypt that stored data. This includes any document / form data that you collect, create.
    • if you let users upload to your S3, please use proper authorization policy and move them out into a secured bucket ASAP.

In addition to these, there are more and my intention is to bring your attention to this and not to write a thesis. You are always welcome to write to me, if you want to discuss more.

Getting your apps to the cloud opens up possibilities,  more tools & technology at your disposal. You can easily start notifying your clients through SMS (trulio), you can cache the data if you are using GCE, you can use Firebase / AWS cahching to synchronize data and provide a seamless experience irrespective of the device form factor. Ultimately, your application will be device agnostic and your apps can follow your user from phone to PC to TV.

These thoughts are not just for migrating, you need to keep this in mind for newer applications you are building. Feel free to drop me a line if you need help migrating legacy apps to the cloud.

Microsoft Open Source

August 8, 2016

Yes, You read it correct, I hear you, saying, isn’t it an oxymoron? Well, it is not.The world is abuzz that ever since Satya took over Microsoft, things started changing. It is more developer friendly, it is more open to new ideas, it is collaborating with various vendors, partners yada yada yada…

This new era started with Microsoft embracing Linux, letting you create Linux instances in Azure. You all know that Visual Studio is free to the entire world. I have been associated with technologies in the past couple of decades, one of the best tool for developers is Visual Studio, hands down (No offense to Eclipse, Sublime and the like). They used to do this before calling it developer edition, then called community edition, trial edition. These various editions are either teasers i.e the features you want to use are not available and that you need to buy the paid version or it will be available only for 90 days or some limited period. They have gone out of that mindset and said, well there is going to be one edition an is free.

The best development tool in the world, the one that is very well integrated with the Azure cloud that lets you manage, create, deploy the assets is free now. If you thought that is not enough, recently, Microsoft announced that they are giving the SQL Server Developer edition Free. This is huge! I remember struggling with the so called SQL Server Developer edition couple of years back that it doesn’t have analysis services, integration services, SSRS, the SQL Agent. Now all that is available. So what is the catch? Nothing. This edition is exactly same as the SQL Server Enterprise Edition. The download link is here. You just need to signup / create an account with VS essentials. The only limitation is that Microsoft says, you cannot use Developer edition in any production environment. At least, you don’t have to worry about purchasing when you are developing your product. You focus on developing the product and when it comes to deploying or taking it live, you can worry about it. Even then, both Microsoft and Amazon offers you to participate in various “Start up” initiatives that you an benefit from.

I hear you asking, so what brought about this change? IMHO, this is how Microsoft was operating from inception. They probably forgot for a while when Steve was at the helm. It was Novell Netware (you guys remember?) that pioneered Local networks in the corporate world, then came Windows NT. You all remember what happened to Netscape? Well, Microsoft offered Internet Explorer free. We didn’t get anything free for a while and now it started again. You get Visual Studio, SQL Server Developer, Xamarin for mobile apps, the start-up initiative, Linux.

Don’t over analyze. Start working on your next idea and the ecosystem is available for you to use the best tools out there. What are you waiting for? Microsoft is Open to sourcing it from / to you. Happy developing.

PS: The complete licensing guide for SQL Server 2014. if you are in doubt, don’t hesitate to drop me a line.

You have (want) an app for that?

August 4, 2016

It’s Déjà vu again. This used to be “do you have a website?” in the early 2000, now it’s “do you have an app for that?”

It’s a given that everyone, everything has a website, thanks to the various website builder tools/websites, content management tools such as WordPress, Joomla, Drupal. This used to be a big business of building websites. These various tools democratized the website building process. You don’t have to be a pro. They all offer a WYSIWIG editor, you drag, drop, buy images of iStockphoto, few minutes (may be an hour) later you have your own website without thinning your wallet. These content management tools really took the wind out not just of making but also maintaining the website on a regular basis.

There are specialized websites / tools bordering on SaaS (Software as a Service) and website builders for specific categories. For example, I was looking to manage my son schools’ PTO / PTA, there are a number of sites and the prominent among them being ParentOrbit. They not only allow PTO to register, collect funds using credit cards, ACH, but also let you setup class parents, broadcast emails, collaborate with other parents. I even noticed them letting independent Business Owners (robotics, chess classes, anything to do with kids)  to run a virtual shop. They can manage their business, communicate, collaborate, accept payment etc.

The same democratization process is happening in the app marketplace. Unless, you are looking to develop a unique, ultra functional app, you pretty much can create, publish to the store and maintain it the same fashion. The same content management tools like WordPress have its own mobile plugin, that lets you convert a website built with WordPress into an app. If you want something specific like, creating a Social media based mobile app such as your band’s fan club there are myriad engines like Anahita, HumHub, SocialEngine. These let you create a website and convert them to mobile apps.

In addition to these tools similar to content management, there are also other mobile app builder tools like goodbarber, appypie and more. Then there are other cross platform app builder tools such as Microsoft Xamarin, Appcelerator Titanium. Microsoft recently bought Xamarin and bundled it free with Visual Studio.

You don’t have an app yet? want an app? Pick one- anyone is good enough than not having one. Still confused? drop me an email.

Just-in-time apps – Next Generation Web hosting

April 30, 2011

Since the inception of internet leading upto its peak,  having a website was a given for every organization . In a similar vein, with the advent of iPhone, now everyone is expected to have an app. After the .com boom, the website creation is commoditized by the web-hosting companies that they would offer a variety of templates and you could build your website in few minutes. The same business model is being extended to the app world by the new entrants – iSites, Widgetbox and bizness apps.

Every one of them offers a paid plan per month per app plan with varying degree of support, analytics and the apps work in both android and iPhone. BiznessApps is the cheaper of the lot.  iSites offers a basic web based app while the BiznessApps offer the ability to create native iPad apps and widgetbox let you create widgets alone.

Quick Tips on using Appcelerator Titanium in Windows

January 21, 2011

The Getting Started Guide and Appcelerator’s developer center were helpful, however when did something work as per the document?

I struggled pretty much two days to first install and start using it in Windows. Then spent another two hours to make it work in my DROID. Let me give the quick tips.

Installation

1. Install Java in C:\Java. Do not put it inside a folder that has spaces eg: “Program Files”. If you don’t do this it won’t work.

2. Specify the path in the $Path environment variable.

3. Install JDK, the JAVA runtime alone is not enough as javasigner and javac won’t be available in the runtime.

4. Choose APIs x.x in the emulator window when you choose android versions. Do NOT choose those without the word API.

Installing on the Device

Even though I installed android sdk for windows that included the usb driver, it didn’t recognize my DROID. After connecting the device, Choose Install driver from a specific location and choose the .inf file available in the android driver folder.

After doing any change to your $PATH or any other stuff, restart Titanium.

Develop once and deploy everywhere

December 4, 2010

I’m one of the firm believers that mobile and cloud will rule the next 10 -15 years of computing. One of the important aspects of applications is going to be its ubiquity. By ubiquity what I mean is the availability of products everywhere irrespective of what device you use. You could use either your  phone, tablet, PC, TV – these devices are going to act just as plain display. The products are going to be hosted on the cloud, delivered through the internet media to be interacted upon these devices.

That there are so many platforms (iOS, Android, Windows, Chrome, webOS, BB, Symbian…) available and every one of these vendors increasingly vie for the product and development community to their properitary platform, there is a real push back from the community. Even if you got talent in each and every platform, it is a waste of time and energy to just develop the same product in different platforms again and again. Thus increasingly there is a push from the developer community at large to develop a common platform from where you generate code specific to every platform. But for the vendors, this makes sense from every angle.

Here is an interesting link to the various initiatives going on for cross-platform mobile development. There  are three significant aspects to these cross-platform development initiatives, first being that they are all web-based (HTML, Javascript), second being that two of them are based on IUI which is briefly mentioned in the talk on Rhomobile and the last thing is that they are based on the MVC pattern. Ofcourse there are other players such as air2web who are developing and selling such tools. The significance of these are that these are opensource. There has to be a real support for the open source community in this effort without which the vendors would be successfull which will result in real loss to the consumers.