Skip to main content

Posts

Team Fight Tactics Zero to Master: My 501-Game Journey to Reach the Highest Static Rank in TFT

Introduction Hi, I'm ninjahoahong , a casual gamer with a fondness for strategy games. After achieving Queen rank in Autochess three months ago, I sought a new challenge and turned to Team Fight Tactics (TFT). Despite my experience in the auto-battler genre, I soon realized that mastering TFT would entail a significant amount of learning and trial-and-error. In TFT, players aim for two types of ranks: static and dynamic. Static ranks, like Iron, Bronze, and so on, reflect overall performance and skill level in the game, achieved through consistent play and improvement. As a casual player, my aim is to reach the highest static rank, Master. Additionally, TFT features dynamic ranks that change based on recent performance, such as Grandmaster and Challenger. These ranks are more temporary and competitive, requiring steady performance to achieve and maintain. While they're admirable, I'll likely aim for those dynamic ranks next, but as a casual player, my focus is to start ...

Prepare Lubuntu 20.04 for software development

Prepare Lubuntu 20.04 for software development ninjahoahong After using windows , macosx , and serveral linux ditributions. For me, Lubuntu is the lightest and easiest to set up and run so far. If you search there will be two domains provide lubuntu which are lubuntu.me and lubuntu.net . You should use lubuntu.me which provide the most updated version of lubuntu . In this blog, I will focus on the additional packages after installation. Create Lubuntu 20.04 bootable usb Download Lubuntu 20.04 iso file. Create bootable usb using balena etcher or unetbootin . Boot to the usb and install Lubuntu . This is a starting screen using lxqt . Additional packages There are packages for apt and snap . I prefer apt since the app installed by snap command will take long time in the first launch. Web browser: brave I usually inst...

Configure virtualbox data center which uses ubuntu 20.04

In this blog, I will show how to configure network in ubuntu 20.04 to create a small data center with virtualbox to simulate cloud vps in local development environment. The overall procedure is to, first, creating a virtual machine with 2 bridge network adapters attached. Then, making configuration for the network adapters with netplan . After that, cloning 2 more virtual machines and adjust the ip addresses in the network configuration. Create a virtual machine and configure its network Create new virtual machine and attach bridge network adapter to Adapter 1 and Adapter 2. Let's put the name for the machine as red Find out what are the name of the network interfaces using command ip a Then modify the file with content similar to below. Copy the content below to /etc/netplan/00-installer-config.yaml , then modify the ethernet interfaces to match with your virtual machine's interfaces. After that, run netplan apply for the ne...

The first taste of Rust - A simple you tube downloader

Recently, I just learnt Rust and using it to write a simple youtube downloader with reference from node-ytdl . In this blog, I would like to share the code and how did I make it. You can find the full source code here . Install development environment I am using Windows 10 and scoop package manager. Therefore, I use the following commands. Run scoop install rustup-msvc to install rustup . Run setx "%path%;%USERPROFILE%\\scoop\\persist\\rustup\\.cargo\\bin" to add rustup to the path. Restart termial (git-bash in my case) and check the installation with rustup --version; rustc --version; cargo --version Export custom RUST_HOME : export RUSTUP_HOME=$HOME/scoop/persist/rustup/.cargo/bin/rustup Install a toolchain for rustup : rustup toolchain install stable-x86_64-pc-windows-msvc Setup project Run cargo new simple_rust_youtube_downloader --bin && cd simple_rust_youtube_downloader to create and navigate to the project. Add these dependencies to ...

Chia sẻ: "Daily Routine To Fight Off Depression" video from Psych2Go

"Daily Routine To Fight Off Depression" là một trong những video mình thấy rất hay về việc giúp hình thành những thói quen giúp cho cuộc sống bớt cẳng thẳng hơn. Video có phụ đề bằng tiếng Anh có thể dùng để ghi chép lại và dịch ra tiếng Việt nếu cần thiết. Ngoài ra bạn có thể dùng chức năng "Auto-translate" và chọn Tiếng Việt để coi video với Việt sub. Làm như vậy tuy có một ít sai sót nhưng vẫn có thể nắm được ý chính của video.     Reference:     The video from Psych2Go youtube channel: https://www.youtube.com/channel/UCkJEpR7JmS36tajD34Gp4VA - ninjahoahong

