Translate

Wednesday, January 23, 2019

How Do Gantt Charts Make Project Managers’ Lives Easier?

From tracking and automation, to communication and deadline evaluation, check out how Gantt charts can improve your workflow.

by Sandeep Kashyap·Jan. 18, 19
Source: https://dzone.com/articles/how-do-gantt-charts-make-project-managers-life-eas

Do you want to have a way to see how tasks are progressing? Want to see what roles are there in a project and how others depend on them? If you’ve always wanted a quick view of how far behind or ahead of schedule your project is, then it’s time for Gantt charts.
We believe that you might have already heard about Gantt charts considering their popularity in the project management domain. As a new project manager or team leader, it’s absolutely fair on your part to have some apprehensions about them.
Fret not, we are going to clear all your doubts regarding Gantt charts, the benefits they offer, and their purpose in project management in this post. Before that, let’s learn a little bit about their history.

Historical Background

People often think that Henry Gantt was the man behind the Gantt charts, but in reality, it was Karol Adamiecki, a Polish engineer who devised these charts for better planning in 1896.
Adamiecki published his work only in Polish and Russian and the first ever Gantt chart was named as the Harmonogram. After some years, Gantt started working on these charts and made them popular, thus the name "Gantt charts."

Why Use Gantt Charts in Project Management

The best thing about Gantt charts is that they are sufficient in equipping you with the right tools to plan, manage, and schedule projects. Gantt chart software also helps you to automate processes, create dependencies, add milestones, and identify critical paths.

A Visual Timeline of Tasks

Gantt charts provide a visual timeline of the project so that you can schedule your tasks, plan, and iterate your projects quickly and more efficiently. One gets to see an overview of milestones and other important information that provides a clear picture of who’s working on what and other deadlines related to them. Such information plays a key role in effective project planning and tracking by bringing together everything you need to meet deadlines and deliver projects successfully.

Keeps Everyone on The Same Page

With Gantt charts, you get a unified view of all the projects at one central place, making it easy for you to handle team planning and scheduling. Also, the visual nature of these charts makes it easier for people working together to set mutually agreed upon efforts and work in unison to achieve the desired goal. It reduces any chances of misunderstanding among team members while working on difficult tasks as everyone is already on the same page.

A Better Understanding of Task Relationships

Often, a task is both dependent and related to other tasks as well. These charts help you understand how various tasks are interrelated. They also help you set dependencies between different tasks to reflect how a change in their scheduling is going to impact the overall project progress of a project. With a better understanding of task relationships, one can assure optimum workflow and maximized productivity.

Allocate Resources Effectively

A Gantt chart software helps you delegate work items to different people and allocate resources in a way without overloading anyone. By appropriately following the chart, you can adjust or share resources if someone in a team needs help. If resources know what to do when and are managed properly, there is a better chance of completing the project on time and within the desired budget, too.

Seamless Communication

Anyone working on a project doesn’t have to run to another team member to ask a question; you can communicate easily and seamlessly with a Gantt chart software. Once a plan is devised, approved, and started, forget about remembering who’s working on what as the visual nature of Gantt charts tell everything you need to know at one place. That’s how Gantt charts have made things easier and stress-free for project managers so that they can focus on getting things done.

Track the Project Progress

Whether your project is small or complex, one of the crucial things for a project manager is to see how a project is progressing and whether things are on track or not. Gantt charts show the complete percentage of every task being handled by team members that give an estimation of the time needed to get tasks done. Gantt charts are indeed one of the safest bets to predict the project progress and see if you need to change your strategy or not.

More Accountability

Every Gantt chart software comes with easy drag-and-drop for efficient scheduling. Whether it’s about scheduling start and end dates to rescheduling them or setting dependencies, everything works well with Gantt charts. Team members get a sense of accountability while moving tasks and the task completion bar constantly reminds them to deliver a project before the deadline.

More Clarity, Less Confusion

Gantt charts are simple and straightforward. Apart from its intuitiveness, they use the critical chain to highlight important tasks. Gantt charts highlight the critical path that helps you identify tasks which are directly impacting the overall progress of a project. The clarity helps team members to know what’s working and what’s not so that they can change their strategy to achieve their goals. This lessens the confusion and brings more clarity in the process.

