Friday, June 5, 2015

Grocery Checklist Android App

I woke up one Saturday morning thinking about all the groceries I had to buy for the  to coming week.Opened my notepad on my Samsung S5,and I realized how inconvenient it was to type in all the common groceries you need to buy and then erase it off the notepad.
This realization started my search on Play-store for grocery list apps.I found many great apps that enable a user to type in an item and then erase it off with a click.But there are so many common items that one needs to buy often for which typing is inconvenient.This triggered my decision to make an app where I could tap onto my mobile to select the common groceries I buy often and also add personal items .
Grocery Checklist offers a convenient way to select common grocery items and also add your personal items to the list. It also provides the ability to change the quantity, metric of an item.
Grocery Checklist helps you manage your expenditure by totaling the sum of all the products in your list. It also lets you save your regular shopping lists.
The technologies I have used for this app are Ionic framework, AngularJS, SQLite and Cordova.
I love how easy AngularJS makes it for a developer and Ionic add a mobile look to the app.
You can download the app here : Grocery Checklist
I hope you find the app useful :)

Sunday, May 31, 2015

ReachFood Android App

Hi-res icon
ReachFood  is a mobile app developed by me and published on Google Playstore that offers a convenient way to find restaurants around you.It searches the closest restaurants around you and also gives you the option of selecting the search radius.It provides a convenient display of the restaurant and its details.You can view restaurant details like price level, rating,address, pictures,etc. It also provides the ability to call the restaurant, view directions, visit website and email the restaurant details. ReachFood uses your current location service and internet and displays a list of restaurants.
The app can be downloaded from : ReachFood
You can view details of the app and the technologies used here: ReachFood.pptx

Thursday, May 28, 2015

Popular CSS frameworks for Mobile applications

BOOTSTRAP: Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web. It has over a dozen reusable components built to provide iconography, dropdowns, input groups, navigation, alerts,etc.
Strengths:
Grid System: Bootstrap includes a responsive, mobile first fluid grid system that appropriately scales up to 12 columns as the device or viewport size increases. It includes predefined classes for easy layout options.
Responsive Utilities: For faster mobile-friendly development, use utility classes for showing and hiding content by device via media query. Also included are utility classes for toggling content when printed.
Download : Bootstrap

IONIC: Ionic is Google's new framework for building hybrid mobile applications.It requires you to use AngularJS.You can find a list of all the available components here:Ionic Components.
Strenghts:
CSS Components: Reusable and customizable front-end UI elements.
AngularJS Extensions: Ionic is both a CSS framework and a Javascript UI library. Many components need Javascript , though often components can easily be used without coding through framework extensions such as AngularIonic extensions.
Icon Sets : The premium icon font offeres many different icon optoins to choose from.
Download: Ionic

SEMANTIC UI: Semantic is a development framework that helps create beautiful, responsive layouts using HTML.
Strengths:
Concise HTML: Semantic UI treats words and classes as exchangeable concepts.
Classes use syntax from natural languages like noun/modifier relationships, word order, and plurality to link concepts intuitively.
Intuitive Javascript: Semantic uses simple phrases called behaviors that trigger functionality.
Simplified Debugging: Performance logging lets you track down bottlenecks without digging through stack traces.
Download: Semantic UI

Monday, May 25, 2015

Criteria for a brilliant mobile application