Scripting with Java

I think Java is quite verbose for scripting. However, it can also be fun. I wrote a very simple experiment of ls command. You should try it out. Download file ls and chmod +x ls then you can run ./ls . There are no flags/options supported.😆 - ninjahoahong

My books review: Money for the rest of us

Overview: The "Money for the rest of us" book is a list of 10 questions serve as a guideline to invest. It is light book with not many pages and can be read during commute time. The book does not require audiences to have any special knowledge. My impression: The author, Mr. David, is very friendly and patient to answer my questions. The 10 questions are greatly explained by the author, and I think they provide a good starting point. However, I think anyone who wants to invest should build their own checklist and a general guideline for different situations. When a general guideline is in place, the decisions need to respect the guideline in order to make consistent decision. Consistency , in my opinion, is the most important in the long run as it provide information for constant feedback and improvements. Overall, I think this is a good book that helps improving my decision making process. - ninjahoahong

Use SwiftUI preview with UIKit

In my opinion SwiftUI preview is the most useful feature in SwiftUI if you want to work with older version of IOS. In this post I share how I set up my project.  Create project like showing in the pictures:   Delete the unused ContentView which use the SwiftUI.   Modify AppDelegate as follow. Create MainView (UIView) and MainViewController (UIViewController). Adding these previews functions into MainView and MainViewController. Build the project and refresh Canvas. The previews should show now. You can try to change a background color of the ViewController and see the change take effect immediately. Like in the video: Finally, Link to the code. - ninjahoahong

A starting project example for Spring Boot 2 with Postgresql, Swagger2, and JWT

Inspired by my colleague, I have spent some time putting together a Spring Boot 2 starting project. Audience: Developers who would like to have a structured Spring Boot 2 project to compare. Link to the repository: spring-boot-example Dependencies: Spring Actuator for management lombok for easy annotations swagger and swagger-ui for docs Spring devtools for dev Spring security for signup and login postgresql for database jpa for database access jjwt for jwt in java h2 for database using in test security test for testing security stuffs Spring Boot Starter Test for testing boot application What in the examples: Simple sign up and login. Simple Rest API demostration. Auto database migration with Flyway. Auto documentation generation with Swagger2 Build with gradle. Running locally with Docker + docker-compose. Store data in Postgresql database. Init database with startup sql-script. Some unit test for the Rest API. Reference: My colleague proje...

Resources for learning to get Cloud (AWS, Azure, GCP) Architecture Certifications

In this post, I would like to share a quick notes on the resources and my learning to get three cloud architect certifications: AWS Cloud Certificate Solution Architect Associate, Google Cloud Solution Architect Professional, Azure Az 300. I hope it help and good luck to your exams. AWS Cloud Solution Architect Associate This is the most details exam in all three exams that I took.     * Time I have spent to learn: roughly 150 hours.     * ACloudGuru video course in Udemy.     * Udemy practice exams.     * Tutorial Dojo resources [1]     * Practice with the web portal. My learning:     * Going through the highlevel overview by Watching 10000 videos.     * Doing practice exam to figure out what I do not know well.     * Reading the docs about the not know.     * Going to the portal and practice that thing. Google Cloud Solution Architect Professi...

Packing lightly to save our environment

I am checking for a new trip with my favorite airline - Finnair. And I have notice that if everyone takes a small action as packing less 1 kilogram of baggage can save a huge amount of fuel. Therefore, the small action can also save our environment. "If possible, take direct and short routes, combine different forms of transit (for example, a train journey with a flight) and fly with airlines that use modern and fuel-efficient aircraft fleet. You can also directly influence the fuel consumption by packing lightly. If every Finnair passenger would have travelled with one kilogram less baggage in 2018, the fuel savings would cover 20 flights from Helsinki to Tokyo." Reference: https://www.finnair.com/fi/gb/pushforchange - ninjahoahong

Games I have played: Sugar Blast