Complete Projects on Time

As Gantt charts provide a unified view of tasks, projects, and resources, they help you focus your precious time, effort, and brainpower on things that actually matter. When team members visualize their efforts in a project and how the progress of the entire project is somehow dependent on them, it provides real motivation to them.

Stay Ahead Always

Not only one can stay on top of things with Gantt charts but they also help project managers to stay ahead of their schedule if they follow Gantt charts precisely. Project managers can analyze the team performance and figure out patterns that must be readjusted for better output.

Conclusion

By now you might have understood the importance of Gantt charts in a project manager’s life. However, if your work revolves around complex projects, you might want to go for a task management software that enables more than using a Gantt chart. There are many project management solutions with elaborated features to choose from. Get a free trial, and make the best choice.

Monday, January 14, 2019

How to add Google Analytics to Blogger / Blogspot Account




To install Google Analytics, you will need an active Blogger / BlogSpot account.  This tutorial will walk you through how to add Analytics to your BlogSpot site.

Step 1: Login to Google Analytics using your Google account https://analytics.google.com

Step 2: If you don't have a Google Analytics account, the below screenshot will be displayed. Click on the Sign Up link.














Step 3a: Fill out the Account Name, Website Name and Website URL.  Make sure the URL ends in BlogSpot.com (e.g. techie-Jackie-blogs.blogspot.com)
Step 3b: Once you fill out the necessary information above, scroll to the Data Sharing Settings.  Take time to read how Google will use the data you collect. You may uncheck the options, whatever is appropriate for your needs.




















Step 3c: Click Get Tracking ID button once done. You will be asked to accept the Terms of Service (TOS).





If you checked Google products & services in the previous step, you will be asked to accept another Terms as below.

Click the I Accept button to proceed.  If the account has been successfully created, the Admin page will be shown as below.





Step 4: Copy the Tracking ID.
Login to your Blogger / BlogSpot account in https://www.blogger.com.  Go to Settings -> Other settings and scroll all the way down to Google Analytics.  Paste the Tracking ID and click Save settings.























Your Google Analytics account is now linked to your Blogger account.  This may take hours to activate, but in my case it only took a few minutes!

Step 5: There are two ways I know how you can validate if the Analytics work.
First one is to check your BlogSpot's template by clicking on Theme -> Edit HTML.  You should be able to see the word "analytics" in the HTML.




Another way is to access your site from a browser and view the page source.  You should see a sample snippet in the source.










Viola! You may now use Analytics to track your website's traffic and improve the conversions of your site!

Saturday, January 12, 2019

Natural Language Processing


Source: https://dzone.com/articles/natural-language-processing-1


Natural Language Processing is a sub-area of computer science, information engineering, and Artificial Intelligence concerned with the interactions between computers and human (native) languages. This is nothing but how to program computers to process and analyze large amounts of natural language data.
Natural Language Processing(NLP) = Computer Science + AI + Computational Linguistics
In another way, Natural Language Processing is the capability of a computer software to understand human language as it is spoken. Natural Language Processing (NLP) is one of the components of Artificial Intelligence (AI).
The real-life examples of natural language processing are like understanding complete sentences, understanding synonyms of matching words, speech recognition, speech translation, and writing complete, grammatically correct sentences and paragraphs.
The applications of Natural Language Processing in various fields are as follows:

A) Machine Translation

NP2

The amount of information available is growing over the internet. Machine translation helps us conquer language barriers that we often encounter by translating technical manuals, support content or catalogs at a reduced cost. The main challenge with machine translation technologies is not in translating words, but in understanding the meaning of sentences to provide an accurate translation.Natural Language Processing 3

B) Automatic Summarization

It reduces a larger text into a shorter, yet richly constituted an abbreviated narrative representation of the original document. It extracts keywords or key-phrases from a large piece of writing. It creates an abstract of an entire article. Information overload is a real problem when we need to access a specific, important piece of information from a vast knowledge dataset. Automatic summarization is important not only for summarizing the meaning of documents and information but also to understanding the emotional meanings inside the data, like in collecting information or data from social websites. Automatic summarization mainly useful when used to provide a summary of a news item or blog posts by avoiding repetition from multiple websites and maximizing the dissimilarities of content that obtained.
Natural Language Processing 4

