Blog category
Technology
-
Corporate Governance Across Emerging Markets
For global investors and owner-managers alike, corporate governance in emerging markets is no longer a peripheral concern. It sits at the heart of capital allocation, risk management, and long-term value creation. China, Brazil,…
Read more -
How Communication Shapes Trust and Governance in Global Asset Management
Governance is rarely decided in dramatic boardroom moments. It is shaped quietly and persistently by the quality of information directors receive, the discipline of how decisions are framed, and the consistency with which an…
Read more -
What Truly Defines an Effective Director
Corporate governance ultimately rises or falls on the quality of the individuals who sit around the board table. Committees, codes, and structures matter, but they are only as effective as the judgment, integrity, and competence…
Read more -
Power, Structure, and Transparency in Global Corporate Groups
Corporate governance is often discussed in abstract terms, yet it is best understood through the structures, behaviours, and disclosure practices of real organizations. When we examine how large groups are organised, how power is…
Read more -
Why the World Is Converging, Diverging, and Quietly Redefining Accountability
Corporate governance has never been more global, yet the practices that shape it remain deeply rooted in history, culture, and institutional design. Across the world, jurisdictions continue to balance the demands of international…
Read more -
How to Monetize Your Data
In today’s business landscape, data has become the most underutilized asset on the balance sheet. Organizations often collect it in abundance, yet struggle to translate it into measurable impact. The question is no longer whether…
Read more -
The Immigrant’s Dilemma in a World of Rising Tensions
In recent weeks, protests in Australia against immigrants have drawn international attention. This is part of a broader global trend, where de-globalization and protectionist sentiment are gaining momentum. In the United States,…
Read more -
The U.S.-China Trade War is More Than a Clash of Interests
The U.S.-China trade war is often framed as a struggle over economic interests, including tariffs, technology access, and trade deficits. But this view misses the deeper story. What we are seeing today is not just a trade…
Read more -
How Democracy Dies Without Action
Democracy is often pictured as peaceful debates, clean elections, and respectful leaders taking turns to speak. These images are comforting. They give people hope that if a country simply adopts the surface features of democracy,…
Read more -
Accelerating Data Processing with Grid Stride Loops in CUDA
As the demand for processing large datasets increases, achieving high performance becomes critical. GPUs excel at parallel computation, and CUDA provides developers with the tools to leverage this power. One essential technique…
Read more -
Accelerating Python with Numba - Introduction to GPU Programming
Python has established itself as a favorite among developers due to its simplicity and robust libraries for scientific computing. However, computationally intensive tasks often challenge Python's performance. Enter Numba — a…
Read more -
The Joy of Being Wrong - Embracing Discovery and Growth
In the world of research and discovery, there’s an often-overlooked truth: being wrong is one of the best things that can happen to you. It’s not just a sign of humility or a badge of courage—it’s a gateway to learning and…
Read more -
A Guide to Mindful Acceptance
Dealing with anxiety and cravings has been a struggle for as long as I can remember. I tried every tip out there—distracting myself, challenging my thoughts, even trying to ignore them altogether. But none of that really worked.…
Read more -
The Pitfalls of Philosopher King - Why Morality Alone Isn’t Enough for Effective Leadership
The idea of the philosopher king, a leader who governs with wisdom and morality, has long captured the imagination. During a recent coffee chat, my friend and I debated whether the most moral person should lead an organization.…
Read more -
Running npm install on a Server with 1GB Memory using Swap
Running npm install on a server with only 1GB of memory can be challenging due to limited RAM. However, by enabling swap space, you can extend the virtual memory and ensure smooth operation. This blog post will guide you through…
Read more -
Understanding My Top 5 CliftonStrengths
The CliftonStrengths assessment has revealed my top five strengths: Achiever, Intellection, Learner, Input, and Arranger. This blog post explores each of these strengths in detail, how they manifest in my life, and how I leverage…
Read more -
Memory Management and Concurrency in Go
Go, developed by Google, is known for its efficiency and simplicity in handling memory management and concurrency. In this blog post, we'll explore how Go manages memory, how its garbage collector (GC) works, and the fundamentals…
Read more -
Understanding the DISC Personality Test - My Conscientiousness and the Perfectionist Pattern
In the realm of personal and professional development, the DISC personality test stands as a popular tool used by individuals and organizations alike to enhance self-awareness and interpersonal relations. This assessment…
Read more -
Enhancing Negotiation and Presentation Skills for Enterprise Architects
In the evolving landscape of information technology, the role of an enterprise architect (EA) has become increasingly pivotal. An EA is not just a technical expert but also a strategist, a change agent, and a communicator. They…
Read more -
Enhancing Digital Security with Certification Pinning
In an era where digital security is paramount, one technique stands out for its ability to fortify the defenses of online communications against man-in-the-middle (MITM) attacks: certification pinning. This method, although not…
Read more -
An Introduction to Border Gateway Protocol (BGP)
The digital age is characterized by an ever-growing web of interconnected networks, forming the vast expanse of the internet. At the heart of this complex network lies a crucial set of rules and procedures known as the Border…
Read more -
Understanding Generic Routing Encapsulation (GRE)
In the ever-evolving landscape of network technology, the need for versatile and efficient tunneling protocols is paramount. Among these, Generic Routing Encapsulation (GRE) stands out as a simple yet powerful protocol. Developed…
Read more -
Understanding the Cynefin Framework - Navigating Complexity in Decision-Making
In today’s fast-paced and intricately connected world, decision-making has become an increasingly complex task. The Cynefin Framework, developed by Dave Snowden in 1999, offers a practical approach to understanding and addressing…
Read more -
My journey to discover the Youtube algorithm
Last year during the Christmas holiday, I was bored at home and did some research about content creation. I am curious of unlocking the secret algorithm on YouTube to driving views, building an audience, and growing revenue…
Read more -
Understanding the Kepner-Tregoe Technique - A Guide to Enhanced Problem-Solving and Decision-Making
In the dynamic world of business, the ability to efficiently solve problems and make decisions is crucial for success. The Kepner-Tregoe technique, developed by Charles H. Kepner and Benjamin B. Tregoe, is a structured…
Read more -
Understanding Inertia and Silhouette Coefficient - Key Metrics in Clustering Analysis
Clustering is a fundamental technique in data science and machine learning, used for grouping similar data points together. Among the various metrics to evaluate the quality of clustering, Inertia and Silhouette Coefficient stand…
Read more -
Understanding Regularization - Lasso, Ridge, and Elastic Net Regression
In the field of machine learning and statistical modeling, regularization is a crucial technique used to prevent overfitting and improve the generalization of models. This blog post will delve into three popular regularization…
Read more -
The Consideration Guide of Buy vs Build Software
In today's digital age, businesses constantly face the dilemma of whether to purchase commercial off-the-shelf software (COTS) or invest in building custom solutions in-house. This decision, often termed as the "buy vs build"…
Read more -
Ionic Framework - An Open-Source SDK for Hybrid Mobile App Development
Last week, I was building a prototype using ionic framework. In a digital age marked by a growing demand for versatile mobile applications, developers seek technologies that allow for the creation of high-performing,…
Read more -
ChromeOS Flex for PC - A Second Life for Your Old Hardware
Once resigned to gathering dust or joining the landfill, your old PCs and Macs have now been given a second lease on life. Meet ChromeOS Flex, Google's innovative operating system aimed at reviving outdated computers. Unlike the…
Read more -
Shifting from Goods-Dominant to Service-Dominant Perspective
In the ever-evolving landscape of business, approaches and paradigms that once served as the cornerstone of success can quickly become obsolete. One such paradigm shift that has gained prominence is the transition from a…
Read more -
Demystifying SSL Certificates - Understanding .pem, .crt, .p12, and .key Files
In today's digital world, ensuring the security and integrity of online communications is of paramount importance. One of the key technologies that guarantee secure connections is SSL (Secure Sockets Layer) certificates. SSL…
Read more -
Enhancing Security with Mutual Transport Layer Security (mTLS)
In the realm of network security, the importance of secure communication protocols cannot be overstated. Transport Layer Security (TLS) has long been a cornerstone for securing data transmitted over networks, especially the…
Read more -
Striking a Balance -The Pitfalls of Excessive Security in Software Development
I am currently in a project, trying to deploy software solution in the environment with too much security. It is a pretty painful experience. In today's digital age, security is a paramount concern for software developers and…
Read more -
Demystifying Innovation - Unveiling the True Drivers of Progress
Everyone is excited about Apple’s Vision Pro, which is the new mixed-reality headset launched recently, but is this a true innovation? Innovation is a driving force behind human progress, revolutionizing industries, improving…
Read more -
Enhancing Software Security with DevSecOps
In today's digital landscape, the need for robust and secure software development practices is more critical than ever. DevSecOps, a fusion of development, security, and operations, provides a proactive and continuous approach to…
Read more -
Gatsby Frontend - Blending Performance, Efficiency, and User Experience
My blog is build with gatsby frontend framework. In today's fast-paced digital landscape, delivering high-performance websites with exceptional user experiences has become a top priority for businesses and developers. One of the…
Read more -
Next.js - The React Framework for Building Modern Web Applications
I participated in a hackathon over the weekend where I used Next.js and found it incredibly useful. In the ever-evolving landscape of web development, staying ahead of the curve is crucial for delivering exceptional user…
Read more -
Challenges of MBA Programs
I graduated from the part-time Master of Business Administration (MBA) program at the Chinese University of Hong Kong in 2019. An MBA degree has long been considered one of the most prestigious and valuable qualifications in the…
Read more -
Setting Up Python with Pyenv
Setting up Python on your local machine can be challenging, especially when you need to manage multiple Python versions. Pyenv comes in handy when you need to reproduce an issue in a specific Python environment that you don't…
Read more -
The Process of Self-Publishing a Book
A couple of months ago, I published a book online through Amazon's self-publishing service. Just to clarify, I am not a professional writer or artist; I work as a software engineering manager in the fintech industry. My…
Read more -
Working with Localization on Websites and Mobile Apps in APAC
First and foremost, why does this blog post exist? What question are we trying to answer? A colleague of mine in the UK specifically asked me about localization, tools, and best practices—or lack thereof—in the Asia-Pacific…
Read more -
My Career Transition to Software Engineer
In 2014, I received life-changing news: my work visa application for Australia had been rejected. After spending a year there on a working holiday visa and landing an extended job offer as a marketing manager in Brisbane, my…
Read more -
A Brief History of My Childhood
My life story naturally begins with my mother, without whom I wouldn't exist or be writing this post. Before my birth, I had no awareness of the world around me. According to my mother, I was more of an accident than a planned…
Read more -
The Tried-and-True Way is the Right Way
If you've ever walked a dog, you've likely observed how curious puppies can be. A simple fifteen-minute walk can turn into an hour-long adventure as the dog stops to investigate every tree, smell various objects, and even taste…
Read more -
Take Charge and Lead
I am now a manager, responsible for directing a small team. To perform well in our roles, we need a blend of talents, including technical knowledge, emotional intelligence, and negotiation skills. Both within my organization and…
Read more -
Always Learning New Things
During my university enrollment, I faced the dilemma of choosing between academic and practical studies. As a teenager, I believed that a university should serve as an educational institution rather than a vocational training…
Read more -
On Building and Contributing to the Community
Building and contributing to the community are crucial for a meaningful life. While humans may not be the fastest or strongest animals, we dominate the Earth thanks to our social abilities. Our collective endeavors often yield…
Read more -
My Goal to Be Healthier
I firmly believe that striving for a healthier lifestyle is crucial for our professional and personal relationships, as well as for our overall well-being in this unpredictable world.
Read more -
A Future to Avoid
A life without significance paints a vivid image of an unfavorable future. People work diligently to achieve their goals in pursuit of their ideals. The purpose of science is to uncover truth, while art aims to display beauty.…
Read more -
Swipe Left or Swipe Right? A Journey Through Dating and Maturity
Are you single or perhaps in a complicated marital status? Finding love can be a daunting task, whether you're single or "available."
Read more -
How to Download a View-Only Shared Google Drive Video
Last week, I received a Google Drive video that was shared with me in "View-Only" mode. When I tried to further share this video with my team, they encountered "Access Denied" errors when attempting to open the link.
Read more -
The Importance of Communication as a Software Developer
Let me explain why software developers need to be good communicators. Although it may seem self-evident, this skill will significantly impact your career. I say this from personal experience, having learned the hard way. As a…
Read more -
Setting Up Auto-Formatting for Python in Visual Studio Code
I was writing Python code and encountered issues with formatting. These formatting problems can complicate code reviews and the use of automated tools to detect such issues. Fortunately, life becomes much easier when you…
Read more -
Writing Your Android App to Run in Background Mode as a Service
In some scenarios, you might face an issue where your app's functionality is lost after several minutes when users place it in background mode or lock their screens. This can lead to poor user experience, such as Bluetooth…
Read more -
Caveats with Android In-App Browsers
When you're developing a web application, you need to take browser compatibility issues into account. I encountered a problem with an Android in-app browser that wasn't tested during development but manifested in production,…
Read more -
Writing Unit Test Cases with Karma for Angular Components
I'd like to make the case for writing unit tests for your Angular web app. Accelerating time to production is not a valid excuse for accumulating technical debt. Here are some compelling reasons to start:
Read more -
Set Up a Django Server with Apache Virtual Host and Python Virtual Environment
It took me some time to get everything working together, so I'd like to document the steps to save you time in the future.
Read more -
Stop Downloading Apps for Everything
Apps are becoming increasingly irrelevant. There's no need to download ineffective software when browsers can serve as adequate substitutes. The primary benefit of using apps is data gathering and ad serving, which favor tech…
Read more -
Handling Browser Close Events with JavaScript
In certain scenarios, you may not want users to close their browser and exit the session. For instance, if a user is in the middle of filling out a form without saving, or in the midst of a payment transaction that hasn't been…
Read more -
Fix WordPress Plugin Installation Permission Issue
When attempting to install a plugin in WordPress, I encountered the following error:
Read more -
Fix WordPress with All Pages Returning 404 Not Found
I encountered a strange issue with WordPress: while the homepage loaded properly, all the other pages failed to do so. Instead, an error page displayed the message:
Read more -
Registering Sling Servlets in Adobe Experience Manager
In Adobe Experience Manager (AEM), a Sling servlet can be utilized to handle certain RESTful request-response AJAX calls. Written in the Java programming language, these servlets can be registered as OSGi (Open Services Gateway…
Read more -
Debugging PHP Code in the Browser
In JavaScript, you can use console.log('whatever') for troubleshooting directly in your browser. However, when working with PHP, a little trick is required to accomplish the same thing. Here are the steps:
Read more -
Setting Up npm Proxy in a Corporate Network
Working behind a corporate network can be challenging, as many things do not work "out of the box." A simple command like npm install might not function properly. Here's how to work through the proxy:
Read more -
Case Study: Li & Fung Family Business
In this article, we will discuss the lessons that can be learned from the Li & Fung family business. The key to its longevity—over a thousand years—is its ability to continually reinvent itself for survival.
Read more -
Replace Text in XML Files with PowerShell
Yesterday, I was working at a client site that has a Windows server isolated from the external network. Installing any third-party software on the machine is not permitted.
Read more -
A Look into Chile’s Startup Ecosystem
In retrospect, my trip to Chile was fantastic. Although flying for over 30 hours from Hong Kong and dealing with jet lag was challenging, the adventure proved to be worthwhile. I learned a great deal, not just in a formal setting…
Read more -
How to Debug iOS Traffic on an iPhone Device
I'm responsible for production support for an iOS mobile app, and one of the challenges is debugging HTTPS traffic between the iPhone and our server.
Read more -
The Challenge of a Scaled Scrum Team
I was working on a project that utilized the Nexus framework and scaled Scrum. A Nexus serves as a development unit in scaled Scrum, forming a relationship or connection between people. Software development is already a difficult…
Read more -
Pseudo-Scrum - A Hybrid of Waterfall and Agile
I have something to tell you: you're not truly agile. You may have gone through the motions, performing all the scrum rituals like stand-ups, demos, and retrospectives. You may even have all the requisite tools like JIRA, user…
Read more -
Lessons Learned from an IoT Project
Last year, I worked on an Internet of Things (IoT) project focused on a Bluetooth smart gadget. The experience differed significantly from pure software development in several ways:
Read more -
How to Fix iOS 10 Permission Crash Errors
I've been developing an app that requires access to the user's microphone.
Read more -
Apple Push Notification with Java Spring Framework
I'm implementing a Java Spring Framework server that sends Apple Push Notifications to an iPhone using Swift. Here are the things you will need:
Read more -
Submitting a Unity 3D Game to the Mac App Store
After three months of weekend development, our Unity 3D game is ready to be released and deployed to the App Store. However, the process was far from straightforward. I spent an entire night figuring it out. After many trials and…
Read more -
Trivial Facts About JavaScript Date
The integer value representing the month in JavaScript begins with 0 for January and goes up to 11 for December. For example:
Read more -
What I Learned from Building Large-Scale Applications for Overseas Clients
The IT industry in China is rapidly growing. Over the last year in Hong Kong, I've had the privilege of working on an exciting project that has become a significant milestone in my career, offering me the opportunity to learn…
Read more -
How to Use Webpack with React and Bootstrap
Today, I was setting up a project using Webpack, React, and Bootstrap without jQuery. What seemed like a straightforward task ended up taking more time than expected, so I've decided to document the steps below:
Read more -
How to Be a Good Consultant?
I worked as a Software Engineer for a major Australian technology firm. While I am bright, skilled, and dedicated, these qualities alone are not sufficient to make one a successful consultant. Fortunately, after consulting with…
Read more -
Understanding Optionals and Exclamation Marks in Swift
Swift is a strongly-typed language, meaning all variables must have a defined type.
Read more -
Connection between .h and .m files in Objective-C
When you first open an Objective-C project in Xcode, the .h and .m files may look confusing. It's important to understand the simple connections and the hidden code behind the scenes.
Read more -
Install MongoDB on Mac OS X
First, install Homebrew, which is the missing package management tool for OS X:
Read more -
Ember Inject Controller
After updating my Ember project to version 1.13.5, I received the following warning in the browser console:
Read more -
Batch Crop Images using ImageMagick
Today, one of the tasks I performed involved batch cropping numerous pictures. I found ImageMagick to be very useful for scaling and cropping images. Mogrify, a command within the ImageMagick package, enables us to perform…
Read more -
Switching from Sublime Text to Atom
The Atom text editor has just released its 1.0 version. There are plenty of reasons to switch from Sublime Text. Maybe you love the concept of open source, or perhaps you're a member of the GitHub community. While Atom does have…
Read more -
How to Upgrade Your Ghost Blog via Command Line
First, change the directory to the path where your Ghost blog is installed. For example, in my case, it's located at:
Read more -
SSH: How to Fix the 'Unprotected Private Key' Error
When I downloaded the .pem file to SSH into my AWS instance, I encountered the following error:
Read more -
How to Fix Ruby Gems Permission Error on Mac OS X Yosemite
While trying to install a gem on Mac OS X Yosemite, I encountered the following error:
Read more -
Java: Variables are Always Passed by Copy
I am learning Java. One important concept to understand is whether function arguments are passed by copy or by reference.
Read more -
3 Reasons to Love React
Recorded at the Hong Kong JavaScript and Node.js meetup on March 3, 2015:
Read more -
Common npm Permission Issues
If you are using a Mac and have installed Node.js via a pkg file downloaded from the official website, you are likely to encounter the following error message when you try to install an npm module globally:
Read more -
Sublime Text 3: Using the OS X Command Line
Sublime Text 3 includes a command line tool, subl. Unfortunately, this tool doesn't work right out of the box after you've installed the editor on OS X Yosemite.
Read more -
12 Things You Need To Know About ECMAScript 6
ECMAScript 6 is the next version of the JavaScript standard.\
Read more -
My Review of Hack Reactor Remote Beta
I enrolled in the Hack Reactor Remote Beta as part of the second cohort in Hong Kong to improve my technical skills in JavaScript.
Read more -
AngularUI Handling Mouseover Events for Google Maps Markers
It took me a while to figure this out, so I thought the issue deserved its own blog post. I found myself confused when trying to hook up mouseover events with Google Map markers using AngularUI. The documentation was vague on…
Read more -
Hacking New Year's Resolutions for 2015
As the year draws to a close and a new one begins on January 1st, many people set New Year's resolutions. However, 92% of New Year's resolutions ultimately fail. Why is that?
Read more -
Angular.js Factory Handling $http Asynchronously
When I was using the $http service to get data from a remote API, the code snippet below was unable to return data back to the controller.
Read more -
Setting Up a Proxy Server with Express
I am working on a project that uses BreweryDB. While trying to load some data from the API, I encountered a problem: the API doesn't support JSONP. This leads to a CORS issue when I attempt to fetch data directly using Angular:
Read more -
Angular UI Bootstrap Opening the First Accordion with ng-repeat
I was using the accordion directive in Angular UI Bootstrap version 0.1.2. On the demo page, there's an example showing how to open the first accordion group by default:
Read more -
Note on Ionic Framework: Android Platform in OS X
In this blog post, we will walk through several error messages that you might encounter when installing dependencies for the Android platform of the Ionic framework on Mac OS X. Follow this official guide to install Cordova and…
Read more -
How to Upload Files with Meteor.js?
NOTE: This tutorial uses Meteor 1.1.3 with cfs:standard-package 0.0.2 as of December 15, 2014. Since this feature is under active development, it may have changed by the time you read this. Feel free to contact me if you have any…
Read more -
Does Hack Reactor Make You Smarter?
Every morning, I wake up at 12 a.m. My alarm clock helps me start my day with the goal of becoming a software engineer. As a remote student in Hong Kong, I'm 16 hours ahead of San Francisco time. Adapting to this time difference…
Read more -
Testing with Mocha Array Comparison
While writing a Mocha test suite for array comparison, I encountered an issue. Here is the test suite:
Read more -
How to Customize Sublime Text's Default Auto-Complete
I use Sublime Text 3 every day, and I particularly appreciate its JavaScript auto-complete feature.
Read more -
Build an Awesome Chat App in 5 Minutes with Meteor
In this tutorial, I'm going to show you how to write a simple chat application using MeteorJS.
Read more