Hackers rejoice for Vancouver DevFest

There is an awesome event coming to Vancouver where participants get down to hacking, developing, and experimenting with cutting edge technologies. DevFest Vancouver is a week-long workshop-series and hackathon for experienced developers. To be more precise, there will be 7 workshops and 1 hackathon. The focus will be on cloud computing, Android TV, wearables, 3D printing, Virtual Reality, and Arduino Platform.

  • Time: November 3rd to 9th
  • Location: #200 – 375 Water St, Vancouver
  • Price: $10 each of workshops or $95 for a package of all workshops and the hackathon.

For more information and to sign up go to DevFest.ca

Will I be there with our mobile app development team? Maybe! This sounds very interesting.

Anahita 4.0 Birth release is now available

JJBean on Main Vancouver

I am so thrilled to write this announcement from the JJBean on Main Street, Vancouver. Anahita 4.0 Birth release is finally ready. The new release comes with hashtags, mentions, improved search, and improved group actors. Also we have taken out a lot more of legacy joomla code so Anahita is now a bit lighter and faster. You can read the announcement for yourself.

So what’s next?

The focus of Anahita 4.1 will be mobile web. We do a lot of mobile app development in our company and we use Anahita as the back-end for the knowledge apps. A lot of the improvements that we make will be available to you as a part of default Anahita distribution.

  1. Upgrading the CSS framework to the latest release of Bootstrap
  2. Rebuilding all the UIs following a MobileFirst approach which means we will build the UIs starting with small screens and mobile devices and then accommodate larger screens if needed.
  3. Rewriting the Anahita Javascript library using JQuery and a more common Javascript framework. We still haven’t decided on that, but AngularJS seems like a possible candidate.
  4. Additional improvement to the RESTful APIs for developing mobile apps.
  5. Removing more legacy Joomla code.

Also here you can learn more about the Anahita 4.* vision page.

Connecting The Dots at LaunchAcademy

Rastin Mehr giving a talk at launch academy about building insightful knowledge apps

So this Wednesday I gave a talk about building insightful knowledge apps and Anahita project at the LaunchAcademy in Vancouver. Most of the audience members were from the LighthouseLabs coding school and Startup founders and employees who work from this work space. In this talk I also mentioned a couple of iOS mobile apps that we have developed at rmdStudio for our clients. Here are the slides if you are interested to take a look.

I would like to thank LaunchAcademy, Hans Peter Meyer, and Keith Bao (from Corporate Champions Vancouver) for live tweeting the event for us. You can see some of them here:

Mobile Web or Mobile Apps

This article was originally posted on the rmdStudio blog.

After our previous blog post The What is mobile cloud computing architecturewe got a few emails with this question:

Why do we bother with building mobile apps? Why can’t we just use a content management system or web app with a responsive template?

Well first of all it is true that content management systems are web apps, but the end result of what they create are websites and html pages so the end users still access them to only read and browse content rather than getting specific tasks done. There is really no point in building a mobile app for your website if mobile users can just access it via the browser. Also yes it is always a good idea to use a responsive and mobile friendly theme on your website, because more and more people are accessing the web on their iOS and Android devices.

But let’s talk about apps. They are used to get work done such as communication, receiving updates, managing a project, sending a report, etc. In all of these scenarios you can indeed start with building a web app with mobile friendly user interfaces. For example this company called Mist.io who provides a cloud management service has primarily built its user interfaces for the mobile users while their service can also be accessed on desktops and laptops. We are also making the mobile first design approach a priority in our open source knowledge sharing platform Anahita you can see it on the Anahita 4.* Vision page. So if you are building a service that is going to be accessed by both mobile and desktop users, do consider making the html interfaces mobile friendly following the Mobile First design approach. Believe it or not even Steven Jobs wasn’t crazy about letting 3rd party developers build apps for the iPhone and instead he was promoting developers to make their apps to work in Safari:

And guess what? There’s no SDK that you need! You’ve got everything you need if you know how to write apps using the most modern web standards to write amazing apps for the iPhone today. So developers, we think we’ve got a very sweet story for you. You can begin building your iPhone apps today.

But the idea of mobile friendly web apps didn’t really take off the way that native apps did and there are a number of reasons that we can name here:

Convenience and Accessibility

Let’s face it, users would rather touch an icon and launch an app that does a specific task rather than typing a url in the mobile browser. Of course they can always save a bookmark as an icon, but that’s not what most mobile users choose to do. Some companies have found a workaround. They distribute apps that are merely wrappers and display the web app within the mobile web view. That raises the discussion of native vs. HTML5 user experience design.

Superior User Experience

We have covered this in another post native apps still deliver the best user experience and while we are a big fan of HTML5 philosophy of building apps that run on all types of mobile devices, until now building apps using the native iOS and Android apps proved to deliver a user experience that cannot be matched by HTML5 equivalents. This is due to many technical reasons and not to mention that users consider their mobile device their personal space and home. When you are building a native app, you are the guest in the user’s personal space. When you build mobile web apps, your users are the guests in your domain. The relationship dynamics between you and your users are very different in each space.

Snappier Rendering Time

In this context “responsive” means how quickly the server responds back to your request and results are rendered on your screen. A web app renders the pages in html and then those results are rendered within the mobile app. A native app however receives the results in a compressed data structure which is often JSONformat. Then the native app extracts the data from the server response and renders the screen using the local resources on the mobile devices. In this approach the server has to do less work and the response size is also significantly smaller. Both those result into a quicker and snappier rendering of the results on the screen while delivering a native iOS or Android user experience to the end user.

