Skip to main content

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 I had had a strong debate with other members once in a sharing session (yes, I failed). It was really tough to convince others when introducing a stuff/an idea was totally new. But, "Do it Anyway" because debating makes problems clear.


New MacBook

This was something very normal but I think it's worth the money for tackling a new experience on a new operating system (macOS). I really loved it!

Facing challenges in finding a new company

I had worked at my old company (Axon Active Vietnam) for more than 4 years. It was not too long but I felt that it was the time for me to move out of my "safe zone". I had spent much time for interviewing to select a company for my new journey. Sadly, I had failed in a lot of places, from Outsourcing to Product to Startup companies. It was really a frustrated decision but eventually, I made a resignation when I didn't have a new offer. And, even my manager who also suggested a raise to keep me on my team. I appreciated that.

Fortunately, I had received several offers (exactly 3) at the end days before I left my old company. The following was my log: (Company | Applied position | Interview Notes)
  1. NVG | Senior Web Java Developer | Various questions about frameworks are being used.
  2. LenderRate | Developer | Algorithms (level: hard, difficult).
  3. ContentNet | Senior Developer | Deeply technical questions about Java core, design patterns and how to approach a technology.
  4. Absolute Vietnam | Developer | Deeply technical questions about Java core (but, it's my strong points).
  5. Innotech | Full-stack developer | Behavior questions (quickly, only <30 minutes).
  6. FPT | Developer onsite longterm in Singapore | Specific frameworks (Restful API, NodeJS, Microservices).
  7. Adnovum | Professional Developer | How you understand your most favorite projects and used technologies; algorithms (level: easy/medium).
  8. Freelancer with my beloved team | So, I passed it without conditions (Haha).
  9. Politely declined to interview at Zalora, SAI GON BPO.

Winning my first project with my freelance team

With a strong spirit of a startup, my team focused on trying to make our first project super succeed by providing a good quality and fast-building application. It was not only collaborating well with customers but consulting them to have a "better" application.

The following were key values of my team:
- Having the same vision: sharing a "can do" attitude. We organized some practical sessions each sprint such as knowledge sharing, code reviewing, and retrospective.
- Focus: reflection and adaption on whole sprint goal, not individual tasks status.
- Being agile: being flexible/effective at work rather than following strictly a process.

My desk at CirCO CoWorking Space

Happy New Year! 2018.

Comments

  1. Holy crap! but, it was cool. Algorithms can be called as "Chi" in Kung Fu!

    ReplyDelete

Post a Comment

Popular posts from this blog

Math fundamentals and Katex

It was really tough for me to understand many articles about data science due to the requirements of understanding mathematics (especially linear algebra). I’ve started to gain some basic knowledges about Math by reading a book first. The great tool Typora and stackedit with supporting Katex syntax simply helps me to display Math-related symbols. Let’s start! The fundamental ideas of mathematics: “doing math” with numbers and functions. Linear algebra: “doing math” with vectors and linear transformations. 1. Solving equations Solving equations means finding the value of the unknown in the equation. To find the solution, we must break the problem down into simpler steps. E.g: x 2 − 4 = 4 5 x 2 − 4 + 4 = 4 5 + 4 x 2 = 4 9 x = 4 9 ∣ x ∣ = 7 x = 7  or  x = − 7 \begin{aligned} x^2 - 4 &= 45\\ x^2 - 4 + 4 &= 45 + 4\\ x^2 &= 49\\ \sqrt{x}&=\sqrt{49}\\ |x| &= 7\\ x=7 &\text{ or } x=-7 \end{aligned} x 2 − 4 x 2 − 4 + 4 x 2 x ​ ∣ x ∣ x = 7 ​ = 4 5 = 4 ...

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

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

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

When we don't see the sun, we see other stars

What are your motivations for creativity? - I want to make a change. - It makes me happy! It is a need of my mind. How to be creative for a thing? There are two steps: - See the thing as every people see it - Think about a new different thing from it How to think about a new different thing? There are two ways: - Forget all things you have already known. - A whack on the side of your head. ;) This was what I have learned from the following great book: source: Amazon.com Well! A physical whack on the side of your head is needed sometimes but the meaning behind is that you need to break these 9 following locks on your mind. Remove them! The lock #1: "The correct answer" We all learn from schools that there is only one correct answer to a question. For example, a proposition is only true or false in Algebra. In reality, there are always some answers to a question basing on a point of view. For example, number 6 becomes number 9 if you look it ...