Skip to main content

My 2022 Review

2022 was completely a mind-blowing year for me. Lots of changes happened at work. At present, things seem to be going to settle down, I want to look back at my year.

My balcony (2022)

Q1

At beginning of the year, I started with Metaverse and NFT research. I completed my first course about a new technology Blockchain on brilliant[dot]com which became my best favorite learning platform later on. Getting a certified IBM developer certification was also a good experience. I gained more knowledge of technologies including containerization, microservices, DevOps, and Cloud-Native. It triggered me to plan for DevOps toolchain enhancement for the company. Adopting GitOps practice was a good start. It is one of my main focuses for my position role as a Tech Lead. I was really impressed by the book “The Brief History of Time”. The story of Stephen Hawking was so inspiring. To me, it was one of my favorite books of this year. Sadly, this period was the time when some of my good friends were leaving the company.

Q2

Changing the organizational process was so truly difficult. Lots of discussions have been conducted to have the same voice for a group of people since the new role Engineering Lead was proposed for the change. What I experienced well in this period was that whenever I put my energy into something, all related things will come around me. And, franking is the only medicine to treat toxic sicknesses and environments. I started to sharpen my English pronunciation skills with ELSA speak app. I also spent time reading human management-related books including “The Mythical Man-Month” and “Peopleware”. I also spent a month interviewing for a new role as an Engineering Manager in a startup.

Q3

The role of Engineering Lead was adopted well. Working with completely new teams with new projects was an excellent experience. I have learned to work with new people who don’t have the same mindset as me. As a leader of the new teams, I understand more about the effortless approach to leading people. Getting the Professional Scrum Master (PSM) certificate helped me set up my working style as a Scrum Master with new teams. I affirmed that I should not be a hero but rather that I need to give more authority to the team to be self-organized.

Q4

Still, there were many things happened unanticipatedly. Another good member was leaving the company. It was the first time I joined team HR to define a process of annual performance appraisal. It took a huge time and effort. Some new practices were officially applied as a company standard such as Engineering Levels, OKRs, and the role of Team Lead. I also have experience with leading some development teams working on different projects built with different technologies. Giving clarity of the projects' roadmap for developers was my important job. Moreover, I have learned along with teams to solve different emerging project issues.

Comments

Popular posts from this blog

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 Tools Oracle JDK 1.8...

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

Functional programming in Java 8

In my previous post , we discussed about why we should consider to use functional programming. Now, let's delve into what functional programming in Java is. What is pure functional programming? Shortly,  f unctional programming is programming using functions. A function corresponds to a mathematical function such as log, sin. Basically, it takes zero or more arguments, give one or more result, and has no side effects. We can't completely program in pure functional style in Java Why?  For example, calling Scanner.nextLine twice typically gives different result. So, it's just called "functional-style programming". How is that? - There is no mutating structures visible to callers. That means your side effect may not be visible to a program, but it's visible to the programmer in terms of slower execution. - A function or method shouldn't throw any exceptions (follows the concept "pass arguments, return result"). We can use types like Opti...

Attribute 'for' of label component with id xxxx is not defined

I got the warning in the log file when I have used the tag <h:outputLabel> without attribute " for " in xhtml file. It was really polluting my server log files. The logged information actually makes sense anyway! We could find an answer as the following: "Having h:outputLabel without a "for" attribute is meaningless. If you are not attaching the label, you should be using h:outputText instead of h:outputLabel." However, these solutions are not possible just for my situation. Instead of using h:outputText for only displaying text, my team has used h:outputLabel too many places. We were nearly in our release time (next day) so it is quite risky and takes much efforts if we try to correct it. Because the style (with CSS) is already done with h:ouputLabel . The alternative by adding attribute " for " the existing h:outputLabel is not reasonable either. I really need to find another solution. Fortunately, I came across a way if I cha...