Skip to main content

About me

I moved to write on my own hosted blog at nguyenvanhuong.vn. Visit the website for new posts.

I am a software developer living in Vietnam. I started my career at Axon Active Vietnam, where I learned the fundamentals of building web enterprise systems with Java. After nearly five years of working with the low-code platform Axon.ivy, I decided to change my path and joined ubitec. There, I began working with Python to build an AI chatbot using Rasa. However, my company then rotated me to another team to build a chat platform using the open-source project Rocket.Chat, turning me into a full-time JavaScript developer for nearly another five years.

After spending several years in software development, I had the opportunity to gain valuable experience in various aspects of the field. It became clear to me that engineering management tasks often presented challenges that needed to be overcome. With this in mind, I aspired to become an active participant and concentrate on resolving any issues within my company's software development processes, particularly those related to engineering management.

The name of my blog, "vhandit", is short for "Van Huong and IT". 

Follow me on

Comments

  1. Bạn có thể add subscribe option trong website này để mình nhận được tin nhắn, email khi bạn post bài viết mới được không.

    Cám ơn bạn nhiều.

    Tuyền

    ReplyDelete
    Replies
    1. Cảm ơn ý kiến của @Tuyen Nguyen nhé. Tôi đã thêm gadget "Follow by Email" vào site. Ngoài ra bạn cũng có thể dùng http://feedly.com/. ;)

      Delete
  2. A cài plug in hiển thị code cho dễ đọc vs a

    ReplyDelete
    Replies
    1. Thank bạn nhé! Hazz...blog đang sử dụng Syntaxhighlighter, có thể bị vấn đề ở một số browser rồi, tôi kiểm tra lại xem sao. :(

      Delete
    2. xem được rồi, mới xem profile linkedin thì ra là bằng tuổi -.-

      Delete
  3. em cũng mới tập viết blog: thachleblog.com. Nếu được a ghé đọc góp ý với :D

    ReplyDelete
  4. bạn có thể viết thêm các bài review về các framework hay công nghệ mới của java không , JSF mình thấy ít cty dùng lằm mặc dù nó là con đẻ của JAVA

    ReplyDelete

Post a Comment

Popular posts from this blog

Styling Sort Icons Using Font Awesome for Primefaces' Data Table

So far, Primefaces has used image sprites for displaying the sort icons. This leads to a problem if we want to make a different style for these icons; for example, I would make the icon "arrow up" more blurry at the first time the table loading because I want to highlight the icon "arrow down". I found a way that I can replace these icons with Font Awesome icons. We will use "CSS Pseudo-classes" to achieve it. The hardest thing here is that we should handle displaying icons in different cases. There is a case both "arrow up" and "arrow down" showing and other case is only one of these icons is shown. .ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s { background-image: none; margin-left: 5px; font-size: 1.1666em; position: relative; } .ui-sortable-column-icon.ui-icon.ui-icon-carat-2-n-s:not(.ui-icon-triangle-1-s)::before { content: "\f106"; font-family: "FontAwesome"; position: ...

[Snippet] CSS - Child element overlap parent

I searched from somewhere and found that a lot of people says a basic concept for implementing this feature looks like below: HTML code: <div id="parent">  <div id="child">  </div> </div> And, CSS: #parent{   position: relative;   overflow:hidden; } #child{   position: absolute;   top: -1;   right: -1px; } However, I had a lot of grand-parents in my case and the above code didn't work. Therefore, I needed an alternative. I presumed that my app uses Boostrap and AngularJs, maybe some CSS from them affects mine. I didn't know exactly the problem, but I believed when all CSS is loaded into my browser, I could completely handle it. www.tom-collinson.com I tried to create an example to investigated this problem by Fiddle . Accidentally, I just changed: position: parent; to position: static; for one of parents -> the problem is solved. Look at my code: <div class="modal-body dn-placeholder-parent-positi...

Building a Wizard with Chain of Responsibility Pattern

What is the Idea? We want to create a page that there are some steps and each step has its own business. Users are able to click on a step and its status could be changed. Primefaces owns a component " Wizard " but it it quite hard for us in order to apply our very specific and complicated business domain logic on each step; even we cannot click on a step of this component. We somehow are able to use the component " TabView " works with a strong back-end mechanism. A backend mechanism! what do I mean? Yes, we need it because we want to abstract the behaviors of each step otherwise we will get trouble with many events handling. Obviously, each step has some behaviors  such as "next", "back" and "switch' are the same and they are related to each other; but the business of these behaviors can be different totally. That is where the pattern "Chain of Responsibility" can be applied. Step by Step Building It! In this simple pr...

How to convert time between timezone in Java, Primefaces?

I use the calendar Primefaces component with timeOnly and timeZone attributes for using only hour format (HH:mm). Like this: <p:calendar id="xabsOvertimeTimeFrom" pattern="HH:mm" timeOnly="true" value="#{data.dateFrom}" timeZone="#{data.timeZone}"/> We can convert the value of #{data.dateFrom} from GMT/UTC time zone to local, conversely, from local time zone to GMT/UTC time zone. Here is my functions: package vn.nvanhuong.timezoneconverter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class TimeZoneConverter { /** * convert a date with hour format (HH:mm) from local time zone to UTC time zone */ public static Date convertHourToUTCTimeZone(Date inputDate) throws ParseException { if(inputDate == null){ return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(inputDate); int ...

Junit - Test fails on French or German string assertion

In my previous post about building a regex to check a text without special characters but allow German and French . I met a problem that the unit test works fine on my machine using Eclipse, but it was fail when running on Jenkins' build job. Here is my test: @Test public void shouldAllowFrenchAndGermanCharacters(){ String source = "ÄäÖöÜüß áÁàÀâÂéÉèÈêÊîÎçÇ"; assertFalse(SpecialCharactersUtils.isExistSpecialCharater(source)); } Production code: public static boolean isExistNotAllowedCharacters(String source){ Pattern regex = Pattern.compile("^[a-zA-Z_0-9_ÄäÖöÜüß áÁàÀâÂéÉèÈêÊîÎçÇ]*$"); Matcher matcher = regex.matcher(source); return !matcher.matches(); } The result likes the following: Failed tests: SpecialCharactersUtilsTest.shouldAllowFrenchAndGermanCharacters:32 null A guy from stackoverflow.com says: "This is probably due to the default encoding used for your Java source files. The ö in the string literal in the J...