ITH Logo New

Contact Us

By clicking “Let's Talk”, I agree to the ITH Privacy Policy

5 iOS App Development Tools

Sooner or later every organization wants a customized app to help grow their business. Any aspirant iOS developer will face many challenges during the development of an application. That is why I want to share the five iOS app development tools that will help you or your team develop an iOS app efficiently.

Are you just starting out in iOS mobile app development? Do you have the 5 essential tools? Read our blog to find out. Click To Tweet

First, your app will require a basic infrastructure. Obviously, many developers understand this. But have you heard of the tools that will make this process much more simple? Read on to learn more.

1. Basic Infrastructure

a. macOS

macOS is a series of graphical operating systems developed and marketed by Apple Inc. You will need this for development since Xcode can only work on macOS.

b. Xcode

Xcode is a fast and consistently smooth iOS app development tool. It is Apple’s IDE (Integrated Development Environment) for both Mac and iOS apps. Xcode is the graphical interface you’ll use to write iOS apps. Xcode includes the iOS SDK, tools, compilers, and frameworks you need to design, develop, write code, and debug an app for iOS. But for native mobile app development on iOS, Apple suggests using the modern Swift programming language.

c. Simulator

Simulator allows you to rapidly prototype and test builds of your app during the development process. Although it is installed as part of the Xcode tools, simulator runs on your Mac and behaves like a standard Mac app. During use it can simulate an iPhone, iPad, Apple Watch, or Apple TV environment.

d. iOS Software Development Kit (SDK)

Some iOS SDK essentials are the Cocoa Touch frameworks that include the UIKit, GameKit, PushKit, Foundation Kit, and MapKit. Use these iOS app development tools to build software much easier.

Now you have the tools that make code easier. How about when your team goes to build the framework? What tools give them an easy environment to set the stage for a well-developed app?

2. Standard practices for a project using iOS app development tools

a. Set Up the iOS Environments

It’s best to have separate environments for your iOS apps, especially if they are communicating with any servers. For instance, consider an iOS app and three different available web backend environments: development, staging, and production.

b. CoreData for local DB operation (if needed)

Core Data is one of the most popular frameworks provided by Apple for iOS and macOS apps. Core data is used to manage the model layer object in your application. You can treat Core Data as a framework to save, track, modify, and filter the data within iOS apps; however, Core Data is not a Database. Core Data uses SQLite as its persistent store but the framework itself is not the database. Core Data does much more than databases, like managing the object graphs, tracking the changes in the data and many more things.

c. Version Controlling

Version control is a system that records changes to a file or set of files over time. This allows you to recall specific versions later.

d. Git

Git is the most recommended system to manage the versions. It is a free and open-source, distributed version control system. This system is designed to handle everything from small to very large projects with speed and efficiency.

By the time you have developed a framework, you have hopefully settled on an optimal design for the app. So what is it going to be? There are various architectural structures that you can choose from, as you will find out in the next section.

3. Adopt an optimal architecture design pattern

It is very important to adopt an efficient architecture well suited for the project you are supposed to work on. Adopting an architecture helps in the future enhancements and maintenance of the project, if needed. Here are a few architectures to use while developing:

a. MVC

It stands for Model, View and Controller. MVC separates applications into three components – Model, View and Controller.

i. Model

Model represents the shape of the data and business logic. It maintains the data of the application. Model objects retrieve and store model state in a database.

ii. View

This is a user interface. It displays data to the user, using the model, and also enables them to modify the data.

iii. Controller

Controller handles the user request. Typically, users interact with view, which in-turn raises any URL request. This request will be handled by a controller. The controller renders the appropriate view with the model data as a response.

The following figure illustrates the interaction between the Model, View and Controller.

MVC

b. MVP

MVP stands for the Model, View and Presenter. Model and View work the same as in MVC. Only the Presenter plays the role as a UIKit independent mediator.  

The following figure illustrates the interaction between the Model, View and Presenter.

MVP

c. MVVM

The MVVM is the newest version of MV(X). We hope this new version took into account problems MV(X) faced previously. In theory, the “Model-View-View-Model” looks very good. The View and the Model are already familiar to us, but also the Mediator, represented as the View Model.

The following figure illustrates the MVVM.

MVVM

d. VIPER

This is our last candidate. VIPER doesn’t come from the MV(X) category. It separates responsibilities in five layers.

i. View

This is a user interface. It displays data to the user using Model and also allows them to modify the data.

ii. Interactor

This contains business logic related to the data (Entities) or networking. For example, creating new instances of entities or fetching them from the server. For those purposes, you’ll use some Services and Managers. These are not considered a part of VIPER module, but rather an external dependency.

iii. Presenter

It contains the UI related (but UIKit independent) business logic, and calls on the Interactor for data.

iv. Entities

This is the responsibility of the Interactor. It contains your plain data objects, not the data access layer.

v. Router

The Router is responsible for the segues between the modules.

The following figure illustrates the VIPER.

VIPER

Finally, you’ve settled on a pattern for the app to follow. Now if you haven’t ever met the following library tools, let me introduce you. There is a reason these are popular among iOS developers!

4. Make use of libraries and frameworks

Because iOS is so popular there are a significant number of libraries and frameworks. They can be used to solve a number of issues. They can implement custom UI animations or work with device hardware. Consequently, these third-party iOS app development tools can significantly reduce the amount of effort and cost of building the same features from scratch.

i. CocoaPods

1. CocoaPods comes as a Ruby library and need to be installed using RubyGem. It is built with Ruby and is able to be installed with the default Ruby available on OS X.

ii. Carthage

1. Carthage is another simple dependency manager for the Cocoa application. It downloads and builds the dependencies, but will not change the project file. Xcode project builds the setting like CocoaPods. You have to manually drag a framework’s binaries to Linked Frameworks and Libraries.