C) Sentiment Analysis

Natural Language Processing 5
The aim of sentiment analysis is to identify sentiment among several posts or even in the same position where emotion is not always explicitly expressed. Many multinational companies are using natural language processing applications, such as sentiment analysis, to detect the opinions and sentiment over the internet to help them understand what customers think about their products and services (i.e., “I love the new mobile phones iPhone” and, after few lines “But many times it won’t work well” where the person is still talking about the iPhone mobile phones) and complete indicators of their reputation. Beyond determining simple polarity, sentiment analysis understands the sentiment in context to help you better understand what’s behind an expressed opinion, which can be extremely relevant in understanding and driving purchasing decisions. It is used to support the companies to analyze a large number of reviews on a product. Also, it is used to help the customer’s process the reviews provided on a product.

D) Document or Text Classification

Natural Language Processing 6
Document or Text classification makes it possible to assign predefined categories to a document and organize it to help you find the information you need or simplify some activities. For example, an application of text categorization is spam filtering in an email.

E) Speech Processing

Natural Language Processing 7
  • Text to speech: it converts electronic text to digital speech which is helpful for the deaf and dumb society
  • Speech to text: it converts digital speech to text.
  • Automatic Speech Recognition: Automatic transcription of spoken content to electronic text
  • Speech to speech translation: Translating spoken content from one language to another in real time or offline.

F) Image Captioning

Natural Language Processing 8
Image Captioning is a process of generating a textual description of an image. It uses both Natural Language Processing and Computer Vision to produce the captions.

G) Information ExtractionNatural Language Processing 9

Information extraction is the way of obtaining a system resource related to an information need from a collection of information resources. The searches can be based on full-text or other content-based indexing. Information extraction is the science of searching for information in a document, searching for documents themselves, and also searching for metadata that describes data, and for databases of texts, images or sounds.

Extraction of Meaning From an Email:

I have decided to meet tomorrow at 10:00 am in the lab.
What to do: meeting
At what Time: 10:00 am
Location: Lab

H) Information Retrieval

Natural Language Processing 10
The Information retrieval involves returning a set of documents in response to a user query. Internet search engines use the information retrieval system. Moreover, one can change from classical information retrieval is that Internet searching now uses the methods that rank the documents according to how many links there are to them (example Google’s PageRank) as well as the presence of search terms.

I) Search Engines and Semantic Web Search:

Natural Language Processing 11
The web search engine is a software application that is devised to search for information on the internet (World Wide Web). The search results are normally presented in a line of results often referred to as search engine results pages (SERPs). Semantic Web search engines are applications for finding ontologies that require reasonable effort: queries are usually written as natural language keywords and results are ranked.

J) Question Answering

Natural Language Processing 12
It attempts to find a specific answer to a particular question from a collection of documents, or short piece of text that contains the answer. For example, what is the capital of India?

K) Collaborative Filtering

Natural Language Processing 13
The technology to make recommendations based on user behavior on an E-commerce website. From your history or previous search e-commerce website provide us with a recommendation

Natural Language Processing in Other Fields

Apart from the above application, there are some other fields where Natural Language Processing is used which are as follows,
  • Politics
  • E-governance
  • Bio-Medical
  • Forensic Science
  • Business Development
  • Marketing
  • Advertisement
  • Education

Architecture of Natural Language Processing

The input to the Natural Language Processing system could be speech or text. It could also be a gesture (multimodal input or perhaps a Sign Language).
Natural Language Processing 14

Lexical and Morphological Analysis

The lexicon of a language is its vocabulary which includes its words and expressions. The Morphology depicts analyzing, identifying and description of a structure of words. The lexical analysis involves dividing a text into paragraphs, words and the sentences

Syntactic Analysis

Syntax focuses on the proper ordering of words and its effect on meaning. This focuses on the analysis of the words in a sentence to depict the grammatical structure of the sentence. The words are transformed into a structure that shows how the words are related to each other. Example, “The boys the go to the school.” This sentence would be rejected by the English syntactic analyzer.

