If you think you can start your career as a BA, then think it again because it’s… (Part 1) 

Hi everyone,
This is Amy from Earth planet. I used to work as a Business Analyst (BA) for a couple of years and for the rest of my life I would never forget that miserable duration of time. And why do I use the word “miserable”? Because my starting point for this job is way more backward than others in the IT industry: Technical knowledge is at a zero scale. So I wrote this post to help people who have the same background as me or people who intend to pursue BA job, to decide your career path in the future. 

Lesson 1: Are you ready to learn a language which is not from Earth? 

I’m sure that you’ve already learnt at least one foreign language before at school. How was that? I believe that most people would say it’s not easy at all (and it’s a nightmare for me, FYI). We have the Latin system and logographic system language, but the one that I’ve been working on should be called Alien language. 

This is the first price that you need to pay when you start working as a BA without technical support and business domain knowledge. You will see that you’re the only one in the team who doesn’t know what the hell everyone is talking about. Even if you understand each and every single word that they’re saying, but your brain cannot work properly to decode any combination of those. So what should you do in that case? When your boss just assigned to you a project on the second day at work? Well, my angel on the left shoulder screamed “Run for your life! You idiot!” but my demon on the right shoulder said, “Let’s kill the Alien and take its brain”. In the end, the demon won and I started a horrible year of working and learning at the same time.  

God blessed me since I got through several of small-sized projects and still survived after a year. It’s kind of interesting when you look back to your very first user stories and use cases when you already have 1 year of experience. Because this is the moment you see how clumsy you were when handling a user story, but you also realize how much you have earned from your job. 

Lesson learnt: Don’t be afraid of anything, even it’s something that you haven’t seen before. As long as you’re a BA, you’ll have to switch project/domain many times depending on the needs of clients. 

Lesson 2: Wake up! You are not the center of the world! 

The ugly truth is that nobody will actually consider your pieces of advice if you’re the newbie in a project, even if you graduated with a high grade from the university. In my case, they were listening to my comments very carefully, and then quickly turned them to invalid ideas due to dozens of facts. Your team would appreciate very much if you’re able to provide something from your previous experience which can handle the problem they’re dealing with. So please don’t lose your confidence in such cases because it didn’t show that you’re wrong. It just proves that you still need to catch-up a lot of things and you must get to the point where you can make impacts to other members in the project.     

Lesson learnt: You cannot go directly from A to Z in a day. Adaptation is a must-have step to take.  

(To be continued) 

See you guys in Part 2! Bye Bye! 

Amy Do              

 

Storing Data on the Blockchain (p2)

To continue the Storing Data on the Blockchain series, this post will discuss the storing method. If you haven’t read the first post yet, let’s catch up right now

The Different Ways to Store Data on a Blockchain

There are two main ways you might choose to store data on the blockchain. One option is to store the entire document itself on-chain. Alternatively, you can store a hash of it on the blockchain.

Storing the Entire Document

Storing a whole document on-chain is possible with certain blockchains, however, it is rarely a good idea. Due to the huge data demands, unless it is a very small file or of extreme importance, you would be better choosing another method. If you wanted to store the document on Bitcoin, then you first have to compress it and then format it into a hexadecimal form.

The problem with storing whole data on a blockchain is because of something called access latency. This just means how long it takes network users to upload and download files, such as documents. Fully decentralized public blockchains have thousands of nodes. Unfortunately, the benefits that come with this number of nodes also results in a corresponding increase in latency. Any file storage, including documents, needs to have low latency otherwise the system becomes clogged up, slow, and expensive to use.

A hybrid strategy can also make sense. This would involve storing a small part of the document, perhaps the signatures, as well as the document hash on-chain. This allows you to maintain decentralization and full transparency of the parts that absolutely require it while maintaining a cap on the data load.

Storing a Hash

The most efficient method is to store a data hash on-chain while keeping the whole document elsewhere. The document could be stored in a centralized database or on a distributed file storage system. You would put the document through a secure hash algorithm like SHA-256 and then store the hash in a block. This way you save a huge amount of space and cost. Additionally, you will be able to tell if someone tampers with the original document. The change in input would result in a completely new hash value, different from your original document.