2. You can install Carthage using HomeBrew.

iii. Swift Package Manager

1. The Swift Package Manager is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system and can automate the process of downloading, compiling, and linking dependencies.

a. Third Party Libraries

The most important benefit of using third party libraries is that it saves you time. You do not need to develop the functionality that the library provides. Instead, you can focus on the core business logic of your app: the features that really matter. Typically, you will spend a fraction of the time it would take to develop and test an app’s functionality from scratch.

Here are few third party libraries which are well known and make a developer’s life easier:

i. AFNetworking

It is an Objective-C networking library for iOS, macOS, and tvOS. This robust library has been around for many years. From basic networking to advanced features such as Network Reachability and SSL Pinning. AFNetworking has it all.

ii. SDWebImage

SDWebImage is an asynchronous image downloader with caching. It has handy UIKit categories to do things such as set a UIImageView image to a URL. Although networking has become a little bit easier in Cocoa over the years, some basic tasks have not improved. For example, setting an image view to an image using a URL is still difficult.

iii. Alamofire

Alamofire is AFNetworking’s successor, but is written in Swift. You might be wondering why there are two different networking libraries in the upper echelon of this list. I assume it’s due to the fact that networking libraries are just extremely useful for iOS app development. The two libraries share a similar feature set. The main difference is the language in which they are written.

iv. SwiftyJson

Your life will be so much easier when it comes to handling JSON in Swift. Combining JSON with Swift can be tricky. The type casting issues make it difficult to deserialize model objects and it may require a bunch of “nested if” statements. SwiftyJSON makes all of this quite simple to do. That’s probably why it’s the second-most popular Swift library.

v. PromiseKit

PromiseKit is a popular third-party library for Swift and Objective-C programming language. Many developers use this library to simplify the asynchronous tasks they have in their apps. Promises allows you to control the whole asynchronous background process with this powerful closure syntax for chaining multiple async functions.

Now that your app is complete, you will need to distribute it. Overall does it matter how the app is presented to the world? Maybe – if you want a small selection of people to review it first.  In that case find out what options are available.

5. Choose the distribution model for your iOS app

As soon as your app is ready to be shipped, it’s important to decide how you want to distribute it. Currently, Apple offers three models. The most widely used option is to upload the app directly to the App Store. This way it will become available to every iOS user.

Additionally, you can set some parameters, such as target country, supported device, or iOS versions. If you want to beta-test your app before launching it globally, you can use the TestFlight service provided by Apple. It allows you to invite up to 100 users to test the application privately.

For enterprise-level apps or internal business tools, you can use the iOS Developer Enterprise Program or Volume Purchasing Program. Although a costly alternative to the previous two methods, this approach offers complete privacy. It allows you to make the application available only for your employees and contractors.

 

Conclusion

In conclusion, these iOS app development tools will simplify any iOS development you or your team may do in the future. First, remember to establish the basic infrastructure. Then, follow the standard practices of creating several versions. After that, decide which architecture will be most efficient for the project. Also take advantage of third-party tools and libraries. Finally, choose how you will distribute the app. Overall, we wish you all the best in using these iOS app development tools. If you are short staffed or need an iOS consultant for the next project, email us now at solutions@ithands.com.

Business Lessons from Growing up in Ecuador

Growing up in Ecuador was an incredible experience that I would not trade for anything. It is a beautiful country with an amazingly rich culture. In Ecuador, I learned how much I enjoyed business by haggling in the marketplace, but I also saw the effects of deep poverty among my friends. I hoped someday to be able to use business as a way to empower others. I learned a few business lessons while growing up in Ecuador that have proved helpful to my current work at IT Hands, an international web development company.

#CrossCultural Business Lessons: “Without a sustainable business your social impact cannot survive.” Read more in Greg’s blog. Click To Tweet

 

1. Learn About Cross-Cultural Differences When Doing International Business

Many fellow gringos would visit our family in Ecuador and were often frustrated by their negotiating experiences when they bought from the local markets. Simple things, such as the weight of “yes” and “no,” would drive people crazy! To an American “yes” means “yes” and “no” means “no.” To an Ecuadorian, “yes” means “hmmm…” and “no” is practically a bad word. For an Ecuadorian, the American “yes” is based on how many times they say “yes” and how enthusiastically they say “yes.” Understanding this is crucial to reaching an agreement. India is very similar to Ecuador in this sense. A good book to read when working with Indian teams is “Speaking of India”.

 

2. Take an Expert with You if You are Walking into Unfamiliar Territory

We recommended that most gringos go to the market with someone familiar with the culture. This would help with language differences and getting the local price instead of the gringo price. This advice is true in the tech world as well. Technical conversations can sound like a foreign language to many of us. If you aren’t technical and need to make a technical decision, I would highly recommend bringing someone to calls who understands the lingo and can make sure that you are being offered the best technical solution for your problem. If you don’t know of anyone in your network who can help, then reach out to matt.hartel@ithands.com. He has helped many businesses successfully get through this exact dilemma.

 

3. Social Impact should not be your Financial Undoing

I worked at this awesome cafe in Loja that not only served great coffee and food, but also taught English for free and offered free counseling. Helping young adults advance their careers through learning another language and helping those struggling with their mental health were important for the community. Unfortunately, this became so much the focus of the cafe that financials became secondary. Inevitably, the cafe went out of business. Now none of those services can be offered. The most sustainable way to help others is through a profitable organization.

 

4. Create a Sliding Scale for the People You want to Help the Most

My family ran an ophthalmology clinic in the Andes to help the rural poor with their vision. In order to make the clinic sustainable, we made it a for-profit business, but some of the people we set up the eye clinic to help were not able to afford it. In order to help those for whom we created the eye clinic, we created a sliding scale. Because we lived in a small rural community we knew most people’s socio-economic status from their last name. If they did not have the money to pay for their appointment we would set up a system where they could pay with eggs or a delicious chimichurri sauce. Just make sure your bottom line stays healthy so that you can continue to help others.

 