Semantic Analysis

Semantics focus on the meaning of words, sentences, and phrases. This abstracts the dictionary meaning or the exact meaning from context. The structures which are created by the syntactic analyzer are assigned meaning Example, “colorful blue idea.” This sentence would be rejected by the analyzer as colorful blue do not make any sense together.

Discourse Integration

It finds out the sense of the context. The meaning of any single sentence depends upon the sentences that precede it and also invokes the meaning of the phrases that follow it. Example the word “it” in the sentence “she wanted it” depends upon the prior discourse context

Pragmatic Analysis

Pragmatics concerns the overall communicative and social context and its effect on interpretation. It means abstracting or deriving the purposeful use of the language in situations, importantly those aspects of language which require world knowledge. The main focus is on what was said is reinterpreted on what it means.
  • E.g. “close the window?” should have been interpreted as a request rather than an order

Components of Natural Language Processing

The important components of Natural Language Processing are as follows
  • Input Pre Processing: speech/gesture recognizer or text pre-processor
  • Morphological Analysis
  • Speech Tagging
  • Parsing — This includes syntax and compositional semantics
  • Disambiguation: It can be done as part of parsing
  • Context Module: It maintains information about the context
  • Text Planning: The part of language generation / what meaning to convey
  • Tactical Generation: It converts meaning representations to strings.
  • Morphological Generation
  • Output Processing: text-to-speech, text formatting, etc.

Use of NLTK for Natural Language Processing:

Natural Language Processing 15
Natural language toolkit i.e., NLTK is one of the most popular libraries for natural language processing (Natural Language Processing) and very easy to learn. It has been written in Python and has a big community behind it.

Thursday, January 10, 2019

How to Modularize an Angular Application


Source: https://dzone.com/articles/howto-modularize-an-angular-application-by-example
This article shows how lazy loaded Angular modules can be used to bring down the initial download size of an application.

Starting Point

The starting point is the AngularAndSpring project. It is an Angular 7 application with Material Components and a reactive Spring Boot backend. The initial download was more than 1.6 MB in size. The reason for the size of the initial download is that the app module includes all the code of the dependencies that are needed by the whole application. The goal is to create a smaller app module that starts with just a splash component and the services that are needed by more than one module. Then the application lazy loads the modules for the routes the user navigates to. The application has three parts:
  • The overview table. That shows a table of cryptocurrency quotes and has the login.
  • The details pages. That shows the current details of the quote and a chart.
  • The orderbook page. That shows the current orderbooks and requires to be logged in.
Each of the parts will become a module with one or more components. The modules will have only the required imports and be loaded if the user navigates to their route.

Modules

To bring down the size of the initial download, the lazy loaded modules of Angular are used. The modules are generated with the Angular CLI and the components are moved in the modules. TypeScript types help to do the refactoring. The required imports for the modules need to be added and the routes need to be created.
To add the modules, the Angular CLI was used:
ng generate module details --routing
ng generate module orderbooks --routing
ng generate module overview --routing
That generated the modules with module and route files inside of their directories.

Overview Module

The components quoteoverview and login have been moved into the module directory.
The route of the module is defined in the file overview-routing.module.ts:
const routes: Routes = [{
    path: '',
    component: QuoteoverviewComponent
    }];
@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class OverviewRoutingModule { }
Lines 1-4 define the empty path for the quoteoverview component.
Line 8 defines the route to be imported as a child route of the module.
The overview module has only one route because the login component is a modal panel. It is shown if you click on the login button.
The module is defined in the file overview.module.ts:
@NgModule({
    entryComponents: [
                      LoginComponent
                    ],
    imports: [
      CommonModule,
      OverviewRoutingModule,
      MatTableModule,
      MatToolbarModule,
      MatTabsModule, 
      MatButtonModule,
      MatDialogModule,
      MatFormFieldModule,
      MatInputModule,
      FormsModule,
      ReactiveFormsModule
    ],
  declarations: [
      LoginComponent,
      QuoteoverviewComponent
                 ]
})
export class OverviewModule { }
Lines 2-4 define the entryComponent login to enable the modal panel of the login component.
Lines 5-17 define the modules needed by the two components.
Lines 19-22 register the two components in the module.

