Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # {dev} It is hard until is done, then, it is easy ## Sitemaps - [XML Sitemap](https://donhk.dev/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [Freeing Disk Space from Docker (Overlay2 Cleanup)](https://donhk.dev/2026/01/freeing-disk-space-from-docker-overlay2-cleanup/) - Docker is great—until your disk mysteriously fills up.In my case, /var/lib/docker had grown to 350+ GB, almost entirely due to the overlay2 storage driver. This post walks through how to safely identify the problem, reclaim the space, and verify Docker is healthy afterward. 1. Identify Where the Space Is Going Start by checking disk usage - [rustup update stuck on macOS](https://donhk.dev/2026/01/rustup-update-stuck-on-macos/) - The update command gets stuck home on  master is 📦 v0.0.1 via 🅶 via ☕ v21.0.6 via 🦀 v1.92.0 took 4m44s ❯ rustup update info: syncing channel updates for 'stable-aarch64-apple-darwin' info: latest update on 2025-12-11, rust version 1.92.0 (ded5c06cf 2025-12-08) info: syncing channel updates for 'nightly-aarch64-apple-darwin' info: latest update on 2026-01-05, rust version 1.94.0-nightly - [How to configure kasm in Oracle cloud](https://donhk.dev/2024/08/how-to-configure-kasm-in-oracle-cloud/) - In this post, we will see what are the steps to install a kasm workspace within a machine in Oracle Cloud to have a free install that we can use to play, the stack is OS Oracle Linux 8 CPU ARM64 16GB RAM 100GB HDD Kasm 1.5 docker + docker-compose iptables cerbot for encryption Creation - [Tenets of a NoSQL Data Modeling](https://donhk.dev/2024/01/tenets-of-a-nosql-data-modeling/) - Understand the use case Nature of the applicationOLTP/OLAP/DSSDefine the entity-relationship ModelIdentify Data Life CycleTTL, Backup/ Archival, etc. Identify the access patterns - [Things every data engineer should know](https://donhk.dev/2024/01/things-every-data-engineer-should-know/) - Don’t Let Consumers Solve Engineering Problems Avoid the temptation of letting data consumers solve data-engineering problems. Many types of data consumers exist, and the core competencies of each individual vary across multiple spectrums—coding skills, statistical knowledge, visualization abilities, and more. In many cases, the more technically capable data consumers will attempt to close infrastructure gaps - [Describing data](https://donhk.dev/2024/01/describing-data/) - TYPES OF VARIABLES discrete variablecontinuous variable Variables may also be classified according to the scale on which they are measured. Scales help us understand the precision of an individual variable and are used to make choices about data visualizations as well as methods of analysis. A nominal scale describes a variable with a limited number - [Creating a Ubuntu 22.04 machine in OCI](https://donhk.dev/2023/10/creating-a-ubuntu-22-04-machine-in-oci/) - Setting up a virtual machine in Oracle Cloud Infrastructure (OCI) with the intent of accessing it from another host might seem straightforward, but there's a critical step that's often overlooked. After creating the VM, it's essential to configure the firewall rules to allow access to the machine via its IP address. Failing to do so - [Install node and npm in ubuntu 22.04 minimal install](https://donhk.dev/2023/10/install-node-and-npm-in-ubuntu-22-04-minimal-install/) - Installing nodejs sudo apt-get install -y ca-certificates curl gnupg sudo mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg then execute this NODE_MAJOR=18 echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list sudo apt-get update sudo apt-get install nodejs -y node -v #v18.18.1 then to install npm if you attempt to - [How to install sqlx-cli in Pop!_OS 22.04](https://donhk.dev/2023/10/how-to-install-sqlx-cli-in-pop_os-22-04/) - How to fix the installation issue on Pop!_OS uname -r 6.5.4-76060504-generic lsb_release -a No LSB modules are available. Distributor ID: Pop Description: Pop!_OS 22.04 LTS Release: 22.04 Codename: jammy code-warp/ch_07 🍣 main 📝 ×6🛤️ ×1🦀 v1.72.1 ➜ cargo install sqlx-cli Updating crates.io index Installing sqlx-cli v0.7.2 Updating crates.io index Compiling proc-macro2 v1.0.69 Compiling unicode-ident v1.0.12 - [How to install Postgres in Pop!_OS 22.04 with docker](https://donhk.dev/2023/10/how-to-install-postgres-in-pop_os-22-04-with-docker/) - Make sure you have docker installed first, then execute docker run -d --rm -P -p 127.0.0.1:5432:5432 -e POSTGRES_PASSWORD="welcome" --name postgres postgres:alpine Then you can validate with ➜ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 300c1f5e5b50 postgres:alpine "docker-entrypoint.s…" 2 hours ago Up 2 hours 127.0.0.1:5432->5432/tcp postgres to connect to the database you can - [How to fix the problem of IntelliJ not able to see terminal commands](https://donhk.dev/2023/09/how-to-fix-the-problem-of-intellij-not-able-to-see-terminal-commands/) - Fixing Intellij not able to see terminal commands due to flatpak install - [Data analytics & data processing](https://donhk.dev/2022/10/data-analytics-data-processing/) - CollectionProcessingStorageUsageControl Data Analytics is an overarching practice that encompasses the complete life cycle of insight generation, from collection to quality and access control Data processing is a component of the data Data Analytics practice. It transforms raw data into valuable insights and information. Apache beam is a programming model to build batch & streaming data - [How to solve 'error: resource mapping not found for name: "kafka-pdb"'](https://donhk.dev/2022/09/how-to-solve-error-resource-mapping-not-found-for-name-kafka-pdb/) - I was following the instruction of Kafka installation of the book Building Big Data Pipelines with Apache Beam but the bellow command failed git:(main) ./env/install-kafka.sh Sending build context to Docker daemon 2.56kB Step 1/7 : FROM openjdk:11 11: Pulling from library/openjdk 001c52e26ad5: Pull complete d9d4b9b6e964: Pull complete 2068746827ec: Pull complete 9daef329d350: Pull complete d85151f15b66: Pull - [Spark 3 with Scala Notes](https://donhk.dev/2022/09/spark-3-with-scala-notes/) - [Domain Driven Design, Discovering Domain Knowledge](https://donhk.dev/2022/08/domain-driven-design-discovering-domain-knowledge/) - In the context of business domains, “problem” has a broader meaning. A business problem can be challenges associated with optimizing workflows and processes, minimizing manual labor, managing resources, supporting decisions, managing data, and so on. Subdomains are finer-grained problem domains whose goal is to provide solutions for specific business capabilities.A book Knowledge Discovery To be effective, - [Domain Driven Design, Business Domains](https://donhk.dev/2022/08/domain-driven-design-business-domains/) - Core subdomains The interesting problems. These are the activities the company is performing differently from its competitors and from which it gains its competitive advantage. Generic subdomains The solved problems. These are the things all companies are doing in the same way. There is no room or need for innovation here; rather than creating in-house - [Data pipelines notes](https://donhk.dev/2022/08/data-pipelines-notes/) - EtLT Some examples of the type of transformation that fits into the EtLT subpattern include the following: Deduplicate records in a tableParse URL parameters into individual componentsMask or otherwise obfuscate sensitive data These types of transforms are either fully disconnected from business logic or, in the case of something like masking sensitive data, at times - [SRE & toil reduction Notes](https://donhk.dev/2022/07/sre-toil-reduction-notes/) - If you do manage to create an experience that is 100% reliable for your customers and you want to maintain that level of reliability, you can never update or improve your service. The number one source of outages is change: pushing new features, applying security patches, deploying new hardware, and scaling up to meet customer demand - [Facebook: Scuba](https://donhk.dev/2022/07/facebook-scuba/) - Origins Originally, we relied on pre-aggregated graphs and a carefully managed, hand-coded, set of scripts over a MySQL database of performance data. We now use Scuba for most real-time, ad-hoc analysis of arbitrary data. Scuba runs on hundreds of servers each with 144 GB RAM in a shared-nothing cluster. It stores around 70 TB of - [System observability and monitoring](https://donhk.dev/2022/07/system-observability-and-monitoring/) - Scuba Not all the applications need joins Deep systems Systems must provide SLO (Service Level Objectives) to define OKRs (you can measure and improve them)Telemetry & Control goes together Systems are designed to scale only up to 3 orders of magnitude Systems tend to become deep over time Observability is important (How well can you - [Building a data platform](https://donhk.dev/2022/07/building-a-data-platform/) - While companies large and small have made considerable gains in building scalable and sustainable architecture, we’re left with the uncomfortable questions: is what we’re doing genuinely providing value? Do we really know who our users are and understand their needs? If so, can they generate insights in a fast and reliable way? As long as - [Kafka & Kafka Streams](https://donhk.dev/2022/07/kafka-kafka-streams/) - Kafka Streams operates at an exciting layer of the Kafka ecosystem: the place where data from many sources converges. This is the layer where sophisticated data enrichment, transformation, and processing can happen. It’s the same place where, in a pre–Kafka Streams world, we would have tediously written our own stream processing abstractions (using the Consumer/Producer - [My experience moving abroad (from Mexico to the USA), things I wish I had known before (2022)](https://donhk.dev/2022/07/my-experience-moving-abroad-from-mexico-to-the-usa-things-i-wish-i-had-known-before-2022/) - Ok, this is going to be a post to summarize some of the things I would like to have known before actually moving out of my country. The process of moving abroad due to work is always challenging for multiple reasons and every person can go through different steps for different circumstances, for me the - [My WordPress Install was broken for over a week :s](https://donhk.dev/2022/06/my-wordpress-install-was-broken-for-over-a-week-s/) - How to fix a problem renewing certificates with cerbot-auto and nginx - [How to install libxss.so.1 on Centos7](https://donhk.dev/2021/01/how-to-install-libxss-so-1-on-centos7/) - This comes from https://centos.pkgs.org/7/centos-x86_64/libXScrnSaver-1.2.2-6.1.el7.x86_64.rpm.html sudo yum install -y libXScrnSaver If you have problems using Jetbrains MD files this will do it - [How to zip directory contents without parent dir and including hidden files](https://donhk.dev/2022/01/how-to-zip-directory-contents-without-parent-dir-and-including-hidden-files/) - cd /scratch/directory/whose/content/want/to/zip zip -r -q /temp/myfile.zip * .* -x "../*" - [How to configure a development box based on Linux](https://donhk.dev/2022/01/how-to-configure-a-development-box-based-on-linux/) - Download and Install https://yum.oracle.com/oracle-linux-isos.html Machine: 500GB HD, 4 CPUs, Network: Auto Partitions /boot 3G /scratch 20G / 477G (as LVM ext4) Server with GUI First, install Epel Repo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm Then install the relevant software systemctl stop firewalld systemctl disable firewalld yum update -y yum install -y htop openbox tint2 iotop tigervnc-server terminator emacs - [Forward a Window from a remote machine](https://donhk.dev/2022/01/forward-a-window-from-a-remote-machine/) - sudo vim /etc/ssh/sshd_config X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes then from the client side ssh -Y user@host - [Running datapatch on 18c on a freshly created database fails](https://donhk.dev/2022/01/running-datapatch-on-18c-on-a-freshly-created-database-fails/) - Symptoms, Creating a database with a gold image of 18c patched with 18.16.0.0.211019 (33339024) Oct-2021 will create a CDB where you need to run datapatch. When you run it fails complaining about a prereq failed [oracle@devbox7 ~]$ export PATH=$ORACLE_HOME/OPatch:$PATH [oracle@devbox7 ~]$ cd $ORACLE_HOME/OPatch [oracle@devbox7 OPatch]$ ./datapatch -verbose SQL Patching tool version 18.0.0.0.0 Production on Thu - [Install Oracle 19c on OEL8.5](https://donhk.dev/2022/01/install-oracle-19c-on-oel8-5/) - wget https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm dnf install oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm [root@linuxbox ~]# dnf install https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm Last metadata expiration check: 0:47:44 ago on Mon 17 Jan 2022 12:53:57 PM CST. oracle-database-preinstall-19c-1.0-2.el8.x86_64.rpm 53 kB/s | 31 kB 00:00 Dependencies resolved. =============================================================================================================================================================== Package Architecture Version Repository Size =============================================================================================================================================================== Installing: oracle-database-preinstall-19c x86_64 1.0-2.el8 @commandline 31 k Installing dependencies: ksh x86_64 20120801-254.0.1.el8 ol8_appstream 927 k - [How to restore an Oracle database from a cold backup?](https://donhk.dev/2019/02/how-to-restore-an-oracle-database-from-a-cold-backup/) - The below procedure describes how to restore a database Oracle 11204 EBS from a cold backup. The database I will restore comes from a backup that a colleague in charged of the material used in the certifications uses, it took it from a production EBS installation and share it with me, it is a 260GB - [Install epel repo OEL7 Centos7](https://donhk.dev/2022/01/install-epel-repo-oel7-centos7/) - Install epel-repository on Oracle Linux 7.9/Centos 7.x rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm - [Using Java with async code calls](https://donhk.dev/2021/12/using-java-with-async-code-calls/) - private void runAndWait(){ final List futures = new ArraysList(); for(int i=1; imagic(i))); } CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join(); } private void magic(int i){ try{ TimeUnit.SECONDS.sleep(i*10); System.out.println(i +" is done"); }catch(Exception e){} } Execute async call to a magic function and then wait for them to finish - [How to free FRA space in Oracle 19c](https://donhk.dev/2021/05/how-to-free-fra-space-in-oracle-19c/) - In order to free all the space used by the database due to the archive mode and or flashback points run the following. . oraenv cdb10x rman target cdb10x crosscheck backup; crosscheck copy; crosscheck archivelog all; delete NOPROMPT obsolete; delete NOPROMPT archivelog all; - [How to move a spfile from ASM to filesystem](https://donhk.dev/2021/06/how-to-move-a-spfile-from-asm-to-filesystem/) - First create copy the spfile from ASM to filesystem ASMCMD> cd DATA/KAKAROTO/PARAMETERFILE ASMCMD> ls spfile.286.1075371377 ASMCMD> cp spfile.286.1075371377 /databases/ee/product/18x/dbhome_1/dbs/spfilekakaroto.ora Update the spfile location in the server config, before [oracle@node1 dbs]$ srvctl config database -d kakaroto Database unique name: kakaroto Database name: kakaroto Oracle home: /databases/ee/product/18x/dbhome_1 Oracle user: oracle Spfile: +DATA/KAKAROTO/PARAMETERFILE/spfile.286.1075371377 - [Oracle queries to find invalid components and objects](https://donhk.dev/2021/05/oracle-queries-to-find-invalid-components-and-objects/) - -- invalid components after the upgrade set line 180 set pagesize 50 COL COMP_ID for a10 COL COMP_NAME for a40 COL VERSION for a20 COL VERSION_FULL for a20 COL STATUS for a15 COL SCHEMA for a15 SELECT COMP_ID, COMP_NAME,VERSION,STATUS,SCHEMA,VERSION_FULL FROM SYS.DBA_REGISTRY WHERE STATUS = 'INVALID'; -- invalid objects after the upgrade set line 180 set - [Oracle Useful Queries](https://donhk.dev/2021/05/oracle-useful-queries/) - -- Plugin Violations set lin 180 column message format a50 column name format a20 column status format a9 column type format a9 column con_id format 9 select p.con_id,c.name, p.type, p.message, p.status from PDB_PLUG_IN_VIOLATIONS p,v$containers c where status'RESOLVED' and p.con_id=c.con_id order by time; -- running sqls in Oracle SET LIN 20000 select x.sid ,x.serial# ,x.username ,x.sql_id - [Never forget this](https://donhk.dev/2021/04/never-forget-this/) - [How to fix connectivity issue CentOS7](https://donhk.dev/2021/02/how-to-fix-connectivity-issue-centos7/) - Symthoms When you use curl, wget, yum timeout but the internet connection works well when you use a web browser Cause IPV6 is causing confusion on the network configuration routes Fix Disable SELinux (Optional but this generally fixes some app issues) #/etc/sysconfig/selinux # SELINUX= can take one of these three values: # enforcing - SELinux - [How to install VirtualBox Guest additions on Centos7.x](https://donhk.dev/2021/04/how-to-install-virtualbox-guest-additions-on-centos7-x/) - As root execute the following code yum install -y make gcc kernel-headers kernel-devel perl dkms bzip2 yum update kernel kernel-headers reboot now export KERN_DIR=/usr/src/kernels/$(uname -r) mount -r /dev/cdrom /media cd /media/ ./VBoxLinuxAdditions.run - [Jenkins not working but the process is running](https://donhk.dev/2021/03/jenkins-not-working-but-the-process-is-running/) - The service appears to be up but when you attempt to login you get Check out the log files /var/log/jenkins/jenkins.log 2021-03-24 16:18:04.617+0000 [id=1] SEVERE winstone.Logger#logInternal: Container startup failed java.io.FileNotFoundException: /var/cache/jenkins/war/META-INF/MANIFEST.MF (No such file or directory) at java.io.FileOutputStream.open0(Native Method) at java.io.FileOutputStream.open(FileOutputStream.java:270) at java.io.FileOutputStream.(FileOutputStream.java:213) at java.io.FileOutputStream.(FileOutputStream.java:162) at winstone.HostConfiguration.getWebRoot(HostConfiguration.java:278) at winstone.HostConfiguration.(HostConfiguration.java:81) at winstone.HostGroup.initHost(HostGroup.java:66) at winstone.HostGroup.(HostGroup.java:45) at winstone.Launcher.(Launcher.java:172) at - [Blockchain Basics & Cryptography](https://donhk.dev/2021/03/blockchain-basics-cryptography/) - Bitcoin - Technical Features Cryptographic Hash FunctionTimestamped Append-only Logs (Blocks)Block Header & Merkle TreeAsymmetric Cryptography & Digital SignaturesAddresses Consensus through Proof of WorkNetwork of NodesNative Currency 20M bitcoins max (2024 max limit reached) 3 important key points CryptographyConsensus mechanismTransactions - [Money, Ledgers, & Bitcoin](https://donhk.dev/2021/03/money-ledgers-bitcoin/) - Fiat Currency Social & Economic Consensus.Represented by Central Bank Liabilities & Commercial Bank Deposits.Relies upon System of Ledgers Integrated into a Fractional Banking System.Accepted for Taxes.Notes & Coins are legal tenders for all debts public & private.Unique tax treatment The Role of Money Medium of exchangeStore of ValueUnit of Account Characteristics of money DurablePortableDivisibleUniform/Fungible Why - [Difference between functional and non-functional requirements in software](https://donhk.dev/2021/03/difference-between-functional-and-non-functional-requirements-in-software/) - Functional Requirements Functional requirements capture the intended behavior of the system. This behavior may be expressed asservices, tasks, or functions the system is required to perform. Non-Functional Requirements A non-functional requirement is a specification that describes the system’s operational capabilities and constraints that enhance its functionality. These may be speed, security, reliability, extensibility, flexibility, etc. - [Layered Architectural Design Patterns](https://donhk.dev/2021/03/layered-architectural-design-patterns/) - Layered patterns which focus on separating designs into distinct areas of concern to group classes and components toghether. There are specific rules to which we should stick to when working with Layers. A Layer is only allow to communicate with layers immediately above or below.All the layers should follow the same architecture design, different design patterns - [UML Diagrams in Architectures](https://donhk.dev/2021/03/uml-diagrams-in-architectures/) - [Hybrid Architecture Design Patterns](https://donhk.dev/2021/03/hybrid-architecture-design-patterns/) - Patterns can be combined to mitigate their weak points and add more capabilities. Components In Layers Layers containing componentsBenefits of components...Plus: structured communication, isolation, easy scaling & testing MVC in Presentation Layer Presentation layer with MVCBenefits of layers...Plus: separation of concerns, presentation code scalability. Objects in components Pretty common in OOO - [Service Architecture Design Patterns](https://donhk.dev/2021/03/service-architecture-design-patterns/) - These pattern are useful when you are creating an API that will be called by 3rd party services or another software system. These services are called from public networks. Service-Oriented Pattern (SOP) - [Presentation Architecture Design Patterns](https://donhk.dev/2021/03/presentation-architecture-design-patterns/) - These patterns are useful when you are creating the presentation layer. MVC - [Structural Architecture Design Patterns](https://donhk.dev/2021/03/structural-architecture-design-patterns/) - These are pattern that define the structure of the architecture, like lego blocks, these patterns help you to see how each part of the system fits with the others. Component-Based Patterns - [How to install Oracle ROOH 18 and 19 on ACFS cluster](https://donhk.dev/2021/03/how-to-install-oracle-rooh-18-and-19-on-acfs-cluster/) - Configure ACFS partition and mount itUnzip Oracle HomePerform Database install (Software Only) $ORACLE_HOME/bin/roohctl -enable [oracle@node1 bin]$ ./roohctl -enable Enabling Read-Only Oracle home. Update orabasetab file to enable Read-Only Oracle home. Orabasetab file has been updated successfully. Create bootstrap directories for Read-Only Oracle home. Bootstrap directories have been created successfully. Bootstrap files have been processed successfully. - [How to change the spfile location of a RAC database](https://donhk.dev/2021/03/how-to-change-the-spfile-location-of-a-rac-database/) - Check where the current location is srvctl config database -d q18b [oracle@node1 ~]$ srvctl config database -d q18b Database unique name: q18b Database name: q18b Oracle home: /u01/app/fs/orabase/product/v18/dbhome_1 Oracle user: oracle Spfile: /u01/app/fs/oradata/Q18B/spfileq18b.ora Password file: /u01/app/fs/oradata/Q18B/orapwq18b Domain: Start options: open Stop options: immediate Database role: PRIMARY Management policy: AUTOMATIC Server pools: Disk Groups: DATA Mount - [Creating RAC Database on ACFS using Oracle GI 19c setup on OEL 7.8](https://donhk.dev/2021/03/creating-rac-database-on-acfs-using-oracle-gi-19c-setup-on-oel-7-8/) - Before following this steps make sure you patched the installer of the bugs will come after you. SCAN Cluster Name: ol7-183-cluster SCAN Name: ol7-183-scan.localdomain SCAN Port: 1521 Nodes Setup Network Interface Usage Storage GIMR ASM Disk Group ASM Password OS Groups Install Location Root script execution Prerequisite Checks Then you can enable the RAC option - [How to patch an Oracle GI Home 19c before install](https://donhk.dev/2021/03/how-to-patch-an-oracle-gi-home-19c-before-install/) - Download the GI installer Oracle GI 19cDownload the RU p31305339_190000_Linux-x86-64.zipDownload the OPatch p6880880_190000_Linux-x86-64.zip Replace the OPatch from the GI home with the latest version unzip -q ~/opatch0p6880880_190000_Linux-x86-64.zip -d $GI_HOME Apply RU unzip -q ~/p31305339_190000_Linux-x86-64.zip ./gridSetup.sh -silent -applyRU /home/oracle/31305339 [oracle@node1 grid]$ ./gridSetup.sh -silent -applyRU /home/oracle/31305339 Preparing the home to patch... Applying the patch /home/oracle/31305339... Successfully applied - [Simple App using Laravel 7](https://donhk.dev/2021/02/simple-app-using-laravel-7/) - Setup composer create-project --prefer-dist laravel/laravel supertodolist "7.*" Test everything works php artisan serve --host=0.0.0.0 composer require laravel/ui "^2.0" php artisan ui bootstrap php artisan ui:auth npm install npm run dev Blade php artisan route:list Configurations .env datatabase.php Upload Image @csrf Route::post('/upload', 'HomeController@upload')->name('uploadPic'); public function - [How to enable RAC mode of a previously installed ORACLE_HOME](https://donhk.dev/2021/02/how-to-enable-rac-mode-of-a-previously-installed-oracle_home/) - You installed Oracle, then you added your machine into a cluster and now you want your Oracle home to be able to create RAC databases. - [How to configure ACFS File System in RAC using GI 19c](https://donhk.dev/2020/11/how-to-configure-acfs-file-system-in-rac-using-gi-19c/) - How to configure ACFS File System in RAC using GI 19c - [Install Laravel Valet on CentOS7](https://donhk.dev/2021/02/install-laravel-valet-on-centos7/) - valet install with composer sudo yum install -y jq xsel composer global require cpriego/valet-linux echo 'export PATH=$HOME/.config/composer/vendor/bin:$PATH' >> ~/.bashrc source ~/.bashrc valet -V Run the valet install command. This will configure and install Valet and DnsMasq, and register Valet’s daemon to launch when your system starts. Once Valet is installed, try pinging any *.test domain on your terminal using - [Laravel 7 Deployment on Centos7 OCI machine using nginx with free SSL](https://donhk.dev/2020/09/laravel-7-deployment-on-centos7-oci-machine-using-nginx-with-free-ssl/) - I recently got a chance to do a small work on a friend's project and will summarize the secret steps to have a production deployment on Oracle Cloud of a Laravel project on Centos 7 updated 2020. The project is split into the bellow steps: Environment ProvisioningOCI ConfigurationNetwork SetupMachine creationDomain acquisitionPackages installationPHP InstallationComposer InstallationGITDatabase configurationProject - [How to automate cerbot auto renewal for certificates on OEL7](https://donhk.dev/2021/01/how-to-automate-cerbot-auto-renewal-for-certificates-on-oel7/) - Automating certificates renewal using snapd-cerbot instead of the old cerbot-auto which is getting deprecated. First Step Installing snapd on OEL7 or CentOS7 sudo yum install snapd Once installed, the systemd unit that manages the main snap communication socket needs to be enabled: sudo systemctl enable --now snapd.socket sudo systemctl start snapd sudo systemctl status snapd sudo ln - [How to renew lets-encrypt certbot certificate](https://donhk.dev/2020/12/how-to-renew-lets-encrypt-certbot-certificate/) - As root cd ~/certbot python tools/venv3.py source venv3/bin/activate Then ./certbot-auto renew - [How to fix install Oracle 11.2.0.4 on CentOS7/Oracle Linux 7 Kernel 4.14.35-1902.11.3.el7uek.x86_64](https://donhk.dev/2020/10/how-to-fix-install-oracle-11-2-0-4-on-centos7-oracle-linux-7-kernel-4-14-35-1902-11-3-el7uek-x86_64/) - How to fix Error in invoking target 'agent nmhs' of makefile during 11204 install - [Fixing "[DBT-30130] The selected volume is not enabled in nodes" Grid Infrastructure/ACFS 19c](https://donhk.dev/2020/10/fixing-dbt-30130-the-selected-volume-is-not-enabled-in-nodes-grid-infrastructure-acfs-19c/) - Fixing "[DBT-30130] The selected volume is not enabled in nodes" Grid Infrastructure/ACFS 19c - [Solving problem "The bootstrap execution failed because Cannot detect any valid Grid Infrastructure setup" during GI 19c patch installation](https://donhk.dev/2020/10/execution-failed-cannot-detect-any-valid-grid-infrastructure-setup-gi-19c/) - Solving problem "The bootstrap execution failed because Cannot detect any valid Grid Infrastructure setup" during GI 19c patch installation - [How to use cerbot on CentOS7](https://donhk.dev/2020/10/how-to-use-cerbot-on-centos7/) - How to use cerbot quick and dirty - [Fixing Intellij GUI fonts on update 2020.2 on CentOS 7](https://donhk.dev/2020/07/fixing-intellij-gui-fonts-on-update-2020-2-on-centos-7/) - Fixing Intellij GUI fonts on update 2020.2 on CentOS 7 - [Configuring a LAMP site on Oracle Cloud and Google G Suite for DNS resolution with SSL](https://donhk.dev/2020/08/configuring-a-lamp-site-on-oracle-cloud-and-google-g-suit-for-dns-resolution-with-ssl/) - Google DNS + Oracle Cloud setup for a LAMP setup with SSL - [Creating a video storage system [part1]](https://donhk.dev/2019/12/creating-video-storage-system-part1/) - [How to get rid of "Your phone" app In Windows 10](https://donhk.dev/2020/09/how-to-get-rid-of-your-phone-app-in-windows-10/) - Recently I got a forced update from Windows and it came with a new adware app called "Your Phone" which basically allows you to manage your phone from your desktop if you don't like it just open an power shell terminal as administrator and run Get-AppxPackage *Microsoft.YourPhone* -AllUsers | Remove-AppxPackage That's it - [VirtualBox's Java SDK overview](https://donhk.dev/2018/04/virtualboxs-java-sdk-overview/) - All what you always wanted to know about manipulating virtual machines using Java - [Fixing Kernel Panic in Solaris 11.4](https://donhk.dev/2019/06/fixing-kernel-panic-in-solaris-11-4/) - The problem The below issues happened on Solaris 11.4 virtualized on VirtualBox 6 using a x86 CPU due to adding some packages to the kernel after install Oracle database and also has been seen after the installation of GUI component of it, the symptoms are intermittent system reboots or kernel panics Tracing down the problem - [Disable memory compression in Windows 10](https://donhk.dev/2019/08/disable-memory-compression-in-windows-10/) - How to disable memory compression on Windows 10 - [How to install Oracle Solaris 11.4 within VirtualBox 6.0.2 and install Oracle Database](https://donhk.dev/2019/01/how-to-install-oracle-solaris-11-4-within-virtualbox-6-0-2-and-install-oracle-database/) - The below tutorial was performed on a machine running OEL7.4 using an Intel processor x86-64 The first step is to create the VM virtual hardware Now we will proceed to download the OS installer, for that, we will go to this place: https://www.oracle.com/technetwork/server-storage/solaris11/downloads/install-2245079.html Then we need to configure the VM media to boot with the - [Configuring MySQL 8 instance on CentOS 7 in OCI](https://donhk.dev/2020/09/configuring-mysql-8-instance-on-centos-7-in-oci/) - As root, execute the below commands to have a MySQL 8 instance running rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/mysql-community.repo yum --enablerepo=mysql80-community install -y mysql-community-server systemctl start mysqld grep "A temporary password" /var/log/mysqld.log Secure Installation mysql_secure_installation Connect to the database mysql -u root -p Create database and user CREATE DATABASE mydb; create user 'ouser'@'%' identified - [Fixing kernel: NMI watchdog: BUG: soft lockup and server provisioning.](https://donhk.dev/2020/05/fixing-kernel-nmi-watchdog-bug-soft-lockup-and-server-provisioning/) - Provisioning testing server. - [Creating SSH Public and Private Key on Windows no Putty](https://donhk.dev/2019/11/creating-ssh-public-and-private-key-on-windows-no-putty/) - Although I have been a Putty user and I like and don't like the way you create the public and private keys with it, it is always a pain, fortunately, now we have an easy way doing so on Windows (which now is as easy as it is on most Linux distros) To start download - [Set up a media server in 30 min](https://donhk.dev/2019/11/set-up-a-media-server-in-30-min/) - The following is the improved version of a previous post where I showed how to do the same but using a paid VPS and a Raspberry Pi with a VPS. This time we will use Oracle Cloud Infrastructure (free tier) and that's it, so, let move. - [Invalid JAVAVM after patch on Oracle ROOH 18.8 (Windows)](https://donhk.dev/2019/12/invalid-javavm-after-patch-on-oracle-rooh-18-8-windows/) - Fixing invalid JAVAVM Invalid after apply patch 28267731 on WIndows - [Creating video storage system [part2]](https://donhk.dev/2019/12/creating-video-storage-system-part2/) - Production system provisioning for the video system - [Creating video storage system [part3]](https://donhk.dev/2020/01/creating-video-storage-system-part3/) - The third part of the tutorial of how to create a custom video storage system to save the video of an IP camera on the cloud for free (and finally some code). - [Configuring OpenVPN client on Windows 10](https://donhk.dev/2020/01/configuring-openvpn-client-on-windows-10/) - Once you have setup your OpenVPN sever, you need to create the certificates for the machine in the server and the download them onto the client. Download the OpenVPN client from https://openvpn.net/community-downloads/ ca.crtdevvpn.tlsauthwdesktop.crtwdesktop.csrwdesktop.key then go to the installation folder C:\Program Files\OpenVPN\config and create a file client.ovpn with the below content client tls-client remote-cert-tls server ca - [How to manage passwords in Java if you want to be hacked.](https://donhk.dev/2020/06/how-to-manage-passwords-in-java-if-you-want-to-be-hacked/) - Learning to audit the memory of a Java program - [How to attack a Java application through serialization.](https://donhk.dev/2020/06/how-to-attack-a-java-application-through-serialization/) - How to attack a Java application through serialization. - [App Performance monitoring tools in Linux (for humans)](https://donhk.dev/2020/06/app-performance-monitoring-tools-in-linux-for-humans/) - Tools to profile a software and detect system bottlenecks in POSIX systems - [Java variable sizes](https://donhk.dev/2020/08/java-variable-sizes/) - shallow, retained, and deep object sizes in Java - [Installing kernel 4.4 on CentOS 6.7](https://donhk.dev/2019/05/installing-kernel-4-4-on-centos-6-7/) - wget https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm --import RPM-GPG-KEY-elrepo.org wget http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm rpm -Uvh elrepo-release-6-8.el6.elrepo.noarch.rpm yum install yum-plugin-fastestmirror sudo yum --enablerepo=elrepo-kernel install kernel-lt cat /boot/grub/grub.conf grep title /boot/grub/grub.conf # uname -a Linux localhost.localdomain 3.8.13-98.1.2.el6uek.x86_64 #2 SMP Thu Aug 13 12:24:05 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux $ uname -a Linux localhost.localdomain 4.4.179-1.el6.elrepo.x86_64 #1 SMP Sat Apr 27 08:49:05 EDT 2019 - [Pure Java minimal http server](https://donhk.dev/2018/04/pure-java-minimal-http-server/) - Creating a custom http server with java in less than 50 lines to serve json,xml and html without external jars - [Creating a free SSL certificate with letsencrypt for your website manually](https://donhk.dev/2018/04/creating-a-free-ssl-certificate-with-letsencrypt-for-your-website-manually/) - how to manually create an SSL certificate and install it on your website using cPanel - [fixing the issue of ssh not working after vpn is enabled](https://donhk.dev/2018/04/fixing-the-issue-of-ssh-not-working-after-vpn-is-enabled/) - How to fix connection issues after enabling VPN on a Linux machine - [Creating a custom h2 database server](https://donhk.dev/2018/04/creating-a-custom-database-server/) - Example about how to create a custom h2db server with custom user and password in server mode - [CentOS7 connectivity error](https://donhk.dev/2018/04/centos7-connectivity-error/) - Behavior slow wireless connection Fix Review the network adapter with lspci ... 02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188EE Wireless Network Adapter (rev 01) then, compile and install the driver manually sudo apt-get install build-essential linux-headers-generic git dkms git clone http://github.com/lwfinger/rtlwifi_new.git cd /path/to/rtlwifi_new make sudo modprobe -rv rtl8188ee sudo make install sudo modprobe -v - [How to use OpenVPN on your phone](https://donhk.dev/2018/04/how-to-use-openvpn-on-your-phone/) - If you use Android, you can download the official OpenVPN client to your phone, you need the server certificates plus your device credentials and write them out into a .ovpn file ca.crt # server certificate myphone.crt # client certificate myphone.key # client key myvpn.tlsauth # server auth file and create one client.ovpn as below client - [Set up a media server on a Raspberry Pi and access it from anywhere](https://donhk.dev/2018/04/custom-plex-setup/) - A cool way to spend a weekend setting up you own media server - [PLEX server on Raspberry PI](https://donhk.dev/2018/03/plex-server-on-raspberry-pi/) - Plex is a media server that can be used to share your media on your home devices or chrome cast sudo apt-get update sudo apt-get upgrade sudo apt-get install apt-transport-https wget -O - https://dev2day.de/pms/dev2day-pms.gpg.key | sudo apt-key add - echo "deb https://dev2day.de/pms/ jessie main" | sudo tee /etc/apt/sources.list.d/pms.list sudo apt-get update sudo apt-get install -t - [Quick tips](https://donhk.dev/2018/03/quick-tips/) - CentOS7 change hostname hostnamectl status [donhk@localhost ~]$ hostnamectl status Static hostname: localhost.localdomain Icon name: computer-laptop Chassis: laptop Machine ID: b6f94b45aa6c4b0d85f94c7b24db1b4c Boot ID: 57fce336491f4da9ad1db3831846a0e3 Operating System: Oracle Linux Server 7.4 CPE OS Name: cpe:/o:oracle:linux:7:4:server Kernel: Linux 4.1.12-112.16.4.el7uek.x86_64 Architecture: x86-64 [donhk@localhost ~]$ sudo hostnamectl set-hostname server [donhk@localhost ~]$ hostnamectl status Static hostname: server Icon name: computer-laptop Chassis: - [RMI from remote client](https://donhk.dev/2018/03/rmi-from-remote-client/) - When working in distributed environments sometimes is useful to encapsulate certain operations, for example, the following scenario you are on host1 and you need to automate a process on the hostx, this process is about creating and configuring a given set of heavy tasks which imply the use of processes and threads and some network - [affordable vps?](https://donhk.dev/2018/03/affordable-vps/) - When I was in college I always wanted to have my own VPS to play around with it but when I searched for a host on the internet only found options over 10 USD which was a lot to me at that time (even now I think is expensive) then I bump into servercheap.net which offers some very good - [Connect to virtualbox guest machine from LAN machine?](https://donhk.dev/2018/03/connect-to-virtualbox-guest-machine-from-lan-machine/) - Let's discuss the following scenario you are on a network (corporative or just your house's LAN) and there is a machine (host) that has a virtual machine (guest) that you want to reach from another machine on the network (client) all the machines are running CentOS 6.7 the guest has the network configured as NAT ## Pages - [about me](https://donhk.dev/about-me/) - I'm a Senior Software Engineer at LinkedIn and a former Software Architect at Oracle. I was an architect of the Oracle AutoUpgrade and also a founding member of the Mexican division of Oracle's Database Upgrade Team. I specialize in Highly Scalable, Critical, and Distributed Software, I have a major in Computer Science with a focus - [Books/Courses](https://donhk.dev/books-courses/) - Read/Seen Microservices Patterns Video Edition By Chris RichardsonAdvanced Laravel and Vue.js: Build a YouTube Clone By Kati FrantzFundamentals of Software Architecture By Mark Richards, Neal FordLearning Elasticsearch 6 By Ethan AnthonyLearning Swing GUI Programming By Brian ColeJavaFX Programming, Part I By Paul AndersonJava Performance, 2nd Edition By Scott OaksDistributed Systems & Cloud Computing with Java - [Home](https://donhk.dev/home/) ## Legal Pages - [Privacy Policy](https://donhk.dev/wpautoterms/privacy-policy/) - Last updated: ("us", "we", or "our") operates the website (the "Service"). This page informs you of our policies regarding the collection, use and disclosure of Personal Information when you use our Service. We will not use or share your information with anyone except as described in this Privacy Policy. We use your Personal Information for ## Feeds - [My Feed](https://donhk.dev/fts/my-feed/) ## Categories - [Uncategorized](https://donhk.dev/category/uncategorized/) - [dev-adventure](https://donhk.dev/category/dev-adventure/) - [java](https://donhk.dev/category/java/) - [mysql](https://donhk.dev/category/mysql/) - [recommendation](https://donhk.dev/category/recommendation/) - [trick](https://donhk.dev/category/trick/) - [laravel](https://donhk.dev/category/laravel/) - [OCI](https://donhk.dev/category/oci/) - [nginx](https://donhk.dev/category/nginx/) - [solaris](https://donhk.dev/category/solaris/) - [virtualbox](https://donhk.dev/category/virtualbox/) - [fix](https://donhk.dev/category/fix/) - [oracle](https://donhk.dev/category/oracle/) - [software](https://donhk.dev/category/software/) - [economy](https://donhk.dev/category/economy/) - [blockchain](https://donhk.dev/category/blockchain/) - [living-experiences](https://donhk.dev/category/living-experiences/) - [data-engineering](https://donhk.dev/category/data-engineering/) - [systems-design](https://donhk.dev/category/systems-design/) - [toil-reduction](https://donhk.dev/category/toil-reduction/) - [domain-driven-design](https://donhk.dev/category/domain-driven-design/) - [popos](https://donhk.dev/category/popos/) - [install](https://donhk.dev/category/install/) - [kasm](https://donhk.dev/category/kasm/) - [rust](https://donhk.dev/category/rust/) ## Tags - [2020.2](https://donhk.dev/tag/2020-2/) - [adventure](https://donhk.dev/tag/adventure/) - [camera](https://donhk.dev/tag/camera/) - [centos7](https://donhk.dev/tag/centos7/) - [client](https://donhk.dev/tag/client/) - [cloud](https://donhk.dev/tag/cloud/) - [cpu](https://donhk.dev/tag/cpu/) - [database](https://donhk.dev/tag/database/) - [datapatch](https://donhk.dev/tag/datapatch/) - [Debian10](https://donhk.dev/tag/debian10/) - [deployment](https://donhk.dev/tag/deployment/) - [dev](https://donhk.dev/tag/dev/) - [distributed](https://donhk.dev/tag/distributed/) - [DNS](https://donhk.dev/tag/dns/) - [DoS](https://donhk.dev/tag/dos/) - [driver](https://donhk.dev/tag/driver/) - [dvr](https://donhk.dev/tag/dvr/) - [ebs](https://donhk.dev/tag/ebs/) - [fix](https://donhk.dev/tag/fix/) - [free](https://donhk.dev/tag/free/) - [Gsuit](https://donhk.dev/tag/gsuit/) - [h2db](https://donhk.dev/tag/h2db/) - [hacking](https://donhk.dev/tag/hacking/) - [install](https://donhk.dev/tag/install/) - [intellij](https://donhk.dev/tag/intellij/) - [invalid](https://donhk.dev/tag/invalid/) - [ip](https://donhk.dev/tag/ip/) - [issue](https://donhk.dev/tag/issue/) - [java](https://donhk.dev/tag/java/) - [javavm](https://donhk.dev/tag/javavm/) - [jvm](https://donhk.dev/tag/jvm/) - [kernel](https://donhk.dev/tag/kernel/) - [laravel7](https://donhk.dev/tag/laravel7/) - [letsencrypt](https://donhk.dev/tag/letsencrypt/) - [linux](https://donhk.dev/tag/linux/) - [media](https://donhk.dev/tag/media/) - [media-server](https://donhk.dev/tag/media-server/) - [memory](https://donhk.dev/tag/memory/) - [networking](https://donhk.dev/tag/networking/) - [nginx](https://donhk.dev/tag/nginx/) - [node](https://donhk.dev/tag/node/) - [oci](https://donhk.dev/tag/oci/) - [oel67](https://donhk.dev/tag/oel67/) - [onvif](https://donhk.dev/tag/onvif/) - [openvpn](https://donhk.dev/tag/openvpn/) - [oracle](https://donhk.dev/tag/oracle/) - [oracle12cR2](https://donhk.dev/tag/oracle12cr2/) - [oracle18c](https://donhk.dev/tag/oracle18c/) - [performance](https://donhk.dev/tag/performance/) - [php73](https://donhk.dev/tag/php73/) - [plex](https://donhk.dev/tag/plex/) - [portable](https://donhk.dev/tag/portable/) - [portforward](https://donhk.dev/tag/portforward/) - [posix](https://donhk.dev/tag/posix/) - [profiling](https://donhk.dev/tag/profiling/) - [programming](https://donhk.dev/tag/programming/) - [raspberry pi](https://donhk.dev/tag/raspberry-pi/) - [rdbms](https://donhk.dev/tag/rdbms/) - [render](https://donhk.dev/tag/render/) - [restore](https://donhk.dev/tag/restore/) - [sdk](https://donhk.dev/tag/sdk/) - [selfsigned](https://donhk.dev/tag/selfsigned/) - [server](https://donhk.dev/tag/server/) - [solaris](https://donhk.dev/tag/solaris/) - [solaris11.4](https://donhk.dev/tag/solaris11-4/) - [ssh](https://donhk.dev/tag/ssh/) - [ssh-keygen](https://donhk.dev/tag/ssh-keygen/) - [ssl](https://donhk.dev/tag/ssl/) - [system](https://donhk.dev/tag/system/) - [testing](https://donhk.dev/tag/testing/) - [tip](https://donhk.dev/tag/tip/) - [upgrade](https://donhk.dev/tag/upgrade/) - [virtualbox](https://donhk.dev/tag/virtualbox/) - [VM](https://donhk.dev/tag/vm/) - [vpn](https://donhk.dev/tag/vpn/) - [vps](https://donhk.dev/tag/vps/) - [webpage](https://donhk.dev/tag/webpage/) - [windo](https://donhk.dev/tag/windo/) - [windows10](https://donhk.dev/tag/windows10/) - [adware](https://donhk.dev/tag/adware/) - [remove](https://donhk.dev/tag/remove/) - [GI](https://donhk.dev/tag/gi/) - [19c](https://donhk.dev/tag/19c/) - [opatchauto](https://donhk.dev/tag/opatchauto/) - [grid](https://donhk.dev/tag/grid/) - [acfs](https://donhk.dev/tag/acfs/) - [oracle11204](https://donhk.dev/tag/oracle11204/) - [oracleLinux7](https://donhk.dev/tag/oraclelinux7/) - [cerbot](https://donhk.dev/tag/cerbot/) - [lets-encrypt](https://donhk.dev/tag/lets-encrypt/) - [snapd](https://donhk.dev/tag/snapd/) - [oel7](https://donhk.dev/tag/oel7/) - [network](https://donhk.dev/tag/network/) - [valet](https://donhk.dev/tag/valet/) - [rac](https://donhk.dev/tag/rac/) - [cluster](https://donhk.dev/tag/cluster/) - [laravel](https://donhk.dev/tag/laravel/) - [OPatch](https://donhk.dev/tag/opatch/) - [design](https://donhk.dev/tag/design/) - [pattern](https://donhk.dev/tag/pattern/) - [layers](https://donhk.dev/tag/layers/) - [component-based](https://donhk.dev/tag/component-based/) - [presentation](https://donhk.dev/tag/presentation/) - [service](https://donhk.dev/tag/service/) - [hybrid](https://donhk.dev/tag/hybrid/) - [uml](https://donhk.dev/tag/uml/) - [diagram](https://donhk.dev/tag/diagram/) - [functional](https://donhk.dev/tag/functional/) - [software](https://donhk.dev/tag/software/) - [requirements](https://donhk.dev/tag/requirements/) - [money](https://donhk.dev/tag/money/) - [economy](https://donhk.dev/tag/economy/) - [fiat](https://donhk.dev/tag/fiat/) - [blockchain](https://donhk.dev/tag/blockchain/) - [cryptography](https://donhk.dev/tag/cryptography/) - [jenkins](https://donhk.dev/tag/jenkins/) - [ipv6](https://donhk.dev/tag/ipv6/) - [connectivity](https://donhk.dev/tag/connectivity/) - [comfort](https://donhk.dev/tag/comfort/) - [zone](https://donhk.dev/tag/zone/) - [sql](https://donhk.dev/tag/sql/) - [queries](https://donhk.dev/tag/queries/) - [utils](https://donhk.dev/tag/utils/) - [asm](https://donhk.dev/tag/asm/) - [spfile](https://donhk.dev/tag/spfile/) - [update](https://donhk.dev/tag/update/) - [async](https://donhk.dev/tag/async/) - [linux8](https://donhk.dev/tag/linux8/) - [oracledb19c](https://donhk.dev/tag/oracledb19c/) - [epel-repo](https://donhk.dev/tag/epel-repo/) - [devops](https://donhk.dev/tag/devops/) - [patch](https://donhk.dev/tag/patch/) - [bash](https://donhk.dev/tag/bash/) - [command](https://donhk.dev/tag/command/) - [md](https://donhk.dev/tag/md/) - [kafka](https://donhk.dev/tag/kafka/) - [streams](https://donhk.dev/tag/streams/) - [data](https://donhk.dev/tag/data/) - [living](https://donhk.dev/tag/living/) - [abroad](https://donhk.dev/tag/abroad/) - [platform](https://donhk.dev/tag/platform/) - [building](https://donhk.dev/tag/building/) - [observability](https://donhk.dev/tag/observability/) - [system-design](https://donhk.dev/tag/system-design/) - [meta](https://donhk.dev/tag/meta/) - [facebook](https://donhk.dev/tag/facebook/) - [scuba](https://donhk.dev/tag/scuba/) - [ingestion](https://donhk.dev/tag/ingestion/) - [toil](https://donhk.dev/tag/toil/) - [reduction](https://donhk.dev/tag/reduction/) - [sre](https://donhk.dev/tag/sre/) - [pipeline](https://donhk.dev/tag/pipeline/) - [elt](https://donhk.dev/tag/elt/) - [ddd](https://donhk.dev/tag/ddd/) - [engineering](https://donhk.dev/tag/engineering/) - [spark3](https://donhk.dev/tag/spark3/) - [beam](https://donhk.dev/tag/beam/) - [popos](https://donhk.dev/tag/popos/) - [ubuntu](https://donhk.dev/tag/ubuntu/) - [zsh](https://donhk.dev/tag/zsh/) - [permissions](https://donhk.dev/tag/permissions/) - [postgres](https://donhk.dev/tag/postgres/) - [rust](https://donhk.dev/tag/rust/) - [cargo](https://donhk.dev/tag/cargo/) - [openssl](https://donhk.dev/tag/openssl/) - [minimal](https://donhk.dev/tag/minimal/) - [npm](https://donhk.dev/tag/npm/) - [kasm](https://donhk.dev/tag/kasm/) - [macos](https://donhk.dev/tag/macos/) - [docker](https://donhk.dev/tag/docker/)