An API only cloud back-end is more cost effective

The nature of information doesn’t often change, but how users interact with those information could vary quite a bit over the years. It makes sense that we separate the client-side from where the information is stored and maintained. Building web apps that provide APIs only can be done a lot faster, because they don’t have to deal with complexities of user interactions and navigations. That way we can focus on creating a unique user experience on the mobile devices while not having to worry about how information is going to be managed and stored.

What is mobile cloud computing architecture

This article was originally published on rmdStudio blog.

Mobile and Cloud apps

Mobile cloud computing is still a mystery to a lot of people in the enterprise and organizations. Here is one one example:

What is cloud? Why do we need to store information in the cloud? Why can’t we just store everything on the phone?

This was asked by the head of IT department in a prominent medical organization in Vancouver. Valid question actually. A lot of people still don’t seem to know what cloud computing is. So:

What is the cloud?

In a simple language Cloud is basically a of very large number of networked servers that work in parallel or distributed fashion to supply a massive computing power at low cost. There is only so much we can do to push the processing speed of a single computer. It is also costly and prone to errors. Meanwhile we can build a large cluster of less expensive computers and benefit from the massive computing power that it provides. In this model the economy of scale comes to play and the more customers run their websites and web apps the lower the cost will be per account.

A good analogy is how we produce electricity. At some point in the history factories and organizations had to buy their own generators and hire teams to maintain them. At some point somebody thought of building an electrical grid and that is why we can all power our homes and offices with a low monthly fee.

When you host a website or web app in the cloud, it isn’t necessarily hosted on a specific machine. In fact it could be running on any of the servers in the cluster at any point in time. In fact from the user perspective each dedicated computer or server is virtual and exists somewhere in the cloud.

Cloud also provides a more reliable environment to host your web apps, because if one of the servers break down, the underlying cloud management software will immediately shift to the next available working machine and continues delivering your web app or website to your end users.

Cloud computing can also be elastic. For example you can configure a virtual server to increase its processing power when your website traffic goes up or reduce the processing power when the traffic is low. That way you can optimize your hosting costs.

Cloud computing is used for both computation and storage. In fact, because of cloud computing the cost of file storage has also been reduced dramatically. Two of the famous cloud computing companies in the world are Amazon Web ServicesRackSpace, and Google. If you are looking for a Canadian cloud company you can check out CaCloud.

Why do we build a mobile cloud computing architecture?

For several reasons actually. Here are 5 important ones:

1. The brain of your service is in the cloud

A lot of the mobile apps that you use everyday on your smart phone or tablet are in fact specialized browsers that connect you to the cloud and that is where the real magic is happening. We call this a mobile cloud computing architecture in which your mobile app is the client and the server is the hosted software in the cloud. The server side software may or may not be directly accessible via a desktop browser, but for sure it provides a specialized interface that your mobile app communicate with. We call that an API or Application Programming Interface.

The server side server can be quite complex. For example within your organization it can handle your intranet, products, eCommerce, and CRM all in one. Your mobile app may only access certain aspect of the software in the cloud. For example the app may only access the customer accounts, projects, or portfolio of products. You can actually build different mobile apps that communicate with the same cloud back-end but use different aspects of it.

2. It is easier to share content and assets

In the past people emailed a file or document to a long list of people using email or text message. Now you can just upload it on the cloud and all the mobile devices and desktop computers around the world can access it. That is assuming that they have all the right permissions to do so. The cloud app also takes care of the privacy and permissions.

3. Mobile devices have limited juice

As fancy and powerful our iOS and Android devices have become, their processing and storage capacities are no match for what a server in the cloud can do. Imagine you have a mobile app that is used by hundreds and thousands of users and they are constantly reading, posting, and uploading files. These assets can grow very quickly to gigabytes of data.

Also once you have lots of records, maintaining them locally on a mobile device would really slow down the mobile app which is handling that data. On the other hand when you ask for the last 20 records of products or contact information, the cloud software can zip through a large number of record and immediately send you the 20 records which you have requested over the web.

4. It is easier to maintain your data

If you store everything on your mobile device, every time that you update your data or make changes, you need to resubmit your app to the app store which is a time consuming and inefficient process. Also sometimes you need to run migration scripts and make changes your data. Running large migrations on hundreds and thousands of mobile devices out there is not impossible, but it is a risky task. So many things can go wrong.

If you save all the data in the cloud, then you can update a record with a click of a button and then the updated information will be instantly available to all the mobile users out there. Also running data migration on your server in the cloud will not only be much faster, but also more reliable too. You need to run one migration successfully and all the mobile users out there will be happy.

5. More immune to crashes and deletions

Let’s assume that all the user’s data is stored on the mobile device and the user, for whatever reason, decides to delete the app. In that case all the stored data will be lost forever. If you keep the data on the cloud and do a good job of maintaining it, the data will most likely be preserved. Even if a mobile user lose their device or upgrade to a newer device, they can still reinstall your app and log into their account where all the data and settings are still available.

Appreciating the Mobile Cloud Computing Architecture

Next time that you launch a facebook, twitter, or dropbox app on your smartphone you can appreciate the beauty of the mobile cloud computing architecture and realize that a lot of what the mobile app is doing is actually communicating with a cloud software where all the users are interacting with each other. The brain is on the cloud and your mobile app is merely a transmitter and receiver.