Details Module

The components BsdetailComponentIbdetailcomponentCbdetailComponent, and BfdetailComponenthave been moved in the Module directory.
The routes of the module need to be defined in the file details-routing.module.ts:
const routes: Routes = [
                        {path: 'bsdetail/:currpair', component: BsdetailComponent},
                        {path: 'ibdetail/:currpair', component: IbdetailComponent},
                        {path: 'cbdetail/:currpair', component: CbdetailComponent},
                        {path: 'bfdetail/:currpair', component: BfdetailComponent},
                        ];
@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class DetailsRoutingModule { }
Lines 1-6 define the subroutes of the module. The ':currpair' is a route variable that defines the currency pair requested.
Line 9 defines the import of the routes as child routes of the module.
The module is defined in the file details.module.ts:
@NgModule({
  imports: [
    CommonModule,    
    FormsModule,
    ReactiveFormsModule,
    MatToolbarModule,
    MatRadioModule,
    MatButtonModule,
    DetailsRoutingModule,
    ChartsModule,
  ],
  declarations: [
    IbdetailComponent,
    CbdetailComponent,
    BsdetailComponent,
    BfdetailComponent
  ]
})
export class DetailsModule { }
Lines 2-10 define the modules that are required by the components.
Lines 11-16 list the components of the module.

Overview Module

The overview module has only the orderbooks component. It is ony accessable after login so it is not needed on the public part of the app.
The route is defined in the following code block:
const routes: Routes = [
{
    path: '',
    component: OrderbooksComponent
  }
];
@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class OrderbooksRoutingModule { }
It is the same as in the overview module, execpt for the component.
The module is defined in the orderbooks.module.ts:
@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    ReactiveFormsModule,
    MatToolbarModule,
    MatSelectModule,
    MatRadioModule,
    MatInputModule,
    MatCheckboxModule,
    MatButtonModule,
    MatListModule,    
    OrderbooksRoutingModule
  ],
  declarations: [    
    OrderbooksComponent    
  ]
})
export class OrderbooksModule { }
Lines 2-14 define the modules that need to be imported for the component.
Lines 15-17 registers the orderbooks component.

Application Module

The application module now has only the splash component and the services and is defined in the app.module.ts file:
@NgModule({
  declarations: [
    AppComponent,
    SplashComponent,
  ],
  imports: [    
    BrowserModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    HttpClientModule,
    MatProgressSpinnerModule
  ],
  bootstrap: [AppComponent]
})
export class AppModule { }
Lines 2-5 list the components of the application module.
Lines 6-13 define the modules needed to show the SplashComponent and define the services.
The global routes are defined in the app-routing.module.ts file:
const routes: Routes = [
    {path: 'overview', loadChildren: './overview/overview.module#OverviewModule'},
    {path: 'details', loadChildren: './details/details.module#DetailsModule'},
    {path: 'orderbooks', loadChildren: './orderbooks/orderbooks.module#OrderbooksModule', canActivate: [AuthGuardService]},
    {path: '**', component: SplashComponent}
];
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }
Lines 1-6 define the global routes. The loadChildren entries reference the modules for the paths. The default path points to the Splash component. That loads the 'overview' path and shows a welcome message and a spinner while loading the overview module.
Line 9 defines the routes for the route module.

Summary

Modularizing the application has helped the startup performance and shows how bigger downloads can be split. In this case, the initial load was more than halved. If the files are gzipped it is below 300 kb.
TypeScript made it easy to split the code into ,odules. Splitting the templates was not as easy. The Angular compiler did not show the missing modules. The errors are shown at run time. It would be nice if Angular would have a feature that checks that all used modules are imported at compile time.
Splitting an existing application into modules is quite easy and takes only a reasonable amount of effort. The better approach is to start the development of an application with modules, placing related components in modules with a common base route and subroutes to the components. The required imports can then be added during the development process. That keeps the startup performance okay, with little extra cost.