For a mobile app, the first thing a developer has to evaluate is whether to code the app in native language or hybrid.Lets take a quick look at the features of hybrid app vs Native.
NATIVE :Building native applications means using the native language of the platform, Objective-C on iOS, and Java on Android. The major advantage of a native app is its performance.Native apps are faster and more responsive.The look and feel that can be displayed for a native app will always beat that of an hybrid app.If the app requires accelerated graphic processing like a gaming app, native apps are preferred.
HYBRID :Hybrid applications are web applications (or web pages) in the native browser, such as UIWebView in iOS and WebView in Android (not Safari or Chrome). Hybrid apps are developed using HTML, CSS and Javascript, and then wrapped in a native application using platforms like Cordova.Hybrid apps are faster to develop and hence require less resources and are cost effective.For content driven service apps, hybrid apps are preferred.
But whether its a hybrid app or a native , there are certain common criteria that are required for building a successful mobile application.This blog talks about the criteria of a good app from a developer perspective and a user perspective!

    FOR A DEVELOPER:
  • Ease of developing: This includes the technology, programming language chosen and the familiarity of the developer with it.The SDK used and tutorials available.

  • Ease of coding: This includes the type of integrated development environment (IDE). An IDE normally consists of a source code editor, build automation tools and a debugger.

  • Ease of Debugging: How easy is it to debug the code(breakpoints,etc).

  • Ease of Testing: Can the app be easily tested in an emulator and can it be tested on real devices.

  • Ease of Distribution : How easy is it to distribute the app on stores like Google playstore and Apple store

    FOR A USER
  • Ease of use: how easy it is for a user to perform the basic app functions.(reach results with less taps and clicks).

  • Performance: For a mobile app, speed is a critical evaluating criteria.

  • Customize: Does your app allow users to change the theme of the app and change privacy settings?Does the user feel he is in control of the app?

  • Social media: Can the user login using social media like Facebook, Twitter,etc?

  • Correct and Exact information: Make sure the contents and functionality of the app match those of the website (if any).

  • Analytics: Include analytics to capture metrics.

  • Offline capability: As far as possible, avoid having the user rely of any network.

  • Feedback mechanism: Allow a way for the user to contact the developer for his concerns,interests,etc.

  • Security: Is your app secure against security dangers like weak server-side controls, data leakage, broken cryptography?

  • Gamification: Allows you to be interactive.Users will return if it provides some kind of value and some fun!

I hope this information helps you build easy to develop and easy to use apps!Cheers!

All you need to know about Linked Lists

A Linked list is a data structure for storing similar data.It consists of a NODE.Every node has 2 elements-
a)Data : Actual data to be stored
b)Link : Pointer to the next element in the list
Linked lists are dynamic data structures where nodes can be added, deleted or updated with a minimal cost. Also linked lists do not require access to a large contiguous block of memory at compile time, but rather accessing memory as needed during runtime. This flexibility makes linked lists attractive data structures for many practical applications.

Comparison of Array and Linked lists:


  • Size: For an Array,the size of the array has to be specified at the declaration.Example:int array[20].For Linked list, size of the list doesn't need to be mentioned at the beginning of the program.We can go on adding new nodes (elements) and increasing the size of the list to any extent.

  • Accessing an element at a specific index: Arrays are allocated in one place and the location(index) of each element is known.Hence is it faster to access an array. Linked lists are slower to access since to find an element you have to traverse the list.

  • Insertion and Deletion: Insertion and deletion node operations are easily implemented in a linked list since this only takes changing the address of the link of the node.For arrays, if a new element were to be added in the middle, all the elements to its right would have to be shifted one block to the right.

  • Usability: Linked lists are really nice when it comes to inserting at random positions. If your operation involves adding lots of elements dynamically and traversing all elements anyway, a list might be a good choice.An array is very good when it comes to index accesses. If your application needs to access elements at specific positions very often, you should rather use an array.

You can find the basic linked list operations in java in my github repository :https://github.com/abs110020/LinkedListOperations

Friday, May 22, 2015

ReachFood Android App

Hi-res icon

ReachFood  is a mobile application published on Google Playstore that offers a convenient way to find restaurants around you.It searches the closest restaurants around you and also gives you the option of selecting the search radius.It provides a convenient display of the restaurant and its details.You can view restaurant details like price level, rating,address, pictures,etc. It also provides the ability to call the restaurant, view directions, visit website and email the restaurant details. ReachFood uses your current location service and internet and displays a list of restaurants.


The app can be downloaded from: ReachFood


You can view details of the app and the technologies used here:
ReachFood.pptx