Recently, I have played a game made by Rovio Entertaiment, the Angry Bird maker, called Sugar Blast. Following you can see the main scene of the game. Personally, I really like the art style of the game especially those cute mini figures. I have not found a game very interesting with challenges such as the "choco challange" show in the following pictures. The challenges usually last several days and the top 3 will get gold, silver, and bronze medals. The player will get match with players of similar levels so that the race is more exciting. Beside the challenges, there is also event such as caching rainbow candies or stars which will get the player different in game rewards. In addition, a player can create a team or join another team created by other player. Below is a video on a demo play. In the demo, I have played a level using special skills such as the magic guy to re-arrange the layout and the "powers-up" to bomb a large area. There is ...

An Oauth2 Authorization Server Sample with Spring Boot, Spring Security, Gradle, Postgresql, and Flyway

I recently decided to make a sample code for An OAuth2 Authorization Server with Spring Framework , Gradle , Posgresql , and Flyway . The reason is because the lack of sample for Spring with Gradle build tool. Audience: * The sample code is for readers who have some knowledge of Java, Postgresql, Spring, and Gradle and look for the way to put it together. What in the examples: * Provide JWT * Auto database migration with Flyway * Build with gradle * Running locally with Docker + docker-compose * Store data in Postgresql database * Init database with startup sql-script Link to the repository: spring-oauth2-authorization-server - ninjahoahong

Quick overview of Terraform 0.12

My first talk about terraform. A quick demo of terraform 0.12 beta 1. 😂 https://t.co/WTmxj2KwKD #terraform #cloudautomation #cloud — Anh Duong (@ninjahoahong) March 11, 2019 Presentation link: https://docs.google.com/presentation/d/1QjAKkVbITe1LlANJcoS4I8oP-j2yS0HCB8peCb8B0ao/edit?usp=sharing Reference: https://github.com/hashicorp/terraform-guides/tree/master/infrastructure-as-code/terraform-0.12-examples https://www.hashicorp.com/resources/introducing-terraform-0-12 https://www.terraform.io/upgrade-guides/0-12.html https://www.hashicorp.com/blog/terraform-0-1-2-preview

Unstoppable - an open source trivia game

I wrote a simple Android trivia game which is getting questions from https://opentdb.com/. You can check out the project at  gitlab . A sample game play can be seen in the below video. Feel free to give comments, git stars, or feedback. Download the game from play store:  https://play.google.com/store/apps/details?id=com.ninjahoahong.unstoppable Enjoy - ninjahoahong

My books review: Good Strategy Bad Strategy: The Difference and Why It Matters

In my opinion, this is quite a dry book. Though, there are a lot of real life examples.  The author identified the elements of bad strategy and the misusage of the word "strategy". Then, he gave the definition for a good strategy - what it should include. After reading this, in my understanding, a strategy is something to help the one to know its current situation, its direction, and define the way to it can get to the goal. The point I like the most in this book is sometimes new thing can come by just shifting your perspective. In addition, the element I feel the most important after reading this book is FOCUS . Overall, in my opinion, this is not a very interesting book but is useful. - ninjahoahong

Try Haskell

I have zero experience of Haskell but I have heard about it a lot. Therefore, today I started learning Haskell by going to tryHaskell site and found out that it is pretty concise and nice to use, especially when the site is very beginner friendly. - ninjahoahong

Stair climbing for being calm and composed

Coincidentally, I have worked in the highest floor in almost all my workplaces. Thanks to that I realised that climbing one stair at a time to the highest floor help me to train being calm and composed. The process is very simple, you just need to spend to walk up the stairs without skipping anyone. In the first time I had done it, I was really out of temper from the start but when reaching my workplace I felt so accomplishing and relaxing to start my day. I hope you will enjoy this little experiment. - ninjahoahong

Using RoboPOJOGenerator

Recently, I have used more AutoValue in my Android projects and needed to copy and paste quite many set up codes. Then I decided to try RoboPOJOGenerator out, it is working great with AutoValue and this AutoValue Gson library . Reference: https://github.com/robohorse/RoboPOJOGenerator https://github.com/rharter/auto-value-gson - ninjahoahong

Blogger Post Template

The easiest way to start using a template is that you visit your own typical blog and change to HTML tag and copy the blog to the Settings --> Post, comments, and sharing --> Post Template. Then remove the real text and replace it with the template text. For example, this blog's template is: Reference: https://support.google.com/blogger/answer/154172?visit_id=1-636349071961278260-2951406294&rd=1 - ninjahoahong