5. Free is not Valued

At first we offered eye glasses for free to these poorer families, but they kept coming back with broken glasses. As soon as we asked people to pay for them (even if it was with a payment of just a few eggs) the broken glasses problem stopped. People value what they pay for.

 

Conclusion

In summary, the business lessons I learned growing up revolved around understanding the culture. Get to know the people and culture that you are working with and if you aren’t an expert bring one into the conversation. If you are using your business for a greater purpose than a good bottom line, don’t forget about the business lessons regarding the bottom line. Without a sustainable business, your social impact cannot survive. If you have not been to Ecuador I highly recommend going! It is a beautiful place with the Amazon Rainforest, Andes Mountains, and Pacific Ocean all in a country the size of Colorado.

Outsourcing Models: 2 Software Development Options

Are you looking into outsourcing? Not to overwhelm you, but there are far more IT outsourcing models out there than you ever realized. Within IT Hands, we try to keep this could-be-complex scenario as simple as possible. We offer support to companies for full projects or long-term help in a specific skill set. In this blog, we refer to these two outsourcing engagement models as project-focused vs people-focused.

Outsourcing does not have to be complicated. Take a look at our company’s two simple #ITOutsourcingModels Click To Tweet

Project-Focused or People-Focused?

Let me explain our IT outsourcing models a bit more in detail. With the project-focused model, the client works closely with the Project Coordinator, with less direct communication or control over the team, whereas the people-focused model allows the client to be the project manager and work beside the extra staff available to their team. These additional team members usually need to be able to work a certain number of hours. But if you think of them as an extension of your team, you can assign them on various projects within your business.

Project Model

Type of Project

How do you know which IT outsourcing model will be best for your project? We provide a table below to give you an idea when you may need to outsource a full project or just hire extra staff for a certain time period. Take a look and decide: Do you require full-project support or just a few more hands on deck?

Type of Project

Questions to Ask Yourself

Are you building an MVP?

Do you have an idea for an app, but are unsure of whether this “idea” will be successful? Do you want someone else to create your app or web application? Are you wanting to get your product on the market quickly to get user feedback? Let the team focus on the development and coding details and you focus on the user and their feedback.

Do you have a new product with no users?

You can outsource the whole project and allow the team to develop the product, while you focus on feedback and marketing.

Do you have an idea, but no team?

Maybe you need someone else to handle the development, while you focus on creating your product.

Do you already have a successful product?

Perhaps you already have a mobile app, that has thousands of users but you need people to help with additional development to manage the volume or keep it up to date.

Are you wanting control of the project management?

Typically, when you are outsourcing the project, you’re outsourcing the management too. If the outsourcing model you need includes a team that can manage the project fully, then choose to outsource the entire project. If you need additional help, but want to manage the project, then you can outsource specific skills.

Do you need more team members?

In this case, you already have a team with certain skill sets, but need additional support. Perhaps your team specializes in design, but would benefit from technical support.

Do you have a complex product?

If the code infrastructure of your product is complex, but you already have the product built, then outsource the skills for more support. If you have a partially-constructed project then our team can rectify the old code and create what you had in mind from the beginning.

Are you wanting additional support at a fixed monthly cost?

If the cost of a full project is not in your budget, take on a few outsourced employees. You won’t be paying for their insurance and benefits – the employer takes care of that – but you will have a planned-out payment each month.

Do you only want to pay for time and materials?

Rather than paying a salary for extra support, it may be more cost-effective for you to pay for time and materials on a project.

Decide on Your Needs

The decision can be a tough one: whether to outsource all your development or hire a part-time developer. We have met with many clients that needed to discuss details further before making the decision about which outsourcing model they choose. It can be hard to know what type of support you may need until you lay it all out. We understand that.

Contact us at solutions@ithands.com to discuss what kind of support you may need.

5 Essential App Development Tools for Android

You need to use these 5 dev tools in your next Android project. Read our latest blog. #AppDevTool Click To Tweet

We live in the Mobile App Era. There are a host of app development tools available for developers. Android and iOS are the two most prominent operating systems and both have their own tools for developing apps. So if you are planning to have a mobile app for your business, creative idea or service, you should be aware of the tools that are needed to develop that mobile app. In this blog, we will talk about Android tools.

How are Android Apps developed?

Every software development needs an IDE (Integrated Development Environment) for ease in using app development tools. Android is no exception. We have the Android Studio, which is a full, sophisticated IDE for the Android app development. Wondering what’s in the Android Studio IDE? Read on.

Here are some command-line tools for Android app development.

1. Android SDK tools

Android Software Development Kit (SDK) is a toolset that helps developers to create apps for Android OS. In the SDK you will find libraries, a debugger, and an emulator that help you to start developing apps.

2. Platform tools

New versions of the Android OS are frequently released, so platform tools provide support to the new features of Android and have compatibility with the older versions.

3. Android Emulator

With the help of Emulator you can test your apps without using the real devices.

Now you have an idea of what’s in the Android Studio. So then, let’s move ahead to know what else is needed in app development.

  • 1. Android Libraries

Because Android is open source and has great community support, we can easily find the small pieces of code that we can use. This can be done by adding the libraries into our application. Most of the libraries are found in the GitHub platform. Here are some of the libraries with a short description.

a. Retrofit

This library is used to get the data from the server via Web services and use it in the app. For example, let’s say we are developing an app to show the latest movies. We will create a web service that will show the list of movie names from our server. The format can be JSON. So by using the Retrofit we can get the JSON and parse it to show in the app.

b. Glide

Glide is the library to show the images from the server or local storage in a way that maintains the aspect ratio and can handle the image loading, caching, etc. It is recommended by Google.

c. MaterialDesignLibrary