Hash values are far smaller than whole documents and so are a vastly more efficient blockchain storage method. It also scales efficiently. For storing multiple documents, you can put the hashes into a distributed hash table, which you then store on-chain. The downside is that the storage of the original document is not decentralized nor necessarily publicly visible.

What do you think about Storing Data on Blockchain?? Feel free to discuss with us

Hung Le

Full stack with Vue.js & Laravel (p3) – Set up project

In the last post, I introduced the concepts of Vue.js. Today, we start to code and set up a project. First, we create a root folder named “vblog”.

1. Backend

We use Laravel (here I use the latest version is 5.7)

In the root folder, run command to create a project with “server” is the project name:

Laravel new server (noted: you have to install the Laravel installer first, the document here )

Now we have the folder structure below:

 

Then in Laravel project, we install some new packages to support API:

Run command: composer require barryvdh/laravel-cors

 

That’s enough for the server now, we will use it later

Now we go to set up the frontend (Vue.js) using Nuxt framework

2. Frontend

In the vblog folder, we create a Nuxt project named “web-app” using yarn

 

While creating, it will ask you some questions.

Here I choose below answers:

  • Project name: web-app
  • Project description: blog using Nuxt.js
  • Use a custom server framework: none (because we use Laravel as the server)
  • Use a custom UI framework: bootstrap (because it’s popular, easy to use)
  • Choose rendering mode: Single Page App
  • Use axios module: yes (we will use axios to call API)
  • Use eslint: yes
  • Use prettier: no
  • Author name: Huy Hoang 
  • Choose a package manager: yarn

Now we have the code folder structure like this:

 

Then in Nuxt project, we install some packages: jquery, node-sass, sass-loader, vue-notification, @nuxtjs/dotenv

Noted: jquery is not suggested using in Vue. But some package required it, so we still need to install jquery. But we will not use jquery in our code.

Now we try to run the project in a web browser.

Start server by running the command: yarn run dev then open URL http://localhost:3000/  in Chrome

We’ve finished setting up the project with Laravel as backend and Nuxt.js as frontend.

In the next post, we will build our web layout and custom the loading effect automation whenever URL router change, and add custom notification. Stay tuned!

Huy Hoang                  

Build a serverless REST API application with Flask & Serverless in AWS Lambda

Today, I’m going to show you how to build a REST API application for a mobile application. My customer wants it to be serverless and run in AWS Lambda. Hmm, because Serverless is one modern buzz word besides many buzzwords right now. In fact, if you don’t want to care about managing infrastructure and scaling, a serverless service will help us to focus on building the application. AWS Lambda is one of those that let us run any WSGI application on the cloud.

To get started step-by-step, we will:

  • Create an API application using Flask
  • Deploy to AWS Lambda using Serverless

Prerequisites

Getting started

– You’ll need the Serverless Framework installed:

npm install -g serverless

– Configure AWS credentials:

– Visit this URL for a tutorial to set up AWS credentials.

$ aws configure --profile nano-api

AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX

AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXX

Default region name [None]: us-east-1

Default output format [None]: text

Create an API application using Flask

Let’s build a Flask app first.

$ mkdir nano-api

$ cd nano-api

$ virtualenv -p python3 .venv

$ source .venv/bin/activate

$ (.venv) pip install Flask

$ (.venv) pip freeze > requirements.txt

After that, Create a file app.py:

# app.py

from flask import Flask

app = Flask(__name__)

@app.route("/")

def hello():

    return "Hello TwentyCI!"

This is a very simple application that returns “Hello World!” when a request comes in on the root path /.

Deploy to AWS Lambda using Serverless

We’re going to use the serverless-wsgi plugin for negotiating the API Gateway event type into the WSGI format that Flask expects. We’ll also use the serverless-python-requirements plugin for handling our Python packages on deployment.

$ npm install --save-dev serverless-wsgi serverless-python-requirements

To get this application deployed, create a serverless.yml in the working directory:

