Develop a iOS Swift CRUD App with a REST backend

Apple has introduce a new programming language for Cocoa and Cocoa touch called Swift. The syntax of this new language is a lot more familiar to developers that work on languages such as Visual Basic, Scala and many more. This comes to a refresh language different than Objective-C which has a complex syntax that takes a high learning curve even for C++ or Java developers.

Swift is a modern programming language that maintains many features of Objective-C using a clearer syntax. The programming paradigms provided by Swift include Objective Oriented, Imperative and Functional Programming. For more details please check the iBook here.

Unfortunately for now you have to download and Install OSX 10.9.3 or later, and Xcode 6 Beta 5 from your developer account to be able to develop your app.

On this posts we will show you how to build an app that communicates with the REST Server develop on Node.js. We will also show you how to use Objective-C libraries using cocoa-pods. Continue reading

Cloud Computing Models

Cloud Computing

The term cloud computing is used for a new service model that allows a client to scale or decrease resources rapidly to an application, without the need of investing on new infrastructure.

Introduction

On this post we present the architecture viewpoints, you need to understand when you are designing a product that will leverage cloud resources. This post is the second of four post series. You can read our introduction post here

A Software Architecture presents a blueprint that allow us to understand the system design, the functional and quality attributes[1]. Cloud computing architecture can be divided on two major viewpoints: 1)service models and 2)deployment models. The infrastructure architecture depends on the cloud computing providers. i.e. Google defines how there servers are design and deploy to support the cloud services. Continue reading

Developing a Node.js REST API on IBM Bluemix

On our latest series of post we develop a JEE application using IBM Bluemix.

For this post we are using Node.js SDK with the same CRUD services for a People Administrator API. In general you can use the same testing approaches we review on our post Testing a REST API just review and modify the URL you are using.

Node.js is a platform build on Chrome´s JavaScript runtime. Its non-blocking event driven model allows it to be efficient. Also it allows easily to provide two-ways connections between client and server.

On this tutorialWhy The Hell Would I Use Node.js? A Case-by-Case Tutorial is presented in detail the advantages and disadvantages of using Node.js over other platforms.

We will divide the development on two posts, 1)Develop the base REST services and 2) Connect the services to the database. Continue reading

Testing a REST API

Testing tasks are fundamental on the software development process. These tasks goals are covering the different quality axes of each of the diverse artifacts developed. Unit testing, Load Testing, Integration testing are just some examples of the many types of possible test types. Each one has a different purpose, for instance unit testing allows us to ensure the code provides the expected result. Integration testing on the other hand allows to review that combining different units or components will provide the expected results.

For the purpose of this post we are doing test that allow us to ensure the REST services developed on Developing a CRUD REST API on IBM Bluemix are up, running correctly. Please be aware that the test are not to review the results are valid or not, just to review they are running and what is the time they take to respond. Continue reading

Developing a CRUD REST API on IBM Bluemix

On our last post Developing a JEE REST API on IBM Bluemix we show you how to create the base REST services for our CRUD application. On todays post we are adding a Database and a JPA connection for the services. On the next post we will show you how to test the system using Unit testing.

This post 1) we create the database connection, 2)prepare the JPA persistence unit, 3)Implement the code that connects the rest services to the storage, and finally 4)Review the app is working so we can test the REST services. Continue reading

Cloud Computing

The term cloud computing is used for a new services model that allows a client to scale or decrease resources rapidly to an application, without the need of investing on new infrastructure [1]. The infrastructure is offered by server providers that reduce costs by having thousand or millions of servers. This provider’s offer hosted or virtualized servers, storage or simple software applications that can be customized for each client [2]. Cloud computing has evolve from server virtualization services such as AWS to more specific services such as Heroku or Bluemix that provide directly applications servers, to host web applications, databases and other web services.

On this series of posts we will publish 1) Models of cloud computing services, 2) Cloud computing infrastructure architecture, 3) The benefits of using cloud computing services and 4) The principal challenges of using cloud infrastructure.

[1]http://www.sciencedirect.com/science/article/pii/S0167739X08001957
[2]http://www.infoworld.com/d/cloud-computing/what-cloud-computing-really-means-031

Get Started with Bluemix

Image

Bluemix is an implementation of Cloud Computing services that allow developers to quickly and efficiently develop apps using IBM’s infrastructure. Our purpose is to help you learn how to use it into real projects. This post is the first of a series of Bluemix post that will allows us to quickly have our apps running from backend to front-end.

We will develop a small people management app using REST services implemented on JEE or Node.js, using an Angular.js and a native iOS mobile app example. Continue reading

Designing High-Availability Systems

Most of the time when a software is developed, the system is designed to withstand an specific amount of users. However, usually the platform will be required to handle unexpected amount of traffic. For instance, if a company make a new campaign, the peak load could change from 100 hundred concurrent users to thousands of users. If the system does not serve correctly the new load, you could lose thousand of dollars on campaign money, on new and former users. Continue reading