This library helps you create great lightweight UI for the app. It gives the variety of custom UI components that gives extra intuitiveness in the UI of the app.

  • 2. Gradle

Gradle is a build system that helps in building, testing and deploying the app. This system generates the APK from the Java and XML files. There are two types of Gradle (build.gradle) script:

    • a. Top-level build.gradle
    • b. Module-level build.gradle
  • 3. Databases

The Android OS has a local database known as SQLite to store the data locally inside the phone. There are a few third-party database libraries also on the market that can be used in the app. For example, Realm, Room, OrmLite, greenDAO.

  • 4. Firebase

What is Firebase? Maybe you need a mobile app but you don’t want to deal with problems like authentication, server management, file storage, databases, crash management tool, notifications, analytics, etc.

Firebase is the single solution for all the above problems. Here are some key features of Firebase:

    • a. Realtime Database
    • Most of the databases like SQLite provide you the data when you ask for it, but the Realtime Database, like Firebase, gives you the data whenever it is updated.
    • b. File storage
    • Mostly all the apps save the files such as profile picture. Firebase gives a simple way to store images on the cloud.
    • c. Authentication
    • Firebase has a variety of authentication systems that can be used in the app. For example, email/password authentication, social login, phone-based authentication, etc.
    • d. Crashlytics
    • Firebase crashlytics help you fix the issues that come in the live app by versions.
    • e. Analytics
    • Firebase also provides the analytics feature by which you can analyze the usage of the app with different custom events.
    • f. Notification
    • Almost every app has the feature of push notifications. Firebase SDK provides a simple way to integrate the push notification.

There are many other great features of the Firebase SDK and the best part is that it also can support the iOS platform.

  • 5. Code Architecture

Every big idea starts with a small concept, therefore it is important to lay down the foundation in a way that takes the least amount of effort in maintaining and growing with features. One of the big mistakes that a developer can make is not using the planned code architecture.

The following are some problems that occur because of bad or no code architecture.

    • a. Huge amounts of code in a single class or file.
    • b. Code is impossible for another developer.
    • c. It is difficult to debug.

So what you get with good code architecture? Let’s check.

    • a. Understandable code.
    • b. Low-cost maintenance.
    • c. Simplicity.

There are some developer-friendly code architectures for Android.

    • a. MVC (Model View Controller)
    • b. MVP (Model View Presenter)
    • c. MVVM (Model View ViewModel)

Every code architecture mentioned above has its own beauty. But also remember to think twice, code once.

Conclusion

Now you should have the basic idea of what five essential app development tools are necessary for Android app development. Though this is not a complete list, it is a start for any budding developer or Android development team.

If you would like to learn more about Android app development or work with our team of Android experts contact us at solutions@ithands.com.

4 Ways to Leverage Technology for Your Business

Could these 4 ways of combining #TechnologyAndBusiness build your business? Read our latest blog. Click To Tweet

In today’s world, most businesses interact with their customers online. Yet, do they really know how to leverage technology in the best way to benefit and grow their business? There are a number of mediums any business can use, and each one has its own return on investment. We’ll look into the following:

  • e-Commerce stores
  • Social media
  • Website forms for lead generation (Examples: Contact or Get in touch forms)
  • Apps

Some business owners use these tools and make money off their products by connecting with customers online, while other businesses (though well-connected) are not able to gain a lot of value. Why is this? 

Technology is a tool that needs to be used with the best interest of the business in mind. It’s not enough to just have all these technology mediums set up for your business. The system needs to be done well enough that it opens the door for more business with your consumers.

With this in mind, let’s look at a number of ways you can use technology for your business needs.

1. Setup the Right Business Website

  • a. Explain your services

Explaining what you do clearly and concisely is essential for growing your user base online. Moreover, the way you represent content helps your website visitors understand your services and contact you to get more information. You can use the various technology options to show your services.

For example, the following list shows what visuals will catch your reader’s eye.

      • i. Visual statistics (charts etc.)
      • ii. Animated infographics
      • iii. Embedded videos (Youtube/Vimeo)

website

  • b. Gather leads

Writing a compelling Call to Action (CTA) helps any business get the best leads. For instance, a good call to action will grab the attention of potential customers and allow them to easily contact you via your website forms.

Furthermore, a number of services, like Jotforms and Gravity forms, can provide embedded forms to hook into your website. Place them in noticeable areas where they capture the attention of site visitors.

The more leads you have, the more business you close with your customers.

  • c. Allow site visitors to interact with your website

Don’t just create clickable CTAs. Provide an opportunity for your customers to interact with your website. Perhaps giving them a way to explore and provide feedback to you will build your business (all this depends on your business model).

For example, users can give their opinions about the business in a variety of ways.

      • i. Taking a survey about your services or products
      • ii. Filling out a questionnaire about your website to provide feedback
      • iii. Logging in to your website to perform activities (like support tickets or contact forms)
  • d. Sell from your website

If your business has services or products that can be sold online, set up an order system, like an eCommerce site or appointment-booking calendar. Be sure it is easily accessible, contains quality images and gives a straightforward process to bring customers to the end of the purchasing process.

Obviously, every generation is moving more and more towards buying services and products online. While this requires less communication and discussions between buyer and seller, it also puts a weighty responsibility for the developer and business to make sure the process runs smoothly.

2. Get a mobile app (Target mobile users)

It is now the norm for most users to use their phones more than computers for work and personal shopping. Is it best for your business to grab the attention of mobile users to sell your services?

With a number of technology options available for Hybrid/Native mobile platforms, it’s easy to get a mobile app for your business and launch it on the app stores. Does your business need to grow its user base by targeting mobile users?

The following are the most popular and reliable technology options to get a mobile app.

    • a. React Native (Hybrid)
    • b. Flutter (Hybrid)
    • c. Native apps for iOS and Android

Apps

