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

My impression of Google I/O 2016

I have not yet had a chance to attend this event but I just watched it on Youtube  as usual. :) Google Assistant You might be very familiar to Google Now if you're Android fan. I saw that Google Assistant is like an upgrade to Google Now. It looks smarter because we are able to make a conversation with Google rather than just saying "Ok Google" and getting the tasks done as Google Now. That means Google Assistant can understand our personal words in our contexts. For example: I : Who is Google CEO? Google : Sundar Pichai I : Show me his awards  => Here I don't need to say "Show me Sundar Pichai awards", because I don't know to pronounce his name correctly. :) I am thinking about that we can compare Google Assistant to Siri of Apple. Google Home At Google I/O 2015 last year, Sundar mentioned about working on a exciting project with Internet of Things and I think Google Home is a result. Working with Google Assistant, Google ho...

Selenium - Override javascript functions to ignore downloading process

I have got an issue with downloading process on IE 8. This browser blocks my automatic-download functionality on my app so that I could not work with my test case any more after that. In my case, I didn't care about the file is downloaded or not, I just focus on the result after downloading process finished successfully. Therefore, I found a solution to ignore this process so that I can work normally. I use Primefaces, here is the remote command to trigger the download process <p:remoteCommand name="cmdGenerateDocument" actionListener="#{logic.onGenerateDocument}" update="xrflDocumentCreationPanel" oncomplete="clickDownloadButton();"/> The following is my test case: @Test public void shouldUpdateStep6ToWarningIfStep1IsValidAfterFinished(){ MainPage mainPage = new MainPage(); waitForLoading(mainPage.getDriver()); EmployeeDetailPage empDetailPage = new EmployeeDetailPage(); waitForLoading(empDetailPage.getDriver()); e...

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: ...

How I did customize "rasa-nlu-trainer" as my own tool

Check out my implementation here Background I wanted to have a tool for human beings to classify intents and extract entities of texts which were obtained from a raw dataset such as Rocket.chat's conversation, Maluuba Frames or  here . Then, the output (labeled texts) could be consumed by an NLU tool such as Rasa NLU. rasa-nlu-trainer was a potential one which I didn't need to build an app from scratch. However, I needed to add more of my own features to fulfill my needs. They were: 1. Loading/displaying raw texts stored by a database such as MongoDB 2. Manually labeling intents and entities for the loaded texts 3. Persisting labeled texts into the database I firstly did look up what rasa-nlu-trainer 's technologies were used in order to see how to implement my mentioned features. At first glance rasa-nlu-trainer was bootstrapped with Create React App. Create React App is a tool to create a React app with no build configuration, as it said. This too...

Sharing a virtualenv across several Python projects using Pipenv

There is a standard library for all projects in Python. However, several projects don’t always have the same dependencies all the time. That is where virtual environments come to play. You can follow this official document to use two separated tools  virtualenv and pip to  fulfill that need. My preferred alternative is to use pipenv . Pipenv is easy to use and convenient. The following are my steps to make a shared virtualenv for my all projects which requires the same dependencies. Step 1. Create an isolated virtualenv. python -m venv my-shared-env Step 2. Create a symbolic link to the created virtualenv. cd project_1 ln -s ~/.local/share/virtualenvs/my-shared-env .venv I have encountered the following issue at step 1. FileNotFoundError: [Errno 2] No such file or directory: '{my_project_path}/.venv/bin/pip': '{my_project_path}/.venv/bin/pip' The root cause was I tried to create virtualenv by running pipenv install and renaming the generated virtualenv to ...