Skip to main content

Posts

git cherry-pick [commit]

Customer Needs My team already had a go-live app in a customer environment some months ago. We have been developing some new features for our next milestone. The situation is described in the picture below:

We used Git for our codebase management. The go-live app running on our customer environment was at version `v1`. The latest sprint release was at version `v7` for our developing app.

Our customers wanted to have two separated release packages for our current sprint release. We all know that it was easy to ship the package to the developing app. However, the issue was that how we just picked some features needed for the go-live app. We called this package was a hotfix.
Git Cherry-Picking Fortunately, we found that Git provided a way to achieve this task. Actually, we had all commits on the branch `master` already. We created a new branch called `hotfix/v1.1` and we traced back which commits needed. We used cherry-picking for merging these commits to this branch.

For example, let&#…
Recent posts

Creating a Chatbot with RiveScript in Java

Motivation"Artificial Intelligence (AI) is considered a major innovation that could disrupt many things. Some people even compare it to the Internet. A large investor firm predicted that some AI startups could become the next Apple, Google or Amazon within five years"
- Prof. John Vu, Carnegie Mellon University.

Using chatbots to support our daily tasks is super useful and interesting. In fact, "Jenkins CI, Jira Cloud, and Bitbucket" have been becoming must-have apps in Slack of my team these days.

There are some existing approaches for chatbots including pattern matching, algorithms, and neutral networks. RiveScript is a scripting language using "pattern matching" as a simple and powerful approach for building up a Chabot.
Architecture Actually, it was flexible to choose a programming language for the used Rivescript interpreter like Java, Go, Javascript, Python, and Perl. I went with Java.


Used Technologies and ToolsOracle JDK 1.8.0_151Apache Maven 3.5…

A Case Study of Custom JSF Converters - Automatically Converting Years With 2 Digits Into 4 Digits

You can find the demonstrated code of this post on my Github repo here.
The user story" As a banker, I want to enter a client's birthday like 01.01.80 or 01.01.1980,
So that the birthday can be displayed as 01.01.1980 "
Implementation Firstly, I thought about how to use a built-in converter likes the following.

<h:inputText id="birthdate" value="#{data.birthdate}" type="date" > <f:convertDateTime/> <f:ajax event="change" listener="#{data.onCalculate}" execute="@this" render="@this" /> </h:inputText>
However, without defining a pattern, JSF used its default one which was not my desire. It threw an exception when I tried to enter a date like "01.01.90".

> myform:birthdate: '01.01.90' could not be understood as a date. Example: Mar 4, 2018 

Actually, I even could not define either pattern "dd.MM.yyyy" or "dd.MM.yy" for "…

Trước Bình Minh Luôn Là Đêm Tối

This is a book telling about many stories of the book's author, Ta Minh Tuan. Each his story is not only a valuable lesson but also a heart-to-heart talk. Think Big, Start Small, Move Fast I accidentally attended a $2 meetup which was held by Hoithao.vn in 2013. It was the first time for me to see the author. At that time, he wanted the attendees to repeat many times a sentence "Think big, start small, move fast" (a mindset for entrepreneurs). It was really impressed to me. I've been following him on Facebook since 2013. This book was his recommendation. Do It Anyway Your success is defined by yourself. It is built by your habits. Habits are the things need time to tackle. To me, that somehow means JUST following your heart combining with your brain because you're the one who knows what you're doing. Believe in yourself and never betray your dream!
We Are One The author said that "everything is connected". This is also the theory of Buddha. He beli…

4 Remarkable Notes for JSF Apps Using HTML5

In the previous post, I've already shared with you how my team consults clients by using a HTML prototype. This post is about the used technologies for reusing the provided HTML template and communicating with backend.
What is the issue when using HTML elements with Primefaces components? Primefaces is a great extension for developing JSF web apps. However, it is really frustrating in case we have to make it work with an existing HTML template. Why?
- Primefaces has its own theme for styling.
- Primefaces changes the HTML structure.
Therefore, that would be a huge effort to use the Primefaces' components to replicate the elements of the HTML template; especially it is impossible for images drawing by "canvas" tag.

That requires us to find a better approach. Since Java EE 7 (introducing JSF 2.2 included), it supports to use HTML5 elements. The idea is that JSF components don't effect the style and HTML structure, so we can easily reuse the provided HTML template.…

Consulting Services

The topic is about my experience on my first project with my freelance team. We implement the last step of this process which you can find in the end of this post.

You might have heard of something like the following:
Many customers don't know what they want. Yes, that's a fact. In order to help customers solve their needs, we'd better consult them or we provide a consulting service. The next questions is "how?".

Our approach is enhancing the collaboration with customers or providing a design of customer interactions. Firstly, we create a website wireframe to express the idea of website's functionalities. For example:

Source: Wikipedia
And, the further step is that we make a running app based on the created wireframe where the real UI/UX is demonstrated. However, it is just a GUI/frontend with dummy data without interaction to a backend. Technically, that is just a html template which contains source code of HTML, CSS and Javascript. For example:
Source: ThemeF…

My 2017 Review

Passion for System Design After finishing a one year project, my longest stable team (lasted for 3 years) was separated into two smaller teams. Sadly, but that was a good chance for me to become a key member in my new team. My preferred skills were about system architectures; therefore most of the tasks of building the application structures were handled by me. In order to enhance my design system skills, I have spent much my time for reading books closely after work. These following books help me a lot.
- Object-Oriented Thought Process | Matt Weisfeld
- Head First Design Pattern | Elisabeth Freeman and Kathy Sierra
- Java 8 in Action: Lambdas, Streams, and Functional-style Programming | Alan Mycroft and Mario Fusco
Junior Technical Architect I was requested to join a technical architect team (aka Team. Alpha) where I actually had gained experiences almost on interviewing candidates for my company (lol). Besides, I noticed myself must improve the skills of convincing people because …