3. Reach out to users via social networks

  • Social media websites

One of the best, and maybe even cost-effective, ways to reach users is social media; Facebook, Instagram, Linkedin, Twitter (even Youtube!) and other platforms, which allow you to interact personally with people. These tools also provide business options to create your business pages and allow users to interact with you.

If you’re going the social media route, get the most out of these services by adding as many details as you can. Provide a strong CTA from the social side to your website landing pages so that users know where to go for more information.

Other social interactions include writing blogs and publishing on various sites including Medium.com and Linkedin. Most people are interested in reading blogs and will contact you if they find your blogs helpful.

Social Media

4. Use a Customer Relationship Manager (CRM) to manage your leads

One of the challenging jobs business owners face is managing their leads and customer information efficiently. In order to keep your business organized, store lead information at a centralized place so that you can run various campaigns (emails, text) with them.

CRM solutions help store leads in a readable manner. For example, the following various activities can be organized in a single workspace.

    • a. Create tasks to contact your leads from time to time
    • b. Run email campaigns to inform about various offers you may have
    • c. Send text messages to inform about quick offers
    • d. Run reports and see statistics of your conversions from leads to customers

Hubspot is one of the most popular CRMs being used by many businesses to manage leads. However, other CRMs, like SalesForce, SalesLoft, and Pipedrive, can be just as effective.

 

CRM

Conclusion

In summary, do you know how to leverage technology to showcase your business online? We know how overwhelming it is to process through what technology best fits your business.

To begin, there are many detailed questions we ask our clients as we work through which technology is the most beneficial. Although we are an IT business, we know that not every business should have an app or be on social media. As a result, IT Hands helps businesses like yours choose the best option to fit their business. Reach out to us at solutions@ithands.com to discover the right technology solution for your business.

Integrity in Business

Is honesty still the best policy? Read our co-founder’s latest blog. #BusinessIntegrity Click To Tweet

The Situation

We had just finished a project for a client. We were conducting a final routine check and would be bidding the client farewell and moving on. They were satisfied with our work. We were happy with how the project had gone with our team. Then we learned something was not done properly in this project.

As a business, we are very vocal about our transparency with clients. We want to hold to the principle of integrity in all of our dealings. That standard is always being tested. After being involved in this business for 17 years, I am always amazed by how often integrity is challenged. This was the case in this situation:

All was not well. Within the client’s internet marketing campaign, our team had set up too large of a geographical area. With the location not centralized, we knew our client paid more for their campaign than if the geographical area parameters were more narrow. We had already completed the project. Did it matter to us anymore? Was it our problem? 

The Choice

We took a step back to consider it. Without any doubt in our minds, we knew we needed to find out how much our mistake had cost this one-time client. Once we did the math, we found that the client had paid a sizable amount. The client was unaware of the mistake. We had given them the chance to review all of our work before closing the project. They hadn’t caught the mistake. They had moved on with life, happy with our work, and we had ended on a good note.

Furthermore, we weren’t pocketing any of the additional money. The payment went to a third-party extension of their website. Was it really our responsibility to cover this mistake? Yes, we thought, it most certainly was.

Matters of integrity are not always glaring issues. Many areas in business are not completely right or wrong.

Giving correct change. That is straightforward. 

The Decision

But even so, in this decision, we knew what we needed to do. Although the project was over. Obviously, the client had left satisfied with our work. Even though we were pocketing nothing from this mistake. Even though the client had no idea about this mistake and would probably not find out. We knew our mistake cost someone extra money. So what did we do?

We wrote a check. We apologized. The client thanked us, taking the check and changes to the geographical campaigning area. Not only did we show a one-time client that we would not gloss over mistakes, but the situation gave us an excellent opportunity to share with our staff.

My business partner and I had been telling our team in India that we are fully transparent in our dealings with every client. We have taught about integrity during development days. Now they were able to see our words become actions. We were able to show our staff what we often quoted to them: “Integrity is doing the right thing, even when no one is watching.” (C.S. Lewis)

Are you looking for a development partner? Contact us today at solutions@ithands.com.

AWS vs RackSpace

AWS or Rackspace - which is better? Read our honest review. #CloudHostingComparison #BestCloudService Click To Tweet

What is the best hosting server for hosting a web application? Every hosting provider out there has its pros and cons. As a result, the decision is a tough one.

At IT Hands, we have worked with AWS and Rackspace and can provide you with details about the pros and cons of both cloud-hosting platforms. Furthermore, this blog will show you the difference between some of the core features and services of AWS and Rackspace.

Performance and Reliability

AWS

With AWS, it’s easy to set up a server with the AMI (Amazon Machine Image). The configuration of the server can be defined based on the technology. AWS supports the serverless architecture using AWS Lambda. The servers can scale automatically based on the load of the servers and AWS has a large number of data centers across the world. AWS comes with a very user-friendly dashboard and has more services than Rackspace. It helps us a lot while managing hostings and site performance.

Rackspace

Rackspace, on the other hand, does not have as many data centers around the world. It’s a bit tough to manage the servers using its dashboard. Also, the servers cannot be defined based on the application technology, like AWS is able to do.

Hosting Server Rating

AWS ★★★★★

Rackspace ★★★☆☆

 

Security and Monitoring

AWS

AWS comes with an integrated feature called IAM (Identity and Access Management). IAM allows us to manage security and access control within the instances. For example, we can define the specific roles based on the users and restrict their access as needed. In addition to this, AWS comes with security group management. Security groups help with whitelisting IP’s and ports to the servers to keep these secure.

In fact, AWS has its Cloudwatch monitoring service, which is one of the best infrastructure monitoring services. Based on service levels, AWS is on the higher end than Rackspace.

Rackspace

On the other hand, Rackspace provides RBAC Role-Based Access Control. It is a nice way to restrict who has access to Rackspace servers and infrastructure. Rackspace has the Rackspace Cloud Monitoring, which is a bit complicated.