# serverless.yml

service: serverless-flask

plugins:

- serverless-python-requirements

- serverless-wsgi

custom:

wsgi:

app: app.app

packRequirements: false

pythonRequirements:

dockerizePip: non-linux

provider:

name: aws

runtime: python3.7

stage: dev

region: us-east-1

functions:

app:

handler: wsgi.handler

events:

- http: ANY /

- http: 'ANY {proxy+}'

Now, deploy your function:

$ sls deploy

...

Service Information

service: serverless-flask

stage: dev

region: us-east-1

stack: serverless-flask-dev

api keys:

None

endpoints:

ANY - https://k1xz6ol912.execute-api.us-east-1.amazonaws.com/dev

ANY - https://k1xz6ol912.execute-api.us-east-1.amazonaws.com/dev/{proxy+}

functions:

app: serverless-flask-dev-app

And, follow your endpoints in the Service Information section, it works!

This is a very simple example, but the above process is very same for larger apps in the future.

Cuong Giang

Software Development Lifecycle

Software Development

Software development is a magical art of creating a program which can perform a required task following a set of processes. Software development includes numerous steps such as thinking of an idea, designing a rough idea, implementation of the blueprint, testing, bug fixing and many more.

The process of Software Development includes writing and maintaining the code in particular language, in other words, we can say that it includes everything which is involved in the creation of the desired software product via the desired process.

Why Do We Need Software?

Every Business firm or organization needs a software program to perform various tasks which can ease out the work of a person and reduce the requirement of manpower. Software Developers use a process known as the Software Development Life Cycle (SDLC) to Design, Develop and Review High-Quality Software. The purpose of SDLC is to produce something which fulfills the expectations of the customer and completes in estimated time and cost.

Let’s Learn About SDLC In Detail

Software Development Life Cycle is basically a detailed plan which describes how to create, maintain, alter and improve a specific software product (program).

Diagram Depicting The Software Development Cycle

SDLC consists of the following stages:

  1. Planning:

Business requirements are gathered in this phase. This phase is the main focus of the project managers and stakeholders. Meetings with managers, stakeholders, and users are held in order to determine the requirements like; Who is going to use the system? How will they use the system?  What data should be input into the system?  What data should be output by the system?  These are general questions that get answered during requirements gathering phase.

  1. Analysis:

In this phase project managers, stakeholders and user (Customer) discuss the requirements of the system, and also discuss the things like “Who is going to use the system?”, “How he will use the system?”, “What type of data is needed?” Etc. After gathering all the information about requirements for the system the process of development moves forward in the direction of designing.

  1. Design:

On receiving system design documents, the work is divided into modules/units and actual coding is started. Since in this phase the code is produced so it is the main focus for the developer. This is the longest phase of the software development lifecycle.

  1. Implementation:

On receiving system design documents, the work is further classified into parts (Modules) and actual development of products starts. This Is the longest phase of the SDLC. If the design phase (previous phase) is implemented properly, code generation in this phase is achieved without any problem. Once our software is developed properly it goes for a proper review to check whether it is functioning properly or not.

  1. Testing:

After the code is developed, it is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase. During this phase, all types of functional testing like unit testing, integration testing, system testing, acceptance testing are done as well as non-functional testing are also done.

  1. Deployment and maintenance:

After successful testing, the customer receives the product for their use.

As soon as the product is given to the customers they will first do the beta testing. If any changes are required or if any bugs are caught, then they will report it to the engineering team. Once those changes are made or the bugs are fixed then the final deployment will happen.

Once when the customers start using the developed system then the actual problems come up and needs solving from time to time. This process where the care is taken for the developed product is known as maintenance.

I hope this post’s helped you understand better on the process of software development. Feel free to send us any question in the comment below or via email. See you in the next post!

Phuc Nguyen

 

 

Reference Source

https://www.quora.com/What-is-software-development-lifecycle

http://tryqa.com/what-are-the-software-development-life-cycle-sdlc-phases/

https://www.tutorialspoint.com/sdlc/sdlc_overview.htm