Hosting Server Rating

AWS ★★★★☆

Rackspace ★★☆☆☆

 

Support

AWS

In AWS, there are different levels of support options. You can pay $100 to get business support from AWS. Basically, this includes chat support with the server team and they respond quickly to any queries. I like how AWS support is less expensive but still helps with any issues/queries.

Rackspace

Similarly, Rackspace provides managed support as an add-on service and it is awesome! Although they are available 24/7 and help us with any specific question, it costs $500 per month.

Hosting Server Rating

AWS ★★★★☆

Rackspace ★★★★☆

 

Cloud files (CDN) (Amazon s3 vs Rackspace cloud files)

AWS

AWS has a well-known product called S3. At this point, Amazon S3 is a very reliable and scalable cloud file-based service. It is inexpensive and allows us to add more and more space if needed. S3 is very simple and easy to set up.

It also allows us to create logics to set file permissions and use Rest API for development purpose. The security is one of the biggest plus factors with S3.

Rackspace

Rackspace has a cloud files system called Rackspace Cloud Files. The most important part of this system is that it has an Akamai CDN service available. In the first place, it’s inexpensive and able to be paid on an as-used basis. What’s more, it comes with simple file upload, simple scaling, various media types file support. In addition, it also provides easy deployment and has a simple learning curve. AWS S3 is our choice since it is ideal for development.

Hosting Server Rating

AWS ★★★★★

Rackspace ★★★★☆

 

Other Features

AWS

AWS has native support for DevOps technology like Cloudformation tool for infrastructure automation, CodeDeploy for application deployment and AWS code pipeline for continuous integration and delivery. Moreover, AWS provides managed services called Elastic Container Service (ECS) and managed Elastic Kubernetes Service (EKS) to build the microservice application.

Rackspace

In the same way, Rackspace has many of the support tools and technologies that AWS has, but does it with some third-party integration, not natively.

Hosting Server Rating

AWS ★★★★★

Rackspace ★★★☆☆

 

Conclusion

In conclusion, we at IT Hands prefer AWS over Rackspace for web applications hosting. AWS provides a number of tools to manage different scenarios and provides a great level of hosting support. Without a doubt, Rackspace has its good qualities – a valuable security system, even if they don’t have the broad reach around the world like AWS. In addition, they have quality support, but their price is higher than many can afford. That is why we think AWS is the best hosting server. 

Need a trusted team to host your website? Learn more about our development process or email us at solutions@ithands.com.

Best Hosting Server Rating

AWS ★★★★★

Rackspace ★★★☆☆

How to Create an App Install Date in React Native

How to find the #AppInstallDate on your phone? Discover in this blog. Click To Tweet

Ever wondered where the React Native app install date is located? I did, several weeks ago. I have worked on React Native for quite a while now and I love building apps with it. Even with all the benefits that React Native brings to the table, it sometimes can be difficult to do some trivial tasks. One such thing was to find the React Native app install date in both Android and iOS.

I searched a lot of libraries in React Native to find out when an app was installed on my phone, but every time, I failed. I couldn’t find the installation date, because presently there is no way to find that info on React Native.

Then, I heard about Native Module in React Native. Native Module helps us to integrate our native code to React Native. React Native is a new technology in the market and therefore does not provide all the native features that we need, so we need to build it ourselves. We’ll do this by using Native Modules for both Android and iOS.

Getting Started

First, create a React Native project using react native command line interface (CLI).

react-native init NativeModuleExample

Now, we need to create a bridge between Native and JavaScript code. There are two environments in React Native; JavaScript and Native. Both of them communicate with each other and this communication is done by using a bridge. The bridge provides a way for bidirectional and asynchronous communications between these two environments.

In order to create this bridge in our example app, we need to install the react-native-create-bridge package.

npm install --save react-native-create-bridge

Then, from the root of our project, run the following:

react-native new-module

There will be a prompt asking you for:

  1. Your bridge module name: AppInstallDate
  2. Select Native Module from bridge type.
  3. Select default platform, iOS/Obj-C and Android/Java.
  4. Then select the directory where you would like your JS files. If the directory folder doesn’t exist, the platform will create it for you.

This will create a file AppInstallDateNativeModule.js in our project. Now, it’s time to introduce Native environment in our React Native project. For this, we must have Android studio and Xcode to write native code.

For iOS/Obj-C

Open Xcode and right-click on your root project folder name and add files to your NativeModuleExample. Select the files associated with your module and click “Add.”

Now it’s time to write some native code to create the React Native app install date. Pen AppInstallDate.m and update the method RCT_EXPORT_METHOD. It should now look like this:

RCT_EXPORT_METHOD(exampleMethod)
{
NSURL* urlToDocumentsFolder = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
__autoreleasing NSError *error;
NSDate *installDate = [[[NSFileManager defaultManager] attributesOfItemAtPath:urlToDocumentsFolder.path error:&error] objectForKey:NSFileCreationDate];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/mm/yyyy hh:mm:ss"];
NSString *stringDate = [dateFormatter stringFromDate:installDate];
[self emitMessageToRN:@"EXAMPLE_EVENT" :@{ @"date":stringDate }];
}

For Android/Java

Open Android Studio and look for MainApplication.java in android/app/src/main/java/com/NativeModuleExample. Then add your package to the getPackages function like this:

import com.nativemoduleexample.appinstalldate.AppInstallDatePackage;
@Override
protected List getPackages() {
return Arrays.asList(
new MainReactPackage(),
new AppInstallDatePackage()
);
}

Open AppInstallDateModule, the file inside java/yourapp and update exampleMethod function as given below.

@ReactMethod
public void exampleMethod () {
// An example native method that you will expose to React
// https://facebook.github.io/react-native/docs/native-modules-android.html#the-toast-module
try{
long installedTime = reactContext.getPackageManager().getPackageInfo(reactContext.getPackageName(),0).firstInstallTime;
// Format the date time
String dateString = DateFormat.format("dd/mm/yyyy hh:mm:ss", new Date(installedTime)).toString();
final WritableMap event = Arguments.createMap();
event.putString("date", dateString);
emitDeviceEvent("EXAMPLE_EVENT", event);
}catch(PackageManager.NameNotFoundException e){
e.printStackTrace();
}
}

Final Steps

Open file AppInstallDateNativeModule.js from your project i.e. NativeModuleExample, and update the code as follows:

// Created by react-native-create-bridge
import { NativeModules, NativeEventEmitter } from "react-native";
const { AppInstallDate } = NativeModules;
const AppInstallDateEmitter = new NativeEventEmitter(AppInstallDate);
export default {
exampleMethod() {
return AppInstallDate.exampleMethod();
},
emitter: AppInstallDateEmitter,
EXAMPLE_CONSTANT: AppInstallDate.EXAMPLE_CONSTANT
};

Now open the App.js file and update the code.

import AppInstallDate from "./AppInstallDateNativeModule";
componentWillMount() {
AppInstallDate.emitter.addListener("EXAMPLE_EVENT", ({ date }) => {
alert(date);
});
}
componentWillUnmount() {
AppInstallDate.emitter.remove();
}
onPress = () => {
AppInstallDate.exampleMethod();
};
render(){
return(
<TouchableOpacity onPress={this.onPress}>
<Text>Click Me!!!</Text>
</TouchableOpacity>
);
}

Conclusion
We have successfully created a React Native app install date. I’ve skipped some boilerplate code for this app, but you can find that in the GitHub repo here.

I hope this repo will help you to understand the Native Module linking in a React Native app. Maybe you can be inspired by this to build something amazing. Please feel free to leave any feedback, I’m always looking for better solutions! Contact me through solutions@ithands.com.

eCommerce Options in WordPress

Overwhelmed with #eCommerce options? Review these 8 plugins you can use for #WordPress Click To Tweet

eCommerce Options Within WordPress

 

Quick Intro on WordPress

According to a web survey by W3Techs, WordPress (WP) powers 30 percent of all sites on the web. That is a 5 percent increase from 2015. WP is a great platform that is easy to manage and customize for your specific business needs. You may already have a WP website, so why make a new one? All you need to do is use a WP plugin to create your online store. Some companies may consider rebuilding their WP site for eCommerce, depending on the theme they use. Consider your options. There are many out there. This blog will list some of those options for you.

Options for eCommerce in WP

WP has many options for eCommerce plugins. Some of these plugins are free and others need to be purchased. Each plugin has its own strengths and weaknesses. Some are specialized for selling digital goods, such as photos, music or eBooks (things that can be downloaded online). Others are suited better for selling physical goods that would need shipping and inventory management.

You also need to think about what payment gateways you will use to accept payments. Payment gateway options vary with each plugin.

When you create an eCommerce plugin there will not be a theme. Instead you will need to make sure the theme you have will work with the plugin you choose. If you already have an existing theme for your site, see what options already exist within that theme. Make sure there are support options for your theme.

WooCommerce

WooCommerce is the most popular eCommerce plugin. Woo has many themes available, which means you have many options to choose for the layout and design for your site. The benefit of using WooCommerce is the large, supportive open-source community. Having this community provides forums for Q&A support to help you with your site.

WooCommerce supports both digital and physical products, as well as subscriptions. Woocommerce has a great inventory management system and supports many popular payment gateways. Sorting through all the options available, finding the right setting, and choosing the correct add-ons can feel overwhelming.

WooCommerce works with all the WP themes, but it is not always easy to set up every theme that is available. I would recommend using a WooCommerce-ready theme.

Another benefit of WooCommerce is the option for multilingual sites.

The one downside of WooCommerce is that it will only combine with WordPress sites. If you don’t have a WordPress site, you will have to search out other eCommerce options.

If you are considering WooCommerce, it is free, but there are some payments you will need to consider. Typically, a domain name costs $14.99, an SSL Certificate is $69.99, and web hosting is around $7.99/month.

Overall, WooCommerce is the most popular WP option for a reason; it has a huge community behind it and gives you the most options for your eCommerce site. But I have listed other great options below. 

Easy Digital Downloads

Easy Digital Downloads is an eCommerce platform designed to sell digitally downloadable products. This is a great tool for new developers. Once again, I would recommend using a theme setup for the Easy Digital Downloads plugin. While it works with most WP themes, you will need to be sure it works with yours.

If you become a premium user, you will be allowed access to free support forums and other priority support options. If you are just selling digital downloads, and you don’t plan on expanding your eCommerce store to selling physical products, this would be a good fit.

Easy Digital Downloads offers four plans starting at $99/year up to $499/year. You would need to sort through the costs and benefits of each plan for your business. If you’re not interested in WooCommerce or EDD, then consider Shopify.

Shopify and your WordPress Site

The great thing about Shopify is it is easy for beginners. You don’t have to be technical. There’s no need to worry about SSL, handling taxes, etc. On the other hand, those monthly payments required with Shopify can add up, and the reality is there will be long-term cost and personal time spent in developing a store on Shopify. You may want to explore what it may cost to have a developer build a WooCommerce site.

On the flip side, here is what Shopify offers. If it fits your business needs, it has simple payment and shipping options. Both digital and physical products can be sold, plus the social media integrations through Facebook and Twitter are already seamless.

The monthly fees vary on three levels – $29 for basic, $79 for Shopify, and $299 for an Advanced account. In addition to the monthly fees, Shopify charges you more if you don’t use Stripe, an online payment platform. You would need to set up an account with Stripe as well.

Overall, Shopify is good to have on your WP site for a simple, hassle-free eCommerce solution. The peace of mind can be nice in terms of having a one-stop provider for your eCommerce needs. It has many constraints when it comes to growing your business. If you decide to customize, you may run into more roadblocks with Shopify than with other plugins.

MemberPress

Not to overwhelm you, but here’s yet another option in the eCommerce world. MemberPress is a subscription-based plugin for digital products and services. If you are selling memberships and don’t plan to expand your eCommerce site, MemberPress is a good option.

It is $119/year, easy to use and has good support. This is not a versatile plugin. The checkout form is plain and simple. But if it suits your needs you don’t have to pay the additional cost of a more complex eCommerce site.

Even More Options

At this point, I have listed the mainstream plugins and eCommerce options. If you’re wondering what else you can choose from, here’s a list:

WP eCommerce

WP eCommerce is the oldest plugin available. Many say that is buggy, and they ultimately switch to WooCommerce. However, if you have interest and the time, you can look into it.

BigCommerce

Similar to Shopify, BigCommerce is another cloud-hosted, eCommerce platform. BigCommerce gives more options than Shopify, but the drawback is the magnitude of options can be overwhelming. Like Shopify, it does not have native integration with a WP site, but you can embed it into your site.

EcWid

This plugin is best for beginners. EcWid would be a good option if you just want to add eCommerce to your existing site rather than build an entire eCommerce site from scratch. It is free for 10 items and goes up to $99 a month for an unlimited number of products.

Give

This plugin gives the best donation options. Give is good for non profits, as it keeps great analytics, data, and history and can work with custom forms. It is also free!

After looking at these many options, I have one piece of advice for you. If you need a highly-customized store that will drive a high-volume business, these options are not for you. Moving to another platform like Magento may be the best thing for your business in the long run.

Conclusion

For a WP site, WooCommerce is most likely your best option. It is the most versatile. If your business pivots and you want to make changes to your design or layout, WooCommerce provides the most flexibility. Easy Digital Downloads is great if you are just doing digital downloads. MemberPress is a simple solution for selling only memberships. Shopify is a perfect solution for a hands-off site, but remember it can only be embedded in WP and has limits as you expand your business.

If you are needing more consultation on the options surrounding your specific business needs, get in touch with me or one of my colleagues. At IT Hands, we can help you sort through the best route for you to follow in your business’ eCommerce journey.

 

Survey the eCommerce Landscape

#OnlineShopping is expanding. What is your company’s #EcommerceStrategy? Click To Tweet

Introduction to the topic

eCommerce is important for retailers and businesses of all sizes. When surveying the eCommerce landscape, agencies need to be experts, one step ahead of the curve, to give their clients an edge. They should be bringing ideas to their clients instead of taking orders when their client becomes interested in eCommerce.

What are the numbers? Currently, Amazon accounts for 44 percent of all online retail sales. In 2017, U.S. businesses saw nine percent of their sales come from online platforms. That’s not huge at this point, but it is growing.

 

Key eCommerce Players

WooCommerce, Magento and Shopify are the major platforms used for eCommerce. WooCommerce is a very popular eCommerce platform. It is built to easily integrate with WordPress and has a huge selection of payment gateways, including PayPal. For most business, WooCommerce has a variety of options for growth and custom templates.

If the price to build and maintain a site on WordPress is too much, there is always Shopify. Although this platform does not give as many plugin choices as WooCommerce, sometimes simple could be better. Over 600,000 online store owners think so.

Magento is built for the more complex eCommerce sites, which is why many of the world’s lead brands use this large, open-source framework to power their business. The setup of Magento gives companies the flexibility to grow and expand past their initial limits. The options are endless for businesses using Magento.

 

eCommerce Trends

CRMs

Customer Relationship Management, or CRMs, are sites or programs that keep track of customer data for retailers. Businesses can benefit in huge ways by monitoring On-site chats, Facebook Messenger, SMS, Email or staying aware of order statuses and customer groups, such as loyalty programs and referral programs. All of these can give a business a better understanding of how to market to customers.

Email Marketing

When used to interact with an interested audience, email marketing is a powerful tool for eCommerce. There are many platforms that provide email marketing tools, along with the benefit of monitoring the number of opens and clicks. MailChimp, Benchmark or Campaigner are only the top three options. Two useful ways to get the most out of email marketing is to send Abandoned Cart Emails. Through these reminder emails, you could potentially recover 15-20 percent of sales that would otherwise be lost. Also consider welcoming or engagement emails that reach out to your clients, providing special offers or discounts during life events such as birthdays or holidays.

Mobile Readiness

Is your company ready for the future? Statistics show that in 2015, 60 percent of online shoppers used a mobile device and ultimately made 15 percent of their purchases online. That was 2015.

Now, since the mobile experience has become more optimized there is a strong push to continue improving UX on mobile devices. Increased use of digital wallets, easy-to-use mobile search, and readily-available videos will further increase the use of on-phone over in-person purchases.

 

The Future of eCommerce

With each generation, technology is becoming more mainstream and comfortable. Millennials already account for about 54 percent of purchases online. Large businesses are investing in eCommerce and it’s worth it for SMBs to do so as well.

Many other tools used within eCommerce are not so far out and futuristic anymore. Many companies already use AI/AR, Picture Search, and Voice Search within their sites. Machine Learning and AI are used as well, though will continue to take on more of a significant role as technology improves. Read a more in-depth article on these tools here.

Just because new technology comes, that doesn’t mean Email will disappear. In fact, email marketing may become more popular. Trends project that spending through email marketing in the U.S. will increase from 2.07 billion U.S. dollars in 2014 to 3.07 billion U.S. dollars in 2019.

eCommerce is not going away; it’s actually expanding, and will only continue to grow. If your company or your client’s business would benefit from an eCommerce site, get in touch with one of our team members today at solutions@ithands.com.