<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>waltuh Reader</title>
    <link>https://pen.waltuh.cyou</link>
    <description>Read the latest posts from waltuh.</description>
    <pubDate>Thu, 08 Oct 2026 04:35:58 +0000</pubDate>
    <item>
      <title>How to Use Gemini Enterprise Models with GCP Trial Credits (and Your Own Credits)</title>
      <link>https://pen.waltuh.cyou/jimedrand/how-to-use-gemini-enterprise-models-with-gcp-trial-credits-and-your-own</link>
      <description>&lt;![CDATA[Google Cloud gives new accounts $300 in free trial credits valid for 90 days. If you want to run Gemini models on Google Cloud (formerly Vertex AI, now part of Gemini Enterprise / Agent Platform) rather than the separate Google AI Studio, these credits can cover your first-party Gemini API calls.&#xA;&#xA;Here is how to claim the credits, set up your billing and project without getting hit by trial quota limits, and wire everything into gcloud, gemini-cli, and VS Code Copilot agents.&#xA;&#xA;---&#xA;&#xA;1. Claim the $300 Credit and Pass Verification&#xA;&#xA;To sign up for the free trial at Google Cloud Free Features, you need a Google account and a valid credit or debit card.&#xA;&#xA;A few practical details about payment methods:&#xA;Google runs a small temporary pre-authorization charge ($0 to $1) to verify you are human and prevent bot abuse. Google reverses this charge automatically.&#xA;Standard credit cards (Visa, Mastercard, Amex) work best. Debit cards usually work as long as your issuing bank supports international transactions and online 3D Secure verification.&#xA;Prepaid cards, virtual disposable cards, and some regional gift cards almost always fail Google&#39;s fraud checks. If your card gets declined, try a standard bank-issued card.&#xA;&#xA;---&#xA;&#xA;2. Consumer Gemini vs. Gemini Enterprise (Deploying Models Like Ollama)&#xA;&#xA;Before spending credits, it helps to separate what Google sells to consumers from what Google Cloud provides to developers.&#xA;&#xA;Consumer / Individual Gemini (Any Tier)&#xA;When you use the free Gemini web app (gemini.google.com), buy Google One AI Premium ($20/month for Gemini Advanced), or add Gemini to your personal Google Workspace, you are buying a finished consumer application:&#xA;You interact through an opinionated chat interface with pre-packaged consumer tools (Google Drive/Docs integration, Gems, Imagen image generation).&#xA;You pay a flat monthly subscription.&#xA;You do not get raw API endpoints, custom system telemetry, IAM permissions, or VPC network controls.&#xA;Your prompts and data fall under consumer terms of service unless covered by a commercial enterprise contract. You cannot connect this account to external coding agents or custom software.&#xA;&#xA;Gemini Enterprise on Google Cloud&#xA;Gemini Enterprise (formerly Vertex AI, now part of Google Cloud&#39;s Agent Platform) works like a remote, cloud-scale version of Ollama.&#xA;&#xA;When you run Ollama on your local machine, you do not pay a monthly subscription for a chat application. Ollama downloads raw model weights (like Gemma or Llama) and runs a local server that accepts HTTP POST requests with prompt payloads, token counts, and temperature settings.&#xA;&#xA;Gemini Enterprise on GCP does the exact same thing, but hosted across Google&#39;s infrastructure:&#xA;Raw API Endpoints: You do not buy an app subscription. You query managed endpoints for models like gemini-2.5-flash or gemini-1.5-pro (or deploy open weights directly in Model Garden).&#xA;Pay-Per-Token Billing: You only pay for what you consume—fractions of a cent per million input/output tokens, context caching seconds, or dedicated GPU/TPU hours.&#xA;Enterprise Data Privacy: Under Google Cloud terms, your prompts, context, and completions are never logged or used to train Google&#39;s base models.&#xA;Pluggable Backend: Because it exposes standard endpoints, you can plug your Gemini Enterprise backend into any client: terminal tools (gemini-cli), VS Code Copilot extensions, backend microservices, or direct cURL calls.&#xA;&#xA;---&#xA;&#xA;3. The Free Trial Catch: Upgrading to Paid&#xA;&#xA;By default, the Google Cloud Free Trial runs inside an isolated sandbox. You cannot request certain quota increases, access GPUs, or use some production APIs until you lift trial restrictions.&#xA;&#xA;To get full API access, you need to upgrade your Cloud Billing account:&#xA;Open the Google Cloud Console.&#xA;Go to Billing   Billing Account Overview.&#xA;Click the Upgrade button in the top banner.&#xA;&#xA;How Billing Works After Upgrading&#xA;Many developers hesitate to click &#34;Upgrade&#34; because they assume it wipes out the free credit balance. According to official GCP documentation:&#xA;You keep your remaining $300 credit. Upgrading ends the trial status, but your remaining balance stays active until the original 90-day window expires.&#xA;Google burns the credit first. Any eligible usage draws down your promotional credits before charging your card.&#xA;Credit limitations: The $300 credit applies to Google Cloud services, including first-party Gemini models on Vertex AI. It does not cover Google AI Studio (which is billed separately) or third-party partner models offered as Model-as-a-Service on Vertex AI.&#xA;Post-credit billing: Once your credits hit $0 or 90 days pass, Google bills your card for ongoing usage.&#xA;&#xA;---&#xA;&#xA;4. Create a Project and Enable Vertex AI&#xA;&#xA;Google Cloud groups all resources, IAM permissions, and billing inside projects.&#xA;&#xA;Create the Project&#xA;In the GCP Console or via terminal, create a fresh project:&#xA;gcloud projects create gemini-trial-lab --name=&#34;Gemini Trial Lab&#34;&#xA;&#xA;Link your billing account to the new project in the console under Billing   Account Management, or run:&#xA;gcloud billing projects link gemini-trial-lab --billing-account=YOURBILLINGACCOUNTID&#xA;&#xA;Enable the Required APIs&#xA;To send requests to Gemini models, enable the Vertex AI API (aiplatform.googleapis.com):&#xA;gcloud services enable aiplatform.googleapis.com --project=gemini-trial-lab&#xA;&#xA;---&#xA;&#xA;5. Set Up Authentication on Linux&#xA;&#xA;Tools like gemini-cli and the Google GenAI SDK look for Application Default Credentials (ADC) to authenticate against Google Cloud.&#xA;&#xA;Install the Google Cloud CLI (gcloud) if you have not already:&#xA;On Debian/Ubuntu&#xA;sudo apt-get install apt-transport-https ca-certificates gnupg curl&#xA;curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg&#xA;echo &#34;deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main&#34; | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list&#xA;sudo apt-get update &amp;&amp; sudo apt-get install google-cloud-cli&#xA;&#xA;Authenticate your user account and configure ADC:&#xA;1. Log in to the CLI&#xA;gcloud auth login&#xA;&#xA;2. Generate local Application Default Credentials (ADC)&#xA;gcloud auth application-default login&#xA;&#xA;3. Set your active project&#xA;gcloud config set project gemini-trial-lab&#xA;&#xA;4. Set the quota project so billing attributes correctly&#xA;gcloud auth application-default set-quota-project gemini-trial-lab&#xA;&#xA;---&#xA;&#xA;6. Configure and Run gemini-cli&#xA;&#xA;gemini-cli can target either Google AI Studio (via API key) or Google Cloud Vertex AI (via ADC and GCP project settings). When using your GCP trial credits, you want Vertex AI mode.&#xA;&#xA;Set Environment Variables&#xA;If you currently have a GEMINIAPIKEY or GOOGLEAPIKEY exported in your shell, unset them so the CLI does not default to AI Studio:&#xA;unset GEMINIAPIKEY&#xA;unset GOOGLEAPIKEY&#xA;&#xA;Then tell the CLI which Google Cloud project and region to query:&#xA;export GOOGLECLOUDPROJECT=&#34;gemini-trial-lab&#34;&#xA;export GOOGLECLOUDLOCATION=&#34;us-central1&#34;&#xA;&#xA;To persist these variables across terminal sessions, add them to your ~/.bashrc or put them directly in ~/.gemini/.env:&#xA;mkdir -p ~/.gemini&#xA;cat &lt;EOF   ~/.gemini/.env&#xA;GOOGLECLOUDPROJECT=&#34;gemini-trial-lab&#34;&#xA;GOOGLECLOUDLOCATION=&#34;us-central1&#34;&#xA;EOF&#xA;&#xA;Test the CLI&#xA;Run a quick prompt to verify the connection:&#xA;gemini -m gemini-2.5-flash -p &#34;Explain how a reverse proxy works in two sentences.&#34;&#xA;&#xA;If you prefer interactive mode, start a session directly:&#xA;gemini -m gemini-2.5-flash&#xA;&#xA;---&#xA;&#xA;7. Hook into VS Code Copilot Agents via Extensions&#xA;&#xA;You can use your Google Cloud project and $300 trial credits directly inside VS Code&#39;s native Chat and Copilot agent workflows.&#xA;&#xA;VS Code exposes a Language Model API (vscode.lm) that lets extensions register custom language models. Once installed, these models show up alongside default choices in the VS Code Copilot Chat panel.&#xA;&#xA;Option 1: Use the Vertex AI Models Chat Provider Extension&#xA;The community extension Vertex AI Models Chat Provider connects the native VS Code Chat interface directly to your GCP project using Application Default Credentials.&#xA;&#xA;In VS Code, open the Extensions view (Ctrl+Shift+X or Cmd+Shift+X) and search for Vertex AI Models Chat Provider. Click Install.&#xA;Make sure you already ran the ADC authentication command in your terminal:&#xA;      gcloud auth application-default login&#xA;   Open your project folder in VS Code, create a .vscode/settings.json file (or edit your user settings), and specify your project ID and region:&#xA;      {&#xA;     &#34;vertexAiChat.projectId&#34;: &#34;gemini-trial-lab&#34;,&#xA;     &#34;vertexAiChat.location&#34;: &#34;us-central1&#34;&#xA;   }&#xA;   Open the Copilot Chat panel (Ctrl+Alt+I or Cmd+Alt+I). Click the model selector dropdown at the bottom of the chat box. You will see your Vertex AI Gemini models listed. Select one, and all chat questions and agent turns will route through your GCP project and draw from your trial credits.&#xA;&#xA;Option 2: Use the Official Gemini Code Assist Extension&#xA;If you want codebase indexing, whole-repo awareness, and inline code suggestions in addition to chat:&#xA;&#xA;Install the official Gemini Code Assist extension from the VS Code Marketplace.&#xA;In your Google Cloud project, enable the Cloud AI Companion API:&#xA;      gcloud services enable cloudaicompanion.googleapis.com --project=gemini-trial-lab&#xA;   Click the Gemini status item in the VS Code bottom status bar, sign in with your Google account, and choose gemini-trial-lab.&#xA;&#xA;Clarification on GitHub Copilot&#39;s Built-in Model Picker&#xA;GitHub Copilot natively offers Gemini 2.5 Pro in its dropdown for Copilot subscribers. That option runs on GitHub&#39;s infrastructure and burns your GitHub subscription quota, not your Google Cloud $300 credit. To draw from your Google Cloud trial balance, use the Language Model Provider extension approach above, which routes your queries through your own GCP project ID.&#xA;&#xA;---&#xA;&#xA;8. Calling Models from Code or cURL&#xA;&#xA;You can also call the same models in scripts using your trial credits.&#xA;&#xA;Python (google-genai SDK)&#xA;Install the official SDK:&#xA;pip install google-genai&#xA;&#xA;Run a generation query with vertexai=True:&#xA;from google import genai&#xA;&#xA;client = genai.Client(&#xA;    vertexai=True,&#xA;    project=&#34;gemini-trial-lab&#34;,&#xA;    location=&#34;us-central1&#34;&#xA;)&#xA;&#xA;response = client.models.generatecontent(&#xA;    model=&#34;gemini-2.5-flash&#34;,&#xA;    contents=&#34;Name three practical use cases for Redis.&#34;&#xA;)&#xA;&#xA;print(response.text)&#xA;&#xA;Direct cURL Request&#xA;To test from bash without installing Python packages:&#xA;TOKEN=$(gcloud auth print-access-token)&#xA;PROJECTID=&#34;gemini-trial-lab&#34;&#xA;LOCATION=&#34;us-central1&#34;&#xA;MODEL=&#34;gemini-2.5-flash&#34;&#xA;&#xA;curl -X POST \&#xA;  -H &#34;Authorization: Bearer ${TOKEN}&#34; \&#xA;  -H &#34;Content-Type: application/json&#34; \&#xA;  &#34;https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECTID}/locations/${LOCATION}/publishers/google/models/${MODEL}:generateContent&#34; \&#xA;  -d &#39;{&#xA;    &#34;contents&#34;: [&#xA;      {&#xA;        &#34;role&#34;: &#34;user&#34;,&#xA;        &#34;parts&#34;: [{&#34;text&#34;: &#34;Hello from curl!&#34;}]&#xA;      }&#xA;    ]&#xA;  }&#39;&#xA;&#xA;---&#xA;&#xA;9. Budget Guardrails: Avoid Surprise Bills&#xA;&#xA;The $300 credit gives you plenty of room to test, but you should set limits so you avoid unexpected charges when the trial ends or credits run out.&#xA;&#xA;Set Up a Budget and Alerts&#xA;In Google Cloud Console, navigate to Billing   Budgets &amp; alerts.&#xA;Click Create Budget.&#xA;Set your target budget amount (e.g., $300 during trial, or $20/month if continuing on your own funds).&#xA;Configure threshold rules (such as 50%, 90%, and 100% of actual spend). Google sends email alerts to billing administrators whenever your spend crosses these thresholds.&#xA;&#xA;Model Cost Awareness&#xA;Gemini pricing on Google Cloud scales by input and output tokens:&#xA;Flash models (e.g. Gemini 2.5 Flash, 1.5 Flash) are inexpensive: fractions of a dollar per million tokens. You can run hundreds of thousands of test prompts before making a noticeable dent in the $300 credit.&#xA;Pro models (e.g. Gemini 1.5 Pro, 2.5 Pro) cost significantly more per token and consume credits much faster, especially with long context windows and audio or video inputs.&#xA;&#xA;When You Are Done Experimenting&#xA;If you decide not to keep using Google Cloud after testing:&#xA;Delete the project via gcloud projects delete gemini-trial-lab or from the console&#39;s Resource Management page. Shutting down the project immediately stops all billable services linked to it.&#xA;If keeping the project, disable the Vertex AI API:&#xA;    gcloud services disable aiplatform.googleapis.com --project=gemini-trial-lab&#xA;  &#xA;---&#xA;&#xA;Closing Takeaways&#xA;&#xA;Using Google Cloud&#39;s $300 trial credit for Gemini models gives you 90 days of high-end LLM infrastructure without paying a subscription. You can run hundreds of thousands of requests through gemini-cli, build prototypes with the google-genai Python SDK, or route your VS Code Copilot agent turns through your own project.&#xA;&#xA;Two practical habits will keep this setup painless:&#xA;Always check your active project: Run gcloud config get-value project before starting a session so you do not accidentally send requests to a production or unmonitored project.&#xA;Watch your budget thresholds: Keep billing alerts active so you know exactly when the trial balance is running low. When the 90 days end, Flash models cost only pennies for casual development work, but shutting down unused projects ensures you are never billed for background idle resources.&#xA;&#xA;---&#xA;&#xA;Sources &amp; Official Documentation&#xA;&#xA;Google Cloud Free Program &amp; Trial Features: cloud.google.com/free/docs/free-cloud-features&#xA;Upgrading to a Paid Cloud Billing Account: cloud.google.com/billing/docs/how-to/modify-project&#xA;Vertex AI Generative AI Documentation: cloud.google.com/vertex-ai/docs/generative-ai/start/quickstarts/quickstart-multimodal&#xA;Vertex AI Pricing &amp; Token Rates: cloud.google.com/vertex-ai/generative-ai/pricing&#xA;Application Default Credentials (ADC) Setup: cloud.google.com/docs/authentication/provide-credentials-adc&#xA;Gemini Code Assist for VS Code: cloud.google.com/gemini/docs/codeassist/overview&#xA;VS Code Language Model API: code.visualstudio.com/api/extension-guides/language-model&#xA;Vertex AI Models Chat Provider (VS Code Marketplace): marketplace.visualstudio.com/items?itemName=GoogleCloudTools.vertex-ai-models-chat-provider&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>Google Cloud gives new accounts $300 in free trial credits valid for 90 days. If you want to run Gemini models on Google Cloud (formerly Vertex AI, now part of Gemini Enterprise / Agent Platform) rather than the separate Google AI Studio, these credits can cover your first-party Gemini API calls.</p>

<p>Here is how to claim the credits, set up your billing and project without getting hit by trial quota limits, and wire everything into <code>gcloud</code>, <code>gemini-cli</code>, and VS Code Copilot agents.</p>

<hr>

<h2 id="1-claim-the-300-credit-and-pass-verification">1. Claim the $300 Credit and Pass Verification</h2>

<p>To sign up for the free trial at <a href="https://docs.cloud.google.com/free/docs/free-cloud-features" rel="nofollow">Google Cloud Free Features</a>, you need a Google account and a valid credit or debit card.</p>

<p>A few practical details about payment methods:
– Google runs a small temporary pre-authorization charge ($0 to $1) to verify you are human and prevent bot abuse. Google reverses this charge automatically.
– Standard credit cards (Visa, Mastercard, Amex) work best. Debit cards usually work as long as your issuing bank supports international transactions and online 3D Secure verification.
– Prepaid cards, virtual disposable cards, and some regional gift cards almost always fail Google&#39;s fraud checks. If your card gets declined, try a standard bank-issued card.</p>

<hr>

<h2 id="2-consumer-gemini-vs-gemini-enterprise-deploying-models-like-ollama">2. Consumer Gemini vs. Gemini Enterprise (Deploying Models Like Ollama)</h2>

<p>Before spending credits, it helps to separate what Google sells to consumers from what Google Cloud provides to developers.</p>

<h3 id="consumer-individual-gemini-any-tier">Consumer / Individual Gemini (Any Tier)</h3>

<p>When you use the free Gemini web app (<code>gemini.google.com</code>), buy Google One AI Premium ($20/month for Gemini Advanced), or add Gemini to your personal Google Workspace, you are buying a finished consumer application:
– You interact through an opinionated chat interface with pre-packaged consumer tools (Google Drive/Docs integration, Gems, Imagen image generation).
– You pay a flat monthly subscription.
– You do not get raw API endpoints, custom system telemetry, IAM permissions, or VPC network controls.
– Your prompts and data fall under consumer terms of service unless covered by a commercial enterprise contract. You cannot connect this account to external coding agents or custom software.</p>

<h3 id="gemini-enterprise-on-google-cloud">Gemini Enterprise on Google Cloud</h3>

<p>Gemini Enterprise (formerly Vertex AI, now part of Google Cloud&#39;s Agent Platform) works like a remote, cloud-scale version of <strong>Ollama</strong>.</p>

<p>When you run Ollama on your local machine, you do not pay a monthly subscription for a chat application. Ollama downloads raw model weights (like Gemma or Llama) and runs a local server that accepts HTTP POST requests with prompt payloads, token counts, and temperature settings.</p>

<p>Gemini Enterprise on GCP does the exact same thing, but hosted across Google&#39;s infrastructure:
– <strong>Raw API Endpoints:</strong> You do not buy an app subscription. You query managed endpoints for models like <code>gemini-2.5-flash</code> or <code>gemini-1.5-pro</code> (or deploy open weights directly in Model Garden).
– <strong>Pay-Per-Token Billing:</strong> You only pay for what you consume—fractions of a cent per million input/output tokens, context caching seconds, or dedicated GPU/TPU hours.
– <strong>Enterprise Data Privacy:</strong> Under Google Cloud terms, your prompts, context, and completions are never logged or used to train Google&#39;s base models.
– <strong>Pluggable Backend:</strong> Because it exposes standard endpoints, you can plug your Gemini Enterprise backend into any client: terminal tools (<code>gemini-cli</code>), VS Code Copilot extensions, backend microservices, or direct cURL calls.</p>

<hr>

<h2 id="3-the-free-trial-catch-upgrading-to-paid">3. The Free Trial Catch: Upgrading to Paid</h2>

<p>By default, the Google Cloud Free Trial runs inside an isolated sandbox. You cannot request certain quota increases, access GPUs, or use some production APIs until you lift trial restrictions.</p>

<p>To get full API access, you need to upgrade your Cloud Billing account:
1. Open the <a href="https://console.cloud.google.com/" rel="nofollow">Google Cloud Console</a>.
2. Go to <strong>Billing</strong> &gt; <strong>Billing Account Overview</strong>.
3. Click the <strong>Upgrade</strong> button in the top banner.</p>

<h3 id="how-billing-works-after-upgrading">How Billing Works After Upgrading</h3>

<p>Many developers hesitate to click “Upgrade” because they assume it wipes out the free credit balance. According to official GCP documentation:
– <strong>You keep your remaining $300 credit.</strong> Upgrading ends the trial status, but your remaining balance stays active until the original 90-day window expires.
– <strong>Google burns the credit first.</strong> Any eligible usage draws down your promotional credits before charging your card.
– <strong>Credit limitations:</strong> The $300 credit applies to Google Cloud services, including first-party Gemini models on Vertex AI. It does <strong>not</strong> cover Google AI Studio (which is billed separately) or third-party partner models offered as Model-as-a-Service on Vertex AI.
– <strong>Post-credit billing:</strong> Once your credits hit $0 or 90 days pass, Google bills your card for ongoing usage.</p>

<hr>

<h2 id="4-create-a-project-and-enable-vertex-ai">4. Create a Project and Enable Vertex AI</h2>

<p>Google Cloud groups all resources, IAM permissions, and billing inside projects.</p>

<h3 id="create-the-project">Create the Project</h3>

<p>In the GCP Console or via terminal, create a fresh project:</p>

<pre><code class="language-bash">gcloud projects create gemini-trial-lab --name=&#34;Gemini Trial Lab&#34;
</code></pre>

<p>Link your billing account to the new project in the console under <strong>Billing &gt; Account Management</strong>, or run:</p>

<pre><code class="language-bash">gcloud billing projects link gemini-trial-lab --billing-account=YOUR_BILLING_ACCOUNT_ID
</code></pre>

<h3 id="enable-the-required-apis">Enable the Required APIs</h3>

<p>To send requests to Gemini models, enable the Vertex AI API (<code>aiplatform.googleapis.com</code>):</p>

<pre><code class="language-bash">gcloud services enable aiplatform.googleapis.com --project=gemini-trial-lab
</code></pre>

<hr>

<h2 id="5-set-up-authentication-on-linux">5. Set Up Authentication on Linux</h2>

<p>Tools like <code>gemini-cli</code> and the Google GenAI SDK look for Application Default Credentials (ADC) to authenticate against Google Cloud.</p>

<p>Install the Google Cloud CLI (<code>gcloud</code>) if you have not already:</p>

<pre><code class="language-bash"># On Debian/Ubuntu
sudo apt-get install apt-transport-https ca-certificates gnupg curl
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
echo &#34;deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main&#34; | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
sudo apt-get update &amp;&amp; sudo apt-get install google-cloud-cli
</code></pre>

<p>Authenticate your user account and configure ADC:</p>

<pre><code class="language-bash"># 1. Log in to the CLI
gcloud auth login

# 2. Generate local Application Default Credentials (ADC)
gcloud auth application-default login

# 3. Set your active project
gcloud config set project gemini-trial-lab

# 4. Set the quota project so billing attributes correctly
gcloud auth application-default set-quota-project gemini-trial-lab
</code></pre>

<hr>

<h2 id="6-configure-and-run-gemini-cli">6. Configure and Run <code>gemini-cli</code></h2>

<p><code>gemini-cli</code> can target either Google AI Studio (via API key) or Google Cloud Vertex AI (via ADC and GCP project settings). When using your GCP trial credits, you want Vertex AI mode.</p>

<h3 id="set-environment-variables">Set Environment Variables</h3>

<p>If you currently have a <code>GEMINI_API_KEY</code> or <code>GOOGLE_API_KEY</code> exported in your shell, unset them so the CLI does not default to AI Studio:</p>

<pre><code class="language-bash">unset GEMINI_API_KEY
unset GOOGLE_API_KEY
</code></pre>

<p>Then tell the CLI which Google Cloud project and region to query:</p>

<pre><code class="language-bash">export GOOGLE_CLOUD_PROJECT=&#34;gemini-trial-lab&#34;
export GOOGLE_CLOUD_LOCATION=&#34;us-central1&#34;
</code></pre>

<p>To persist these variables across terminal sessions, add them to your <code>~/.bashrc</code> or put them directly in <code>~/.gemini/.env</code>:</p>

<pre><code class="language-bash">mkdir -p ~/.gemini
cat &lt;&lt;EOF &gt;&gt; ~/.gemini/.env
GOOGLE_CLOUD_PROJECT=&#34;gemini-trial-lab&#34;
GOOGLE_CLOUD_LOCATION=&#34;us-central1&#34;
EOF
</code></pre>

<h3 id="test-the-cli">Test the CLI</h3>

<p>Run a quick prompt to verify the connection:</p>

<pre><code class="language-bash">gemini -m gemini-2.5-flash -p &#34;Explain how a reverse proxy works in two sentences.&#34;
</code></pre>

<p>If you prefer interactive mode, start a session directly:</p>

<pre><code class="language-bash">gemini -m gemini-2.5-flash
</code></pre>

<hr>

<h2 id="7-hook-into-vs-code-copilot-agents-via-extensions">7. Hook into VS Code Copilot Agents via Extensions</h2>

<p>You can use your Google Cloud project and $300 trial credits directly inside VS Code&#39;s native Chat and Copilot agent workflows.</p>

<p>VS Code exposes a Language Model API (<code>vscode.lm</code>) that lets extensions register custom language models. Once installed, these models show up alongside default choices in the VS Code Copilot Chat panel.</p>

<h3 id="option-1-use-the-vertex-ai-models-chat-provider-extension">Option 1: Use the Vertex AI Models Chat Provider Extension</h3>

<p>The community extension <strong>Vertex AI Models Chat Provider</strong> connects the native VS Code Chat interface directly to your GCP project using Application Default Credentials.</p>
<ol><li>In VS Code, open the Extensions view (<code>Ctrl+Shift+X</code> or <code>Cmd+Shift+X</code>) and search for <strong>Vertex AI Models Chat Provider</strong>. Click <strong>Install</strong>.</li>
<li>Make sure you already ran the ADC authentication command in your terminal:
<code>bash
gcloud auth application-default login
</code></li>
<li>Open your project folder in VS Code, create a <code>.vscode/settings.json</code> file (or edit your user settings), and specify your project ID and region:
<code>json
{
 &#34;vertexAiChat.projectId&#34;: &#34;gemini-trial-lab&#34;,
 &#34;vertexAiChat.location&#34;: &#34;us-central1&#34;
}
</code></li>
<li>Open the Copilot Chat panel (<code>Ctrl+Alt+I</code> or <code>Cmd+Alt+I</code>). Click the model selector dropdown at the bottom of the chat box. You will see your Vertex AI Gemini models listed. Select one, and all chat questions and agent turns will route through your GCP project and draw from your trial credits.</li></ol>

<h3 id="option-2-use-the-official-gemini-code-assist-extension">Option 2: Use the Official Gemini Code Assist Extension</h3>

<p>If you want codebase indexing, whole-repo awareness, and inline code suggestions in addition to chat:</p>
<ol><li>Install the official <strong>Gemini Code Assist</strong> extension from the VS Code Marketplace.</li>
<li>In your Google Cloud project, enable the Cloud AI Companion API:
<code>bash
gcloud services enable cloudaicompanion.googleapis.com --project=gemini-trial-lab
</code></li>
<li>Click the Gemini status item in the VS Code bottom status bar, sign in with your Google account, and choose <code>gemini-trial-lab</code>.</li></ol>

<h3 id="clarification-on-github-copilot-s-built-in-model-picker">Clarification on GitHub Copilot&#39;s Built-in Model Picker</h3>

<p>GitHub Copilot natively offers Gemini 2.5 Pro in its dropdown for Copilot subscribers. That option runs on GitHub&#39;s infrastructure and burns your GitHub subscription quota, not your Google Cloud $300 credit. To draw from your Google Cloud trial balance, use the Language Model Provider extension approach above, which routes your queries through your own GCP project ID.</p>

<hr>

<h2 id="8-calling-models-from-code-or-curl">8. Calling Models from Code or cURL</h2>

<p>You can also call the same models in scripts using your trial credits.</p>

<h3 id="python-google-genai-sdk">Python (<code>google-genai</code> SDK)</h3>

<p>Install the official SDK:</p>

<pre><code class="language-bash">pip install google-genai
</code></pre>

<p>Run a generation query with <code>vertexai=True</code>:</p>

<pre><code class="language-python">from google import genai

client = genai.Client(
    vertexai=True,
    project=&#34;gemini-trial-lab&#34;,
    location=&#34;us-central1&#34;
)

response = client.models.generate_content(
    model=&#34;gemini-2.5-flash&#34;,
    contents=&#34;Name three practical use cases for Redis.&#34;
)

print(response.text)
</code></pre>

<h3 id="direct-curl-request">Direct cURL Request</h3>

<p>To test from bash without installing Python packages:</p>

<pre><code class="language-bash">TOKEN=$(gcloud auth print-access-token)
PROJECT_ID=&#34;gemini-trial-lab&#34;
LOCATION=&#34;us-central1&#34;
MODEL=&#34;gemini-2.5-flash&#34;

curl -X POST \
  -H &#34;Authorization: Bearer ${TOKEN}&#34; \
  -H &#34;Content-Type: application/json&#34; \
  &#34;https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL}:generateContent&#34; \
  -d &#39;{
    &#34;contents&#34;: [
      {
        &#34;role&#34;: &#34;user&#34;,
        &#34;parts&#34;: [{&#34;text&#34;: &#34;Hello from curl!&#34;}]
      }
    ]
  }&#39;
</code></pre>

<hr>

<h2 id="9-budget-guardrails-avoid-surprise-bills">9. Budget Guardrails: Avoid Surprise Bills</h2>

<p>The $300 credit gives you plenty of room to test, but you should set limits so you avoid unexpected charges when the trial ends or credits run out.</p>

<h3 id="set-up-a-budget-and-alerts">Set Up a Budget and Alerts</h3>
<ol><li>In Google Cloud Console, navigate to <strong>Billing &gt; Budgets &amp; alerts</strong>.</li>
<li>Click <strong>Create Budget</strong>.</li>
<li>Set your target budget amount (e.g., $300 during trial, or $20/month if continuing on your own funds).</li>
<li>Configure threshold rules (such as 50%, 90%, and 100% of actual spend). Google sends email alerts to billing administrators whenever your spend crosses these thresholds.</li></ol>

<h3 id="model-cost-awareness">Model Cost Awareness</h3>

<p>Gemini pricing on Google Cloud scales by input and output tokens:
– <strong>Flash models (e.g. Gemini 2.5 Flash, 1.5 Flash)</strong> are inexpensive: fractions of a dollar per million tokens. You can run hundreds of thousands of test prompts before making a noticeable dent in the $300 credit.
– <strong>Pro models (e.g. Gemini 1.5 Pro, 2.5 Pro)</strong> cost significantly more per token and consume credits much faster, especially with long context windows and audio or video inputs.</p>

<h3 id="when-you-are-done-experimenting">When You Are Done Experimenting</h3>

<p>If you decide not to keep using Google Cloud after testing:
– Delete the project via <code>gcloud projects delete gemini-trial-lab</code> or from the console&#39;s <strong>Resource Management</strong> page. Shutting down the project immediately stops all billable services linked to it.
– If keeping the project, disable the Vertex AI API:</p>

<pre><code class="language-bash">  gcloud services disable aiplatform.googleapis.com --project=gemini-trial-lab
</code></pre>

<hr>

<h2 id="closing-takeaways">Closing Takeaways</h2>

<p>Using Google Cloud&#39;s $300 trial credit for Gemini models gives you 90 days of high-end LLM infrastructure without paying a subscription. You can run hundreds of thousands of requests through <code>gemini-cli</code>, build prototypes with the <code>google-genai</code> Python SDK, or route your VS Code Copilot agent turns through your own project.</p>

<p>Two practical habits will keep this setup painless:
1. <strong>Always check your active project:</strong> Run <code>gcloud config get-value project</code> before starting a session so you do not accidentally send requests to a production or unmonitored project.
2. <strong>Watch your budget thresholds:</strong> Keep billing alerts active so you know exactly when the trial balance is running low. When the 90 days end, Flash models cost only pennies for casual development work, but shutting down unused projects ensures you are never billed for background idle resources.</p>

<hr>

<h2 id="sources-official-documentation">Sources &amp; Official Documentation</h2>
<ul><li><strong>Google Cloud Free Program &amp; Trial Features</strong>: <a href="https://cloud.google.com/free/docs/free-cloud-features" rel="nofollow">cloud.google.com/free/docs/free-cloud-features</a></li>
<li><strong>Upgrading to a Paid Cloud Billing Account</strong>: <a href="https://cloud.google.com/billing/docs/how-to/modify-project" rel="nofollow">cloud.google.com/billing/docs/how-to/modify-project</a></li>
<li><strong>Vertex AI Generative AI Documentation</strong>: <a href="https://cloud.google.com/vertex-ai/docs/generative-ai/start/quickstarts/quickstart-multimodal" rel="nofollow">cloud.google.com/vertex-ai/docs/generative-ai/start/quickstarts/quickstart-multimodal</a></li>
<li><strong>Vertex AI Pricing &amp; Token Rates</strong>: <a href="https://cloud.google.com/vertex-ai/generative-ai/pricing" rel="nofollow">cloud.google.com/vertex-ai/generative-ai/pricing</a></li>
<li><strong>Application Default Credentials (ADC) Setup</strong>: <a href="https://cloud.google.com/docs/authentication/provide-credentials-adc" rel="nofollow">cloud.google.com/docs/authentication/provide-credentials-adc</a></li>
<li><strong>Gemini Code Assist for VS Code</strong>: <a href="https://cloud.google.com/gemini/docs/codeassist/overview" rel="nofollow">cloud.google.com/gemini/docs/codeassist/overview</a></li>
<li><strong>VS Code Language Model API</strong>: <a href="https://code.visualstudio.com/api/extension-guides/language-model" rel="nofollow">code.visualstudio.com/api/extension-guides/language-model</a></li>
<li><strong>Vertex AI Models Chat Provider (VS Code Marketplace)</strong>: <a href="https://marketplace.visualstudio.com/items?itemName=GoogleCloudTools.vertex-ai-models-chat-provider" rel="nofollow">marketplace.visualstudio.com/items?itemName=GoogleCloudTools.vertex-ai-models-chat-provider</a></li></ul>
]]></content:encoded>
      <author>Jim&#39;s Personal Blog</author>
      <guid>https://pen.waltuh.cyou/read/a/e1r2pltkrn</guid>
      <pubDate>Mon, 28 Sep 2026 09:21:15 +0000</pubDate>
    </item>
    <item>
      <title>ZTE B860H: Getting Armbian into it</title>
      <link>https://pen.waltuh.cyou/yonle/zte-b860h-getting-armbian-into-it</link>
      <description>&lt;![CDATA[This blog will cover the Armbian installation guide for B860H V1 / V2.&#xA;&#xA;  Caution: This model MUST not be confused with V5, as both revision have an entirely different hardware inside.&#xA;&#xA;B860H V1 STB Top&#xA;B860H V1 STB Bottom&#xA;&#xA;The method that&#39;s used here will not be requiring the set top box to be already rooted, or at most, outside of the stock rom. Assuming that the STB is still in the stock.&#xA;&#xA;At best, It&#39;s recommended to do all of the flashing in Linux desktop, Otherwise the Windows equivalent exists, which i will talk about later.&#xA;&#xA;Requirements&#xA;Installation&#xA;  Flashing the Armbian&#xA;  Flashing the U-Boot&#xA;  Flashing TL;DR&#xA;To the box...&#xA;Installing to eMMC&#xA;Extra: Setting up zram&#xA;Extra: Setting up irqbalance&#xA;Trivia&#xA;Baffled?&#xA;&#xA;This guide also works on FiberHome HG680P box (however, check Trivia).&#xA;&#xA;---&#xA;&#xA;Requirements&#xA;&#xA;A Personal Computer with microSD slot (otherwise, use microSD-USB adapter. These will work)&#xA;A microSD card (Use class 10 microSD card if you&#39;re going to use this as main)&#xA;A specifcally made HDMI Boot Dongle which you can made yourself or by purchasing an already premade one via online store (id: Shopee Indonesia | global: Tindie)&#xA;The actual box itself (B860H) that can still be powered on regardless the boot state (LED is orange, or green, or whatever. does not matter it&#39;s rooted, still in stock, or not).&#xA;Not copy and pasting blindly the attached commands&#xA;&#xA;---&#xA;&#xA;Installation&#xA;&#xA;The B860H must use the HG680P U-Boot bootloader to work, Which you can obtain it from here (save it as u-boot.bin).&#xA;&#xA;The following steps must be done in order.&#xA;&#xA;1. Flashing the Armbian&#xA;&#xA;You can obtain the Armbian image from ophub/amlogic-s9xxx-armbian, With each consisting of different distros. For example, as of the time of this writing:&#xA;resolute is a Ubuntu edition of Armbian OS&#xA;trixie is a Debian edition of Armbian OS.&#xA;&#xA;You will want to look for a release with the two keywords: s905x, and b860h. For example:&#xA;Armbian26.11.0amlogics905x-b860htrixie6.18.51server2026.09.14.img.gz&#xA;&#xA;Once you have downloaded it, Uncompress it:&#xA;gzip -k -d -v Armbian26.11.0amlogics905x-b860htrixie6.18.51server2026.09.14.img.gz&#xA;&#xA;  Note: Adjust the filename with the release that you have downloaded.&#xA;&#xA;Insert a microSD card to be flashed on, check where it was located:&#xA;yonle@yonle:/mnt$ lsblk&#xA;NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS&#xA;mmcblk0     179:0    0  58.6G  0 disk &#xA;├─mmcblk0p1 179:1    0   511M  0 part&#xA;└─mmcblk0p2 179:2    0  58.1G  0 part &#xA;&#xA;In this case, it&#39;s /dev/mmcblk0&#xA;&#xA;  Special: If you&#39;re using an SDcard USB adapter, These usually are named with sd[a...c] prefix (example: sdb). It must not be confused with an existing main SATA drive. &#xA;&#xA;and then flash the Armbian image to the card:&#xA;sudo dd if=Armbian26.11.0amlogics905x-b860htrixie6.18.51server2026.09.14.img of=/dev/mmcblk0 bs=4M status=progress&#xA;&#xA;sync&#xA;&#xA;(yes, sync IS a command)&#xA;&#xA;Adjust /dev/mmcblk0 to the path to your microSD slot, Which you can check via lsblk command.&#xA;&#xA;  Caution: Doing this will wipe ALL the datas that&#39;s in the microSD card. Please back up important stuff if there&#39;s one before proceeding.&#xA;&#xA;---&#xA;&#xA;There is no need to alter the BOOT partition after flashing as these will be done automatically during boot stage.&#xA;&#xA;2. Flashing the U-Boot&#xA;&#xA;On Windows, Doing this step is essentially done by using a program called Amlogic Bootcard Maker.&#xA;&#xA;Similarly, we can do the same on Linux.&#xA;&#xA;Head to the directory where the earlier u-boot.bin is downloaded, for example:&#xA;cd ~/Downloads&#xA;&#xA;Then flash it:&#xA;&#xA;sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=1 count=442&#xA;sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=512 skip=1 seek=1&#xA;&#xA;sync&#xA;&#xA;And finally, Yeet the microSD card out.&#xA;&#xA;Flashing TL;DR&#xA;&#xA;To put it simply, The above tasks is simply:&#xA;sudo dd if=Armbian26.11.0amlogics905x-b860htrixie6.18.51server2026.09.14.img of=/dev/mmcblk0 bs=4M status=progress&#xA;sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=1 count=442&#xA;sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=512 skip=1 seek=1&#xA;&#xA;sync&#xA;&#xA;To the box...&#xA;&#xA;the box, already on Linux&#xA;&#xA;You can determine whenever the box is already hacked or not, And it&#39;s usually determined via the LED indicator:&#xA;If it&#39;s green, Chances are it&#39;s running Android.&#xA;If it&#39;s orange, It&#39;s not using a regular android bootloader or is in emergency download mode&#xA;&#xA;On a box with the factory Android rom inside, You usually cannot just insert the microSD right into the box, and then hopes it will boot immediately to what&#39;s on the microSD card. The stock bootloader will immediately boot to the Android OS anyway and then indirectly alter the BOOT partition, which is probably not what you wanted.&#xA;&#xA;the specialized HDMI dongle&#xA;&#xA;A specialized HDMI dongle is made specifically to make the bootloader on this box to boot whatever that&#39;s in the microSD card, supposedly for emergency / download mode.&#xA;&#xA;---&#xA;&#xA;To check whenever this HDMI dongle is exactly what we wanted, We can use i2cdetect (installable via i2c-tools) to check the HDMI bus:&#xA;&#xA;First, we will want to know which bus is the bus for the HDMI port in my laptop:&#xA;yonle@yonle:~$ sudo i2cdetect -l&#xA;i2c-0&#x9;i2c       &#x9;Synopsys DesignWare I2C adapter &#x9;I2C adapter&#xA;i2c-1&#x9;i2c       &#x9;Synopsys DesignWare I2C adapter &#x9;I2C adapter&#xA;i2c-2&#x9;i2c       &#x9;i915 gmbus dpa                  &#x9;I2C adapter&#xA;i2c-3&#x9;i2c       &#x9;i915 gmbus dpb                  &#x9;I2C adapter&#xA;i2c-4&#x9;i2c       &#x9;i915 gmbus dpc                  &#x9;I2C adapter&#xA;&#xA;On the above example, My bus is at i2c-2, Which is i915 gmbus dpa (notice the dpX prefix). From the 2 at the end of the i2c-2, Add it by +1, Which then: 3.&#xA;&#xA;So now we plug our HDMI dongle to our HDMI port in our laptop:&#xA;&#xA;yonle@yonle:~$ sudo i2cdetect -y -r 3&#xA;     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&#xA;00:                         -- -- -- -- -- -- -- -- &#xA;10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &#xA;20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &#xA;30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &#xA;40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &#xA;50: -- -- 52 -- -- -- -- -- -- -- -- -- -- -- -- -- &#xA;60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- &#xA;70: -- -- -- -- -- -- -- --   &#xA;&#xA;If this dongle is what we are looking for, In 0x50, There should have 52 in the third column just like shown above.&#xA;&#xA;Then verify what&#39;s inside:&#xA;yonle@yonle:~$ sudo i2cdump -y -r 0xf8-0xff 3 0x52&#xA;No size specified (using byte-data access)&#xA;     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef&#xA;f0:                         62 6f 6f 74 40 53 44 43            boot@SDC&#xA;&#xA;The string value must be boot@SDC.&#xA;&#xA;---&#xA;&#xA;Now that we know that the dongle is exactly what we&#39;re looking for, Let&#39;s begin the installation process:&#xA;&#xA;Now unplug the box from any power source,&#xA;Insert the microSD card that we flashed earlier to the microSD card slot,&#xA;Plug the HDMI dongle to the box&#xA;&#xA;Then plug it to the power source, and pay attention to the power LED indicator, The green indicator must have turned into orange on this phase.&#xA;&#xA;Keep in mind that the indicator MUST STAY on orange LED light for as long as 15 seconds (it mustn&#39;t turn green on this phase, If it did, Then you&#39;re flashing it wrong!).&#xA;&#xA;If after 15 seconds passed the LED is staying orange, You can now unplug the HDMI dongle and plug a HDMI cable from your TV/Monitor/CaptureCard to your box, You must see something resembling TTY:&#xA;&#xA;the screen&#xA;&#xA;From there, Once you get into a phase where Armbian asks you for setup, There&#39;s two method you can do this:&#xA;Keyboard way: Plug your keyboard to the STB, and do set up from here&#xA;Networking: You want to set this box up via ssh: Plug a LAN cable from your router to the box, Check for it&#39;s IP address on the router page, and ssh into it:&#xA;&#xA;ssh root@10.42.x.x&#xA;&#xA;The default password is 1234. You will be asked for setup and a new password setup.&#xA;&#xA;The default ARMBian experience&#xA;&#xA;Once you&#39;re done, Then that&#39;s it. You&#39;re done installing Armbian to your microSD via your box, However you will still need to use that HDMI dongle to force it using U-Boot.&#xA;&#xA;Making U-Boot permanent&#xA;&#xA;Just like earlier, Send the earlier u-boot.bin to the box via network:&#xA;scp u-boot.bin root@10.42.xx.xx:u-boot.bin&#xA;&#xA;Get into the shell, and check which MMC is our eMMC:&#xA;root@armbian:~# lsblk&#xA;NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS&#xA;mmcblk1      179:0    0 58.6G  0 disk &#xA;├─mmcblk1p1  179:1    0  511M  0 part /boot&#xA;└─mmcblk1p2  179:2    0 58.1G  0 part /&#xA;mmcblk2      179:32   0  7.3G  0 disk &#xA;├─mmcblk2p1  179:33   0  511M  0 part &#xA;└─mmcblk2p2  179:34   0  6.1G  0 part &#xA;mmcblk2boot0 179:64   0    4M  1 disk &#xA;mmcblk2boot1 179:96   0    4M  1 disk &#xA;&#xA;In this case, Since we&#39;re booting from SDcard, mmcblk2 is our target, So:&#xA;&#xA;sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=1 count=442&#xA;sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=512 skip=1 seek=1&#xA;&#xA;  Caution: This will permanently wipe the android bootloader in the eMMC. If you plan to install Armbian to eMMC, Do armbian-install and reflash U-Boot to the eMMC via steps above again&#xA;&#xA;Installing to eMMC&#xA;&#xA;  Caution: Doing the following will wipe what&#39;s in the eMMC, Which includes the Android base itself.&#xA;&#xA;Assuming you have been in the shell, run armbian-install as root:&#xA;root@armbian:~# armbian-install &#xA;[ STEPS ] Installing Armbian to internal eMMC...&#xA;[ STEPS ] Checking dependencies...&#xA;[ INFO ] Dependency check completed. Proceeding installation...&#xA;[ STEPS ] Initializing the environment...&#xA;[ INFO ] Use mainline u-boot: [ no ]&#xA;[ INFO ] Use ampart tool: [ no ]&#xA;[ INFO ] Show all devices: [ no ]&#xA;[ INFO ] Detected eMMC device: [ /dev/mmcblk2 ]&#xA;[ STEPS ] Start selecting device...&#xA;-----------------------------------------------------------------------------------------------------&#xA;ID    SOC        MODEL                                         DTB                                               &#xA;-----------------------------------------------------------------------------------------------------&#xA;101   s905d      Phicomm-N1                                    meson-gxl-s905d-phicomm-n1.dtb                    &#xA;102   s905d      Phicomm-N1(DMA-thresh)                        meson-gxl-s905d-phicomm-n1-thresh.dtb             &#xA;103   s905d      MECOOL-KI-Pro                                 meson-gxl-s905d-mecool-ki-pro.dtb                 &#xA;104   s905d      SML-5442TW                                    meson-gxl-s905d-sml5442tw.dtb                     &#xA;105   s905x      HG680P                                        meson-gxl-s905x-p212.dtb                          &#xA;106   s905x      B860H                                         meson-gxl-s905x-b860h.dtb                         &#xA;107   s905x      Nexbox-a95x                                   meson-gxl-s905x-nexbox-a95x.dtb                   &#xA;108   s905x      TX9                                           meson-gxl-s905x-tx9.dtb                           &#xA;109   s905x      T95,XiaoMI-3S,X96,BTV9                        meson-gxl-s905x-p212.dtb                          &#xA;110   s905x      TBee                                          meson-gxl-s905x-tbee.dtb                          &#xA;-----------------------------------------------------------------------------------------------------&#xA;111   s905w      TX3-Mini,MeCool-m8s-pro-W                     meson-gxl-s905w-tx3-mini.dtb                      &#xA;112   s905w      W95                                           meson-gxl-s905w-p281.dtb                          &#xA;113   s905w      X96-Mini                                      meson-gxl-s905w-x96-mini.dtb                      &#xA;114   s905w      X96W,FunTV,MXQ-Pro-4K                         meson-gxl-s905w-x96w.dtb                          &#xA;115   s905l      UNT402A,M201-S,MiBox-4C,IP108H,B860AV2.1      meson-gxl-s905l3b-m302a.dtb                       &#xA;116   s905l      MG101,Mibox-4,E900V21C,XiaoMI-4C              meson-gxl-s905l-venz-v10.dtb                      &#xA;117   s905l      Tencent-Aurora-1s                             meson-gxl-s905x-p212.dtb                          &#xA;118   s905l      ZXV10-B860AV2.1U,HM201                        meson-gxl-s905x-tx9.dtb                           &#xA;119   s905l2     MGV2000,MGV3000,M301A,CM201-1,IP108H          meson-gxl-s905l2-x7-5g.dtb                        &#xA;120   s905l2     E900v21E,MGV2000-K,e900v21d                   meson-gxl-s905l2-x7-5g.dtb                        &#xA;-----------------------------------------------------------------------------------------------------&#xA;121   s905l2     Wojia-TV-IPBS9505                             meson-gxl-s905l2-ipbs9505.dtb                     &#xA;122   s905l3     CM311-1,HG680-LC,M401A,UNT402A,CM201-1-6-YS   meson-gxl-s905l2-x7-5g.dtb                        &#xA;123   s905l3     CM211-1,M411A,B860AV3.2M,B860AV2.1U,M301A     meson-gxl-s905l3b-m302a.dtb                       &#xA;124   s905l3     UNT400G1,E900V22D-2,UNT400G,IP108H            meson-gxl-s905l2-x7-5g.dtb                        &#xA;125   s905l3     UNT402A,UNT400G                               meson-gxl-s905l3b-m302a.dtb                       &#xA;126   s905l3b    E900V21E,E900V22E,MGV2000/CW,M411A            meson-gxl-s905l3b-e900v22e.dtb                    &#xA;127   s905l3b    M302A,M304A,CM201-1,CM211-1,CM311-1           meson-gxl-s905l3b-m302a.dtb                       &#xA;128   s905l3b    UNT403A                                       meson-gxl-s905l3b-m302a.dtb                       &#xA;129   s905l3b    RG020ET-CA                                    meson-gxl-s905l3b-e900v22e.dtb                    &#xA;130   s905l3b    IP103H,TY1608,BV310,B860AV-2.1M               meson-gxl-s905l3b-m302a.dtb                       &#xA;-----------------------------------------------------------------------------------------------------&#xA;131   s905l3b    E900V22D,TY1608                               meson-gxl-s905l2-x7-5g.dtb                        &#xA;132   s905l3b    E900V21D,B860AV2.1-A                          meson-gxl-s905l2-x7-5g.dtb                        &#xA;133   s905mb     S65                                           meson-gxl-s905x-p212.dtb                          &#xA;134   s905lb     BesTV-R3300L,SumaVision-Q7,MG101              meson-gxl-s905x-p212.dtb                          &#xA;135   s905lb     Q96-mini                                      meson-gxl-s905x-p212.dtb                          &#xA;136   s905lb     IPBS9505                                      meson-gxl-s905l2-x7-5g.dtb                        &#xA;0     Other      Customize                                     Enter-custom-dtb-name                             &#xA;-----------------------------------------------------------------------------------------------------&#xA;[ OPTIONS ] Please Input ID: 106&#xA;&#xA;Pick 106, or B860H.&#xA;&#xA;Pressing enter will tell you to pick filesystem type:&#xA;&#xA;[ INFO ] Input Box ID: [ 106 ]&#xA;[ INFO ] Model Name: [ B860H ]&#xA;[ INFO ] FDTFILE: [ meson-gxl-s905x-b860h.dtb ]&#xA;[ INFO ] MAINLINEUBOOT: [  ]&#xA;[ INFO ] BOOTLOADERIMG:  [  ]&#xA;[ INFO ] UBOOTOVERLOAD: [ u-boot-p212.bin ]&#xA;[ INFO ] NEEDOVERLOAD: [ no ]&#xA;[ STEPS ] Selecting root filesystem type...&#xA;-----------------------------------------------&#xA;  ID   TYPE&#xA;-----------------------------------------------&#xA;  1    ext4&#xA;  2    btrfs&#xA;-----------------------------------------------&#xA;[ OPTIONS ] Please Input ID (1/2): &#xA;&#xA;Depending on your workload, you can use either ext4 or btrfs for your eMMC. But if you&#39;re unsure, I&#39;d recommend ext4.&#xA;&#xA;It has received plenty of improvements over the years, so it&#39;s not the same ext4 people might remember from years ago. It&#39;s still a very solid choice for eMMC.&#xA;&#xA;From there, It will install the system to the eMMC from SDcard, which will take several minutes until it&#39;s finished.&#xA;&#xA;After it&#39;s finished, Reflash U-Boot to the eMMC like how we flash it to microSD:&#xA;sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=1 count=442&#xA;sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=512 skip=1 seek=1&#xA;&#xA;sync&#xA;&#xA;So:&#xA;[ INFO ] Copying ROOTFS partition data...&#xA;[ INFO ] Copying [ etc ] ...&#xA;[ INFO ] Copying [ home ] ...&#xA;[ INFO ] Copying [ opt ] ...&#xA;[ INFO ] Copying [ root ] ...&#xA;[ INFO ] Copying [ selinux ] ...&#xA;[ INFO ] Copying [ srv ] ...&#xA;[ INFO ] Copying [ usr ] ...&#xA;[ INFO ] Copying [ var ] ...&#xA;[ INFO ] Generate the new fstab file.&#xA;[ INFO ] Update parameters related to the releases file.&#xA;[ SUCCESS ] Installation completed successfully. Run [ poweroff ], remove the installation media, then re-insert the power supply to boot the new system.&#xA;root@armbian:~# sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=1 count=442&#xA;442+0 records in&#xA;442+0 records out&#xA;442 bytes copied, 0.00554292 s, 79.7 kB/s&#xA;root@armbian:~# sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=512 skip=1 seek=1&#xA;4095+0 records in&#xA;4095+0 records out&#xA;2096640 bytes (2.1 MB, 2.0 MiB) copied, 0.1678 s, 12.5 MB/s&#xA;root@armbian:~# &#xA;&#xA;After these are all done, Run poweroff. Once it&#39;s off (the LED light will turn to green, Don&#39;t worry), Unplug from power source, now you can also unplug the microSD card.&#xA;&#xA;And now let it boot into it&#39;s own glory by plugging the power source back, And lo and behold, Look. It runs without the microSD card!:&#xA;&#xA;The Linux boot sequence&#xA;&#xA;Extra: Setting up zram&#xA;&#xA;This can save us some room in our RAM.&#xA;&#xA;sudo apt update &amp;&amp; sudo apt install systemd-zram-generator&#xA;sudo nano /etc/systemd/zram-generator.conf &#xA;&#xA;Put:&#xA;[zram0]&#xA;zram-size = ram&#xA;compression-algorithm = lzo-rle zstd(level=3) (type=idle)&#xA;&#xA;Save it (CTRL+S), Exit (CTRL+X), and load it:&#xA;sudo systemctl daemon-reload&#xA;sudo systemctl start systemd-zram-setup@zram0.service&#xA;&#xA;Extra: Setting up irqbalance&#xA;&#xA;yonle@armbian:~$ cat /proc/interrupts&#xA;           CPU0       CPU1       CPU2       CPU3       &#xA;  9:          0          0          0          0    GICv2  25 Level     vgic&#xA; 11:   26055984   26123490   25924591   25663238    GICv2  30 Level     archtimer&#xA; 12:          0          0          0          0    GICv2  27 Level     kvm guest vtimer&#xA; 14:          0          0          0          0    GICv2  58 Edge      ttyAML6&#xA; 15:        109          0          0          0    GICv2 225 Edge      ttyAML0&#xA; 16:          0          0          0          0    GICv2 231 Edge      c8100100.cec&#xA; 17:          0          0          0          0    GICv2 249 Level     d0072000.mmc&#xA; 18:          0          0          0          0    GICv2 220 Edge      gxl-crypto&#xA; 19:          0          0          0          0    GICv2 221 Edge      gxl-crypto&#xA; 20:         89          0          0          0    GICv2 248 Level     d0070000.mmc&#xA; 21:     124767          0          0          0    GICv2 250 Level     d0074000.mmc&#xA; 23:      86139          0          0          0    GICv2 241 Edge      platformmhulink&#xA; 24:     903241          0          0          0    GICv2 242 Edge      platformmhulink&#xA; 25:          2          0          0          0    GICv2 105 Edge      c1108680.adc&#xA; 26:          0          0          0          0    GICv2 169 Level     arm-pmu&#xA; 27:          0          0          0          0    GICv2 170 Level     arm-pmu&#xA; 28:          0          0          0          0    GICv2 185 Level     arm-pmu&#xA; 29:          0          0          0          0    GICv2 186 Level     arm-pmu&#xA; 30:       1301          0          0          0    GICv2  35 Edge      meson&#xA; 31:       2056          0          0          0    GICv2  89 Edge      dwhdmitopirq, c883a000.hdmi-tx&#xA; 32:         21          0          0    3029612    GICv2  40 Level     eth0&#xA; 33:          0          0          0          0    GICv2  63 Level     c9100000.usb, c9100000.usb&#xA; 34:       2503          0   11186225          0    GICv2  62 Level     xhci-hcd:usb1&#xA; 35:         26          0          0          0    GICv2  41 Level     mdiomux-0.1:08&#xA; 38:         16          0          0          0    GICv2 228 Edge      mesonir&#xA; 39:          0          0          0          0    GICv2  76 Edge      vdec-mbox1&#xA; 40:          0          0          0          0    GICv2  64 Edge      esparserirq&#xA; 42:          0          0          0          0    GICv2 193 Level     gpmmu&#xA; 43:          0          0          0          0    GICv2 197 Level     ppmmu0&#xA; 44:          0          0          0          0    GICv2 199 Level     ppmmu1&#xA; 45:          0          0          0          0    GICv2 201 Level     ppmmu2&#xA; 46:          0          0          0          0    GICv2 192 Level     gp&#xA; 47:          0          0          0          0    GICv2 196 Level     pp0&#xA; 48:          0          0          0          0    GICv2 198 Level     pp1&#xA; 49:          0          0          0          0    GICv2 200 Level     pp2&#xA; 50:          0          0          0          0    GICv2 194 Level     ppbcast&#xA;IPI0:     43769      44509      51827      43352       Rescheduling interrupts&#xA;IPI1:   1981654    2376448     760236    3324099       Function call interrupts&#xA;IPI2:         0          0          0          0       CPU stop interrupts&#xA;IPI3:         0          0          0          0       CPU stop NMIs&#xA;IPI4:         0          0          0          0       Timer broadcast interrupts&#xA;IPI5:     58603     293691      50386      56088       IRQ work interrupts&#xA;IPI6:         0          0          0          0       CPU backtrace interrupts&#xA;IPI7:         0          0          0          0       KGDB roundup interrupts&#xA;Err:          0&#xA;&#xA;At some point, During it&#39;s workflows, One of the CPU core could be overworking than the rest of the other, Especially when it&#39;s doing certain workflows that involves what&#39;s on the hardware &amp; software itself (eg. wifi, lan, NFS, USB, etc).&#xA;&#xA;And you probably want something like irqbalance to be set up and running on your box:&#xA;sudo apt install irqbalance&#xA;sudo systemctl enable --now irqbalance&#xA;&#xA;---&#xA;&#xA;Trivia&#xA;&#xA;Given how similar the hardware that&#39;s in B860H V1 and HG680P, Especially the SOC (you can flash the same u-boot.bin and it will still boots!), You can probably follow this guide alongside the same HDMI dongle trickery on HG680P too&#xA;&#xA;especially when it&#39;s bootloader is broken (which i saw most HG680P had on), you can force Amlogic to boot the bootloader in microSDcard via the HDMI dongle like what i did here.&#xA;&#xA;They will still boot and will work, But the device tree for the hardware will be partially different and might conflict to each other, So during armbian-install, You must instead chose this:&#xA;105   s905x      HG680P                                        meson-gxl-s905x-p212.dtb                          &#xA;&#xA;Alternatively, if you don&#39;t have the HDMI dongle, you can bypass the eMMC boot on the HG680P and make the device boot from the SD card by shorting R162, 4C6, and GND on the motherboard simultaneously. The USB port can be used as the ground point. A pair of tweezers or a similar conductive tool can be used to make the connection (found by Jimed-rand).&#xA;&#xA;A similar method can be used on the B860H V1/V2 by shorting R87 to enter boot/recovery mode.&#xA;&#xA;Baffled?&#xA;&#xA;There&#39;s a YouTube Video that i made specifically for this. The video won&#39;t reexplain what has been mentioned on this page, So feel free to watch how it was done in raw.]]&gt;</description>
      <content:encoded><![CDATA[<p>This blog will cover the Armbian installation guide for B860H V1 / V2.</p>

<blockquote><p><strong>Caution</strong>: This model <strong>MUST not be confused</strong> with V5, as both revision have an entirely different hardware inside.</p></blockquote>

<p><img src="https://fedimedia.waltuh.cyou/media/bdf8086f0030eefb2e86241d9bfd9e1e9ce25e42edf31d691dec67600fe4f708.png" alt="B860H V1 STB Top">
<img src="https://fedimedia.waltuh.cyou/media/ca9fbbb48488e1a058f54a51067250d153fd09e6c4ac002f97b7d19bf9ee5dbf.png" alt="B860H V1 STB Bottom"></p>

<p>The method that&#39;s used here will not be requiring the set top box to be already rooted, or at most, outside of the stock rom. Assuming that the STB is still in the stock.</p>

<p>At best, It&#39;s recommended to do all of the flashing in Linux desktop, Otherwise the Windows equivalent exists, which i will talk about later.</p>
<ul><li><a href="#requirements" rel="nofollow">Requirements</a></li>
<li><a href="#installation" rel="nofollow">Installation</a>
<ul><li><a href="#1-flashing-the-armbian" rel="nofollow">Flashing the Armbian</a></li>
<li><a href="#2-flashing-the-u-boot" rel="nofollow">Flashing the U-Boot</a></li>
<li><a href="#flashing-tldr" rel="nofollow">Flashing TL;DR</a></li></ul></li>
<li><a href="#to-the-box" rel="nofollow">To the box...</a></li>
<li><a href="#installing-to-emmc" rel="nofollow">Installing to eMMC</a></li>
<li><a href="#extra-setting-up-zram" rel="nofollow">Extra: Setting up zram</a></li>
<li><a href="#extra-setting-up-irqbalance" rel="nofollow">Extra: Setting up <code>irqbalance</code></a></li>
<li><a href="#trivia" rel="nofollow">Trivia</a></li>
<li><a href="#baffled" rel="nofollow">Baffled?</a></li></ul>

<p>This guide also works on <strong>FiberHome HG680P</strong> box (however, check <a href="#trivia" rel="nofollow">Trivia</a>).</p>

<hr>

<h2 id="requirements">Requirements</h2>
<ul><li>A Personal Computer with microSD slot (otherwise, use microSD&lt;–&gt;USB adapter. These will work)</li>
<li>A microSD card (Use class 10 microSD card if you&#39;re going to use this as main)</li>
<li>A <a href="https://github.com/superna9999/linux/wiki/Amlogic-HDMI-Boot-Dongle" rel="nofollow">specifcally made HDMI Boot Dongle</a> which you can made yourself or by purchasing an already premade one via online store (id: <a href="https://shopee.co.id/search?keyword=hdmi%20fw%20bejat" rel="nofollow">Shopee Indonesia</a> | global: <a href="https://www.tindie.com/products/superna9999/meson-hdmi-recovery-boot-plug/" rel="nofollow">Tindie</a>)</li>
<li>The actual box itself (B860H) that can still be powered on regardless the boot state (LED is orange, or green, or whatever. does not matter it&#39;s rooted, still in stock, or not).</li>
<li><strong>Not copy and pasting blindly the attached commands</strong></li></ul>

<hr>

<h2 id="installation">Installation</h2>

<p>The B860H must use the HG680P U-Boot bootloader to work, Which you can obtain it from <a href="https://fedimedia.waltuh.cyou/media/7cfeb72fc6cc1b63af0c415de9e9117e88fb0e30c53c347b9cf6e008e62ac339.bin" rel="nofollow">here</a> (save it as <code>u-boot.bin</code>).</p>

<p>The following steps must be done in order.</p>

<h3 id="1-flashing-the-armbian">1. Flashing the Armbian</h3>

<p>You can obtain the Armbian image from <a href="https://github.com/ophub/amlogic-s9xxx-armbian/releases" rel="nofollow">ophub/amlogic-s9xxx-armbian</a>, With each consisting of different distros. For example, as of the time of this writing:
– <code>resolute</code> is a Ubuntu edition of Armbian OS
– <code>trixie</code> is a Debian edition of Armbian OS.</p>

<p>You will want to look for a release with the two keywords: <code>s905x</code>, and <code>b860h</code>. For example:</p>

<pre><code>Armbian_26.11.0_amlogic_s905x-b860h_trixie_6.18.51_server_2026.09.14.img.gz
</code></pre>

<p>Once you have downloaded it, Uncompress it:</p>

<pre><code>gzip -k -d -v Armbian_26.11.0_amlogic_s905x-b860h_trixie_6.18.51_server_2026.09.14.img.gz
</code></pre>

<blockquote><p><strong>Note</strong>: Adjust the filename with the release that you have downloaded.</p></blockquote>

<p>Insert a microSD card to be flashed on, check where it was located:</p>

<pre><code>yonle@yonle:/mnt$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mmcblk0     179:0    0  58.6G  0 disk 
├─mmcblk0p1 179:1    0   511M  0 part
└─mmcblk0p2 179:2    0  58.1G  0 part 
</code></pre>

<p>In this case, it&#39;s <code>/dev/mmcblk0</code></p>

<blockquote><p><strong>Special:</strong> If you&#39;re using an SDcard USB adapter, These usually are named with <code>sd[a...c]</code> prefix (example: <code>sdb</code>). It <strong>must not be confused with an existing main SATA drive</strong>.</p></blockquote>

<p>and then flash the Armbian image to the card:</p>

<pre><code>sudo dd if=Armbian_26.11.0_amlogic_s905x-b860h_trixie_6.18.51_server_2026.09.14.img of=/dev/mmcblk0 bs=4M status=progress

sync
</code></pre>

<p>(yes, <code>sync</code> <strong>IS a command</strong>)</p>

<p>Adjust <code>/dev/mmcblk0</code> to the path to your microSD slot, Which you can check via <code>lsblk</code> command.</p>

<blockquote><p><strong>Caution:</strong> Doing this will wipe ALL the datas that&#39;s in the microSD card. Please back up important stuff if there&#39;s one before proceeding.</p></blockquote>

<hr>

<p>There is no need to alter the BOOT partition after flashing as these will be done automatically during boot stage.</p>

<h3 id="2-flashing-the-u-boot">2. Flashing the U-Boot</h3>

<p>On Windows, Doing this step is essentially done by using a program called <strong><a href="https://wiki.coreelec.org/coreelec:aml_burncard" rel="nofollow">Amlogic Bootcard Maker</a></strong>.</p>

<p>Similarly, we can do the same on Linux.</p>

<p>Head to the directory where the earlier <code>u-boot.bin</code> is downloaded, for example:</p>

<pre><code>cd ~/Downloads
</code></pre>

<p>Then flash it:</p>

<pre><code>sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=1 count=442
sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=512 skip=1 seek=1

sync
</code></pre>

<p>And finally, <strong>Yeet the microSD card out</strong>.</p>

<h3 id="flashing-tl-dr">Flashing TL;DR</h3>

<p>To put it simply, The above tasks is simply:</p>

<pre><code>sudo dd if=Armbian_26.11.0_amlogic_s905x-b860h_trixie_6.18.51_server_2026.09.14.img of=/dev/mmcblk0 bs=4M status=progress
sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=1 count=442
sudo dd if=u-boot.bin of=/dev/mmcblk0 conv=fsync,notrunc bs=512 skip=1 seek=1

sync
</code></pre>

<h2 id="to-the-box">To the box...</h2>

<p><img src="https://fedimedia.waltuh.cyou/media/545e2e970beb6593993ec6a5ac8556bb675119704031c7674bb6670c5441fa9d.jpg" alt="the box, already on Linux"></p>

<p>You can determine whenever the box is already hacked or not, And it&#39;s usually determined via the LED indicator:
– If it&#39;s green, Chances are it&#39;s running Android.
– If it&#39;s orange, It&#39;s not using a regular android bootloader or is in emergency download mode</p>

<p>On a box with the factory Android rom inside, You usually <strong>cannot</strong> just insert the microSD right into the box, and then hopes it will boot immediately to what&#39;s on the microSD card. The stock bootloader will immediately boot to the Android OS anyway and then <strong>indirectly alter the BOOT partition</strong>, which is probably not what you wanted.</p>

<p><img src="https://fedimedia.waltuh.cyou/media/82f9ab3d32064e2692692734935ec6956f5d1edd4248367a0c4d6041d472e7cc.jpg" alt="the specialized HDMI dongle"></p>

<p>A specialized HDMI dongle is made specifically to make the bootloader on this box to boot whatever that&#39;s in the microSD card, supposedly for <strong>emergency / download mode</strong>.</p>

<hr>

<p>To check whenever this HDMI dongle is exactly what we wanted, We can use <code>i2cdetect</code> (installable via <code>i2c-tools</code>) to check the HDMI bus:</p>

<p>First, we will want to know which bus is the bus for the HDMI port in my laptop:</p>

<pre><code>yonle@yonle:~$ sudo i2cdetect -l
i2c-0	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
i2c-1	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
i2c-2	i2c       	i915 gmbus dpa                  	I2C adapter
i2c-3	i2c       	i915 gmbus dpb                  	I2C adapter
i2c-4	i2c       	i915 gmbus dpc                  	I2C adapter
</code></pre>

<p>On the above example, My bus is at <code>i2c-2</code>, Which is <code>i915 gmbus dpa</code> (notice the <code>dpX</code> prefix). From the <code>2</code> at the end of the <code>i2c-2</code>, Add it by <code>+1</code>, Which then: <code>3</code>.</p>

<p>So now we plug our HDMI dongle <strong>to our HDMI port in our laptop</strong>:</p>

<pre><code>yonle@yonle:~$ sudo i2cdetect -y -r 3
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- 52 -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --   
</code></pre>

<p>If this dongle is what we are looking for, In 0x50, There should have <code>52</code> in the third column just like shown above.</p>

<p>Then verify what&#39;s inside:</p>

<pre><code>yonle@yonle:~$ sudo i2cdump -y -r 0xf8-0xff 3 0x52
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
f0:                         62 6f 6f 74 40 53 44 43            boot@SDC
</code></pre>

<p>The string value must be <code>boot@SDC</code>.</p>

<hr>

<p>Now that we know that the dongle is exactly what we&#39;re looking for, Let&#39;s begin the installation process:</p>

<p>Now unplug the box from any power source,
– Insert the microSD card that we flashed earlier to the microSD card slot,
– Plug the HDMI dongle to the box</p>

<p>Then plug it to the power source, and <strong>pay attention to the power LED indicator</strong>, The green indicator must have turned into orange on this phase.</p>

<p>Keep in mind that the indicator <strong>MUST STAY on orange LED light</strong> for as long as <strong>15 seconds</strong> (it mustn&#39;t turn green on this phase, If it did, Then <strong>you&#39;re flashing it wrong!</strong>).</p>

<p>If after 15 seconds passed the LED is staying orange, You can now unplug the HDMI dongle and plug a HDMI cable from your TV/Monitor/CaptureCard to your box, You must see something resembling TTY:</p>

<p><img src="https://fedimedia.waltuh.cyou/media/472cbb7af8927860fa65a3c67f22afb440692f74d67bceea900a0b40ddac07dc.png" alt="the screen"></p>

<p>From there, Once you get into a phase where Armbian asks you for setup, There&#39;s two method you can do this:
1. Keyboard way: Plug your keyboard to the STB, and do set up from here
2. Networking: You want to set this box up via <code>ssh</code>: Plug a LAN cable from your router to the box, Check for it&#39;s IP address on the router page, and ssh into it:</p>

<pre><code>ssh root@10.42.x.x
</code></pre>

<p>The default password is <code>1234</code>. You will be asked for setup and a new password setup.</p>

<p><img src="https://fedimedia.waltuh.cyou/media/cbc2ea12755014669b6f06ab221e682c4c67a9221a0063679981efa82ae8b6ca.png" alt="The default ARMBian experience"></p>

<p>Once you&#39;re done, Then that&#39;s it. You&#39;re done installing Armbian to your microSD via your box, However <strong>you will still need to use that HDMI dongle to force it using U-Boot</strong>.</p>

<h2 id="making-u-boot-permanent">Making U-Boot permanent</h2>

<p>Just like earlier, Send the earlier <code>u-boot.bin</code> to the box via network:</p>

<pre><code>scp u-boot.bin root@10.42.xx.xx:u-boot.bin
</code></pre>

<p>Get into the shell, and check which MMC is our eMMC:</p>

<pre><code>root@armbian:~# lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
mmcblk1      179:0    0 58.6G  0 disk 
├─mmcblk1p1  179:1    0  511M  0 part /boot
└─mmcblk1p2  179:2    0 58.1G  0 part /
mmcblk2      179:32   0  7.3G  0 disk 
├─mmcblk2p1  179:33   0  511M  0 part 
└─mmcblk2p2  179:34   0  6.1G  0 part 
mmcblk2boot0 179:64   0    4M  1 disk 
mmcblk2boot1 179:96   0    4M  1 disk 
</code></pre>

<p>In this case, Since we&#39;re booting from SDcard, <code>mmcblk2</code> is our target, So:</p>

<pre><code>sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=1 count=442
sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=512 skip=1 seek=1
</code></pre>

<blockquote><p><strong>Caution:</strong> This will permanently wipe the android bootloader in the eMMC. If you plan to install Armbian to eMMC, Do <code>armbian-install</code> and reflash U-Boot to the eMMC via steps above again</p></blockquote>

<h2 id="installing-to-emmc">Installing to eMMC</h2>

<blockquote><p><strong>Caution</strong>: Doing the following will <strong>wipe what&#39;s in the eMMC</strong>, Which includes the Android base itself.</p></blockquote>

<p>Assuming you have been in the shell, run <code>armbian-install</code> as root:</p>

<pre><code>root@armbian:~# armbian-install 
[ STEPS ] Installing Armbian to internal eMMC...
[ STEPS ] Checking dependencies...
[ INFO ] Dependency check completed. Proceeding installation...
[ STEPS ] Initializing the environment...
[ INFO ] Use mainline u-boot: [ no ]
[ INFO ] Use ampart tool: [ no ]
[ INFO ] Show all devices: [ no ]
[ INFO ] Detected eMMC device: [ /dev/mmcblk2 ]
[ STEPS ] Start selecting device...
-----------------------------------------------------------------------------------------------------
ID    SOC        MODEL                                         DTB                                               
-----------------------------------------------------------------------------------------------------
101   s905d      Phicomm-N1                                    meson-gxl-s905d-phicomm-n1.dtb                    
102   s905d      Phicomm-N1(DMA-thresh)                        meson-gxl-s905d-phicomm-n1-thresh.dtb             
103   s905d      MECOOL-KI-Pro                                 meson-gxl-s905d-mecool-ki-pro.dtb                 
104   s905d      SML-5442TW                                    meson-gxl-s905d-sml5442tw.dtb                     
105   s905x      HG680P                                        meson-gxl-s905x-p212.dtb                          
106   s905x      B860H                                         meson-gxl-s905x-b860h.dtb                         
107   s905x      Nexbox-a95x                                   meson-gxl-s905x-nexbox-a95x.dtb                   
108   s905x      TX9                                           meson-gxl-s905x-tx9.dtb                           
109   s905x      T95,XiaoMI-3S,X96,BTV9                        meson-gxl-s905x-p212.dtb                          
110   s905x      TBee                                          meson-gxl-s905x-tbee.dtb                          
-----------------------------------------------------------------------------------------------------
111   s905w      TX3-Mini,MeCool-m8s-pro-W                     meson-gxl-s905w-tx3-mini.dtb                      
112   s905w      W95                                           meson-gxl-s905w-p281.dtb                          
113   s905w      X96-Mini                                      meson-gxl-s905w-x96-mini.dtb                      
114   s905w      X96W,FunTV,MXQ-Pro-4K                         meson-gxl-s905w-x96w.dtb                          
115   s905l      UNT402A,M201-S,MiBox-4C,IP108H,B860AV2.1      meson-gxl-s905l3b-m302a.dtb                       
116   s905l      MG101,Mibox-4,E900V21C,XiaoMI-4C              meson-gxl-s905l-venz-v10.dtb                      
117   s905l      Tencent-Aurora-1s                             meson-gxl-s905x-p212.dtb                          
118   s905l      ZXV10-B860AV2.1U,HM201                        meson-gxl-s905x-tx9.dtb                           
119   s905l2     MGV2000,MGV3000,M301A,CM201-1,IP108H          meson-gxl-s905l2-x7-5g.dtb                        
120   s905l2     E900v21E,MGV2000-K,e900v21d                   meson-gxl-s905l2-x7-5g.dtb                        
-----------------------------------------------------------------------------------------------------
121   s905l2     Wojia-TV-IPBS9505                             meson-gxl-s905l2-ipbs9505.dtb                     
122   s905l3     CM311-1,HG680-LC,M401A,UNT402A,CM201-1-6-YS   meson-gxl-s905l2-x7-5g.dtb                        
123   s905l3     CM211-1,M411A,B860AV3.2M,B860AV2.1U,M301A     meson-gxl-s905l3b-m302a.dtb                       
124   s905l3     UNT400G1,E900V22D-2,UNT400G,IP108H            meson-gxl-s905l2-x7-5g.dtb                        
125   s905l3     UNT402A,UNT400G                               meson-gxl-s905l3b-m302a.dtb                       
126   s905l3b    E900V21E,E900V22E,MGV2000/CW,M411A            meson-gxl-s905l3b-e900v22e.dtb                    
127   s905l3b    M302A,M304A,CM201-1,CM211-1,CM311-1           meson-gxl-s905l3b-m302a.dtb                       
128   s905l3b    UNT403A                                       meson-gxl-s905l3b-m302a.dtb                       
129   s905l3b    RG020ET-CA                                    meson-gxl-s905l3b-e900v22e.dtb                    
130   s905l3b    IP103H,TY1608,BV310,B860AV-2.1M               meson-gxl-s905l3b-m302a.dtb                       
-----------------------------------------------------------------------------------------------------
131   s905l3b    E900V22D,TY1608                               meson-gxl-s905l2-x7-5g.dtb                        
132   s905l3b    E900V21D,B860AV2.1-A                          meson-gxl-s905l2-x7-5g.dtb                        
133   s905mb     S65                                           meson-gxl-s905x-p212.dtb                          
134   s905lb     BesTV-R3300L,SumaVision-Q7,MG101              meson-gxl-s905x-p212.dtb                          
135   s905lb     Q96-mini                                      meson-gxl-s905x-p212.dtb                          
136   s905lb     IPBS9505                                      meson-gxl-s905l2-x7-5g.dtb                        
0     Other      Customize                                     Enter-custom-dtb-name                             
-----------------------------------------------------------------------------------------------------
[ OPTIONS ] Please Input ID: 106
</code></pre>

<p>Pick <code>106</code>, or B860H.</p>

<p>Pressing enter will tell you to pick filesystem type:</p>

<pre><code>[ INFO ] Input Box ID: [ 106 ]
[ INFO ] Model Name: [ B860H ]
[ INFO ] FDTFILE: [ meson-gxl-s905x-b860h.dtb ]
[ INFO ] MAINLINE_UBOOT: [  ]
[ INFO ] BOOTLOADER_IMG:  [  ]
[ INFO ] UBOOT_OVERLOAD: [ u-boot-p212.bin ]
[ INFO ] NEED_OVERLOAD: [ no ]
[ STEPS ] Selecting root filesystem type...
-----------------------------------------------
  ID   TYPE
-----------------------------------------------
  1    ext4
  2    btrfs
-----------------------------------------------
[ OPTIONS ] Please Input ID (1/2): 
</code></pre>

<p>Depending on your workload, you can use either <code>ext4</code> or <code>btrfs</code> for your eMMC. But if you&#39;re unsure, I&#39;d recommend <code>ext4</code>.</p>

<p>It has received plenty of improvements over the years, so it&#39;s not the same ext4 people might remember from years ago. It&#39;s still a very solid choice for eMMC.</p>

<p>From there, It will install the system to the eMMC from SDcard, which will take several minutes until it&#39;s finished.</p>

<p>After it&#39;s finished, Reflash U-Boot to the eMMC like how we flash it to microSD:</p>

<pre><code>sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=1 count=442
sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=512 skip=1 seek=1

sync
</code></pre>

<p>So:</p>

<pre><code>[ INFO ] Copying ROOTFS partition data...
[ INFO ] Copying [ etc ] ...
[ INFO ] Copying [ home ] ...
[ INFO ] Copying [ opt ] ...
[ INFO ] Copying [ root ] ...
[ INFO ] Copying [ selinux ] ...
[ INFO ] Copying [ srv ] ...
[ INFO ] Copying [ usr ] ...
[ INFO ] Copying [ var ] ...
[ INFO ] Generate the new fstab file.
[ INFO ] Update parameters related to the releases file.
[ SUCCESS ] Installation completed successfully. Run [ poweroff ], remove the installation media, then re-insert the power supply to boot the new system.
root@armbian:~# sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=1 count=442
442+0 records in
442+0 records out
442 bytes copied, 0.00554292 s, 79.7 kB/s
root@armbian:~# sudo dd if=u-boot.bin of=/dev/mmcblk2 conv=fsync,notrunc bs=512 skip=1 seek=1
4095+0 records in
4095+0 records out
2096640 bytes (2.1 MB, 2.0 MiB) copied, 0.1678 s, 12.5 MB/s
root@armbian:~# 
</code></pre>

<p>After these are all done, Run <code>poweroff</code>. Once it&#39;s off (the LED light will turn to green, Don&#39;t worry), Unplug from power source, <strong>now you can also unplug the microSD card</strong>.</p>

<p>And now let it boot into it&#39;s own glory by plugging the power source back, And lo and behold, Look. It runs <strong>without the microSD card!</strong>:</p>

<p><img src="https://fedimedia.waltuh.cyou/media/54b75ff1c293805d31f41b6d3af9cec25be725ee7a50f23add413517630fe3fa.png" alt="The Linux boot sequence"></p>

<h2 id="extra-setting-up-zram">Extra: Setting up zram</h2>

<p>This can save us some room in our RAM.</p>

<pre><code>sudo apt update &amp;&amp; sudo apt install systemd-zram-generator
sudo nano /etc/systemd/zram-generator.conf 
</code></pre>

<p>Put:</p>

<pre><code>[zram0]
zram-size = ram
compression-algorithm = lzo-rle zstd(level=3) (type=idle)
</code></pre>

<p>Save it (CTRL+S), Exit (CTRL+X), and load it:</p>

<pre><code>sudo systemctl daemon-reload
sudo systemctl start systemd-zram-setup@zram0.service
</code></pre>

<h2 id="extra-setting-up-irqbalance">Extra: Setting up <code>irqbalance</code></h2>

<pre><code>yonle@armbian:~$ cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3       
  9:          0          0          0          0    GICv2  25 Level     vgic
 11:   26055984   26123490   25924591   25663238    GICv2  30 Level     arch_timer
 12:          0          0          0          0    GICv2  27 Level     kvm guest vtimer
 14:          0          0          0          0    GICv2  58 Edge      ttyAML6
 15:        109          0          0          0    GICv2 225 Edge      ttyAML0
 16:          0          0          0          0    GICv2 231 Edge      c8100100.cec
 17:          0          0          0          0    GICv2 249 Level     d0072000.mmc
 18:          0          0          0          0    GICv2 220 Edge      gxl-crypto
 19:          0          0          0          0    GICv2 221 Edge      gxl-crypto
 20:         89          0          0          0    GICv2 248 Level     d0070000.mmc
 21:     124767          0          0          0    GICv2 250 Level     d0074000.mmc
 23:      86139          0          0          0    GICv2 241 Edge      platform_mhu_link
 24:     903241          0          0          0    GICv2 242 Edge      platform_mhu_link
 25:          2          0          0          0    GICv2 105 Edge      c1108680.adc
 26:          0          0          0          0    GICv2 169 Level     arm-pmu
 27:          0          0          0          0    GICv2 170 Level     arm-pmu
 28:          0          0          0          0    GICv2 185 Level     arm-pmu
 29:          0          0          0          0    GICv2 186 Level     arm-pmu
 30:       1301          0          0          0    GICv2  35 Edge      meson
 31:       2056          0          0          0    GICv2  89 Edge      dw_hdmi_top_irq, c883a000.hdmi-tx
 32:         21          0          0    3029612    GICv2  40 Level     eth0
 33:          0          0          0          0    GICv2  63 Level     c9100000.usb, c9100000.usb
 34:       2503          0   11186225          0    GICv2  62 Level     xhci-hcd:usb1
 35:         26          0          0          0    GICv2  41 Level     mdio_mux-0.1:08
 38:         16          0          0          0    GICv2 228 Edge      meson_ir
 39:          0          0          0          0    GICv2  76 Edge      vdec-mbox1
 40:          0          0          0          0    GICv2  64 Edge      esparserirq
 42:          0          0          0          0    GICv2 193 Level     gpmmu
 43:          0          0          0          0    GICv2 197 Level     ppmmu0
 44:          0          0          0          0    GICv2 199 Level     ppmmu1
 45:          0          0          0          0    GICv2 201 Level     ppmmu2
 46:          0          0          0          0    GICv2 192 Level     gp
 47:          0          0          0          0    GICv2 196 Level     pp0
 48:          0          0          0          0    GICv2 198 Level     pp1
 49:          0          0          0          0    GICv2 200 Level     pp2
 50:          0          0          0          0    GICv2 194 Level     pp_bcast
IPI0:     43769      44509      51827      43352       Rescheduling interrupts
IPI1:   1981654    2376448     760236    3324099       Function call interrupts
IPI2:         0          0          0          0       CPU stop interrupts
IPI3:         0          0          0          0       CPU stop NMIs
IPI4:         0          0          0          0       Timer broadcast interrupts
IPI5:     58603     293691      50386      56088       IRQ work interrupts
IPI6:         0          0          0          0       CPU backtrace interrupts
IPI7:         0          0          0          0       KGDB roundup interrupts
Err:          0
</code></pre>

<p>At some point, During it&#39;s workflows, One of the CPU core could be overworking than the rest of the other, Especially when it&#39;s doing certain workflows that involves what&#39;s on the hardware &amp; software itself (eg. wifi, lan, NFS, USB, etc).</p>

<p>And you probably want something like <code>irqbalance</code> to be set up and running on your box:</p>

<pre><code>sudo apt install irqbalance
sudo systemctl enable --now irqbalance
</code></pre>

<hr>

<h2 id="trivia">Trivia</h2>

<p>Given how similar the hardware that&#39;s in B860H V1 and HG680P, Especially the SOC (you can flash the same <code>u-boot.bin</code> and it will still boots!), You can probably follow this guide alongside the same HDMI dongle trickery on HG680P too</p>

<p>especially when it&#39;s bootloader is broken (which i saw most HG680P had on), you can force Amlogic to boot the bootloader in microSDcard via the HDMI dongle like what i did here.</p>

<p>They will still boot and will work, But the device tree for the hardware will be partially different and might conflict to each other, So during <code>armbian-install</code>, You must instead chose this:</p>

<pre><code>105   s905x      HG680P                                        meson-gxl-s905x-p212.dtb                          
</code></pre>

<p>Alternatively, if you don&#39;t have the HDMI dongle, you can bypass the eMMC boot on the HG680P and make the device boot from the SD card by shorting <strong>R162</strong>, <strong>4C6</strong>, and <strong>GND</strong> on the motherboard simultaneously. The USB port can be used as the ground point. A pair of tweezers or a similar conductive tool can be used to make the connection (found by <a href="https://en.opensuse.org/User:Jimed-rand" rel="nofollow">Jimed-rand</a>).</p>

<p>A similar method can be used on the <strong>B860H V1/V2</strong> by shorting <strong>R87</strong> to enter boot/recovery mode.</p>

<h1 id="baffled">Baffled?</h1>

<p>There&#39;s a <a href="https://www.youtube.com/watch?v=fvw97b-9Ag8" rel="nofollow">YouTube Video</a> that i made specifically for this. The video won&#39;t reexplain what has been mentioned on this page, So feel free to watch how it was done in raw.</p>
]]></content:encoded>
      <author>Yonle</author>
      <guid>https://pen.waltuh.cyou/read/a/sar0m5h8kt</guid>
      <pubDate>Mon, 14 Sep 2026 20:20:35 +0000</pubDate>
    </item>
    <item>
      <title>Dua Dadang yang aku kenal semenjak mengenal pemerintah Kabupaten Bandung</title>
      <link>https://pen.waltuh.cyou/jimedrand/dua-dadang-yang-aku-kenal-semenjak-mengenal-pemerintah-kabupaten-bandung</link>
      <description>&lt;![CDATA[Dadang M. Naser&#xA;Kang Dadang M. Naser&#xA;&#xA;Dadang Supriatna&#xA;Kang Dadang Supriatna anu BEDAS&#xA;&#xA;Pembukaan&#xA;&#xA;Dari semenjak aku masih kelas 1 SD (2010) hingga masa kuliah saat ini (2026), aku sudah melalui banyak kehidupan dalam masa pemerintahan kedua Dadang ini yang membawa banyak perubahan di tempat kelahiran aku, yakni Kabupaten Bandung.&#xA;&#xA;Yang selalu aku perhatikan dari mereka ketika menjabat sebagai bupati Bandung, baik kang Dadang Naser maupun kang DS (Dadang Supriatna) yang saat ini menjabat yakni janji manis mereka yang sebenarnya masih banyak kendala dalam pelaksanaan dan hingga saat ini masih belum selesai masalah tersebut. &#xA;&#xA;Kedua Dadang ini berhasil mengubah Kabupaten Bandung menjadi salah satu wilayah administratif yang mulai berkembang pesat, akan tetapi masalah birokrasi masih ada aja terjadi (yang salah bukan mereka yang menjabat, tapi para pejabat dan rakyat nya sulit koordinatif).&#xA;&#xA;Masalahnya apa?&#xA;&#xA;Masing-masing dari kedua Dadang ini memiliki visi misi yang berbeda-beda dalam menjalankan pemerintahannya, tetapi punya satu tujuan yang sama dalam artian luas. Salah satunya yakni infrastruktur. Selama mereka menjabat, banyak sekali perubahan yang dilakukan dalam perjalanan mereka dalam menjalankan pemerintahan yang berusaha memenuhi prinsip good governance. Akan tetapi, mereka juga masih banyak pertimbangan dalam menentukan kebijakan tertentu yang berdampak bagi warganya.&#xA;&#xA;Ketika Kang Dadang Naser tak lagi menjabat sebagai Bupati, beliau tahu bahwa apa yang dikerjakan beliau saat menjabat semuanya masih ada yang belum sempurna, dan pada akhirnya beliau memutuskan untuk menjadi anggota DPR RI (dari mencalonkan hingga terpilih ketika Pemilu 2024) sebagai alat bantu untuk menyampaikan aspirasi rakyat dan usahanya yang sudah terbangun saat masih menjadi bupati menjadi bahan evaluasi yang perlu dijalani hasil evaluasi nya. Di sisi lain, beliau yang berasal dari Ciparay ini juga merupakan DKM dari masjid Al-Karomah di Ciparay.&#xA;&#xA;Nah, terus bagaimana dengan Kang DS? Beliau menurut aku awalnya seperti kurang serius, tetapi setelah 2 tahun menjabat akhirnya beneran serius dalam menjalankan program yang beliau rencanakan waktu Pilbup lalu, salah satunya fokus ke infrastruktur dan program BEDAS lainnya yang beliau rencanakan. Beberapa rumah sakit dengan nama BEDAS beneran dibangun dan beberapa jalanan kampung beneran di cor. Insentif ke guru pengajian juga salah satu program beliau yang membuat warga di Kabupaten Bandung pada tertarik. Namun ya, di sisi lain masih ada ketimpangan dan pelaksanaan yang kurang matang.&#xA;&#xA;Di era Kang DS, beliau juga membangun program &#34;Bewara DS&#34; yang sebenarnya menyediakan layanan Internet gratis di wilayah kerja dan wilayah tertentu yang ditujuk, tetapi pada nyatanya mereka hanya diletakkan di balai desa yang jarang menyediakan lounge untuk warganya menggunakan internet publik tersebut, dan juga tidak semua fasilitas milik penerintah kabupaten tercover dalam program tersebut&#xA;&#xA;Jadi, evaluasi nya bagaimana buat bupati sekarang?&#xA;&#xA;Kang DS yang saat ini menjabat di masa kedua, tolonglah revisi lagi apa yang sudah pernah dijalankan di masa pertama dan matangkan kembali goal dan plan yang sudah dibangun selama ini dan usahakan untuk mendengarkan aspirasi rakyat&#xA;&#xA;Disclaimer kecil&#xA;&#xA;Tulisan ini hanya mencatat soal pengalaman kedua Dadang ini saat menjadi bupati Bandung, tidak bermaksud untuk merendahkan mereka berdua atau berniat buruk lainnya. AKu hanya menilai dari sisi perspektif aku saja. Jika ada yang salah, mohon maaf dan hubungi aku untuk koreksi artikel ini.&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://wartaparahyangan.com/wp-content/uploads/2020/12/10tahun3-768x498.jpg" alt="Dadang M. Naser">
<em>Kang Dadang M. Naser</em></p>

<p><img src="https://sergap.co.id/wp-content/uploads/2025/02/WhatsApp-Image-2025-02-10-at-14.11.20-scaled-e1739180291334.jpeg" alt="Dadang Supriatna">
<em>Kang Dadang Supriatna anu BEDAS</em></p>

<h2 id="pembukaan">Pembukaan</h2>

<p>Dari semenjak aku masih kelas 1 SD (2010) hingga masa kuliah saat ini (2026), aku sudah melalui banyak kehidupan dalam masa pemerintahan kedua Dadang ini yang membawa banyak perubahan di tempat kelahiran aku, yakni Kabupaten Bandung.</p>

<p>Yang selalu aku perhatikan dari mereka ketika menjabat sebagai bupati Bandung, baik kang Dadang Naser maupun kang DS (Dadang Supriatna) yang saat ini menjabat yakni janji manis mereka yang sebenarnya masih banyak kendala dalam pelaksanaan dan hingga saat ini masih belum selesai masalah tersebut.</p>

<p>Kedua Dadang ini berhasil mengubah Kabupaten Bandung menjadi salah satu wilayah administratif yang mulai berkembang pesat, akan tetapi masalah birokrasi masih ada aja terjadi (yang salah bukan mereka yang menjabat, tapi para pejabat dan rakyat nya sulit koordinatif).</p>

<h2 id="masalahnya-apa">Masalahnya apa?</h2>

<p>Masing-masing dari kedua Dadang ini memiliki visi misi yang berbeda-beda dalam menjalankan pemerintahannya, tetapi punya satu tujuan yang sama dalam artian luas. Salah satunya yakni infrastruktur. Selama mereka menjabat, banyak sekali perubahan yang dilakukan dalam perjalanan mereka dalam menjalankan pemerintahan yang berusaha memenuhi prinsip <em>good governance</em>. Akan tetapi, mereka juga masih banyak pertimbangan dalam menentukan kebijakan tertentu yang berdampak bagi warganya.</p>

<p>Ketika Kang Dadang Naser tak lagi menjabat sebagai Bupati, beliau tahu bahwa apa yang dikerjakan beliau saat menjabat semuanya masih ada yang belum sempurna, dan pada akhirnya beliau memutuskan untuk menjadi anggota DPR RI (dari mencalonkan hingga terpilih ketika Pemilu 2024) sebagai alat bantu untuk menyampaikan aspirasi rakyat dan usahanya yang sudah terbangun saat masih menjadi bupati menjadi bahan evaluasi yang perlu dijalani hasil evaluasi nya. Di sisi lain, beliau yang berasal dari Ciparay ini juga merupakan DKM dari masjid Al-Karomah di Ciparay.</p>

<p>Nah, terus bagaimana dengan Kang DS? Beliau menurut aku awalnya seperti kurang serius, tetapi setelah 2 tahun menjabat akhirnya beneran serius dalam menjalankan program yang beliau rencanakan waktu Pilbup lalu, salah satunya fokus ke infrastruktur dan program BEDAS lainnya yang beliau rencanakan. Beberapa rumah sakit dengan nama BEDAS beneran dibangun dan beberapa jalanan kampung beneran di cor. Insentif ke guru pengajian juga salah satu program beliau yang membuat warga di Kabupaten Bandung pada tertarik. Namun ya, di sisi lain masih ada ketimpangan dan pelaksanaan yang kurang matang.</p>

<p>Di era Kang DS, beliau juga membangun program “Bewara DS” yang sebenarnya menyediakan layanan Internet gratis di wilayah kerja dan wilayah tertentu yang ditujuk, tetapi pada nyatanya mereka hanya diletakkan di balai desa yang jarang menyediakan <em>lounge</em> untuk warganya menggunakan internet publik tersebut, dan juga tidak semua fasilitas milik penerintah kabupaten tercover dalam program tersebut</p>

<h2 id="jadi-evaluasi-nya-bagaimana-buat-bupati-sekarang">Jadi, evaluasi nya bagaimana buat bupati sekarang?</h2>

<p>Kang DS yang saat ini menjabat di masa kedua, tolonglah revisi lagi apa yang sudah pernah dijalankan di masa pertama dan matangkan kembali goal dan plan yang sudah dibangun selama ini dan usahakan untuk mendengarkan aspirasi rakyat</p>

<h2 id="disclaimer-kecil">Disclaimer kecil</h2>

<p>Tulisan ini hanya mencatat soal pengalaman kedua Dadang ini saat menjadi bupati Bandung, tidak bermaksud untuk merendahkan mereka berdua atau berniat buruk lainnya. AKu hanya menilai dari sisi perspektif aku saja. Jika ada yang salah, mohon maaf dan hubungi aku untuk koreksi artikel ini.</p>
]]></content:encoded>
      <author>Jim&#39;s Personal Blog</author>
      <guid>https://pen.waltuh.cyou/read/a/hezh2ntglw</guid>
      <pubDate>Sat, 05 Sep 2026 13:43:12 +0000</pubDate>
    </item>
    <item>
      <title>Been a while since a last time I am writing here</title>
      <link>https://pen.waltuh.cyou/jimedrand/been-a-while-since-a-last-time-i-am-writing-here</link>
      <description>&lt;![CDATA[You see my personal blog hasn&#39;t much updated, not because I am lazy to give an update, but because I am busy with some of stuff that I am managing and working for, and also I would like to continue my personal writing here, but NOT anymore for dumping, but rather than sharing the stuff I want to tell people about&#xA;&#xA;Sometimes I am looking stupid, sometime I am looking insightful, yeah that&#39;s part of Autism which I am facing until now. And the thing I need to control is:&#xA;&#xA;controllable behavior&#xA;languages&#xA;lust of something&#xA;circle of emotion&#xA;&#xA;Also, as of the time I am writing this, I have new allergen of some seafood that makes me heavy influenza and has impact to body immune. Also, my dead teeth which has been patched is sick again. I am feeling like I am in the hell of the world.&#xA;&#xA;For now, that&#39;s it from me. This post is just update of my condition right now, which soon would be outdated.]]&gt;</description>
      <content:encoded><![CDATA[<p>You see my personal blog hasn&#39;t much updated, not because I am lazy to give an update, but because I am busy with some of stuff that I am managing and working for, and also I would like to continue my personal writing here, but NOT anymore for dumping, but rather than sharing the stuff I want to tell people about</p>

<p>Sometimes I am looking stupid, sometime I am looking insightful, yeah that&#39;s part of Autism which I am facing until now. And the thing I need to control is:</p>
<ul><li>controllable behavior</li>
<li>languages</li>
<li>lust of something</li>
<li>circle of emotion</li></ul>

<p>Also, as of the time I am writing this, I have new allergen of some seafood that makes me heavy influenza and has impact to body immune. Also, my dead teeth which has been patched is sick again. I am feeling like I am in the hell of the world.</p>

<p>For now, that&#39;s it from me. <em>This post is just update of my condition right now, which soon would be outdated.</em></p>
]]></content:encoded>
      <author>Jim&#39;s Personal Blog</author>
      <guid>https://pen.waltuh.cyou/read/a/kmo0fsqx6x</guid>
      <pubDate>Thu, 03 Sep 2026 22:17:03 +0000</pubDate>
    </item>
    <item>
      <title>the reason i still keep making small tools and publishing it.</title>
      <link>https://pen.waltuh.cyou/yonle/the-reason-i-still-keep-making-small-tools-and-publishing-it</link>
      <description>&lt;![CDATA[I have one funny reason that still keeps me up doing it despite being a bit lazy.&#xA;&#xA;I encountered a problem that has no optional fix around it that i wanted so i had to create one to solve the damn problem in any way myself. To be frank, i moved on and had a burnout a lot, but even so, i still began to create another kind of tool for myself, and if that still interests me, i often try to maintain it.&#xA;&#xA;the thing is that, open source or foss stuff is not really my first passion to begin with when the first time i managed to code stuff by myself (that was before chatgpt even existed, god lord!)&#xA;&#xA;and to this day, even though it seems like that i contribute to the open source / foss spaces with my own code being published for free, i wasn&#39;t here to contribute to the environment actually. i simply made a tool, once found it usable for myself, i simply share it as both archival/preservation and for other to be able to use my thing. because i do not like it when the thing that i code wasn&#39;t being used by anyone other than myself.&#xA;&#xA;i might looked like helping some project by sending PR to them to fix certain bug, I might do helping them, yes. But the initial idea is still pretty much because i use their thing, and their thing is problematic, then finally it&#39;s technically resolveable, and somehow that&#39;s the healthier position for me.&#xA;&#xA;Thing is, i liked creating and then expecting people to use it.&#xA;&#xA;Because i do not like making a project that had no user.&#xA;&#xA;and because i want to have people use my tools, i tend to make some of my projects flexible and controllable while still being easy to use.&#xA;&#xA;for example, vsink, a project of mine that does some stuff with virtual pulseaudio sink, have these options:&#xA;$ vsink -help&#xA;Usage of vsink:&#xA;  -bypass string&#xA;    &#x9;Comma-separated application names to bypass capture&#xA;  -defaultSinkMode&#xA;    &#x9;Set the virtual sink as default sink. May help with some apps, but can cause issues with volume control.&#xA;  -monitor string&#xA;    &#x9;Comma-separated application names whose recordings should use the capture sink monitor&#xA;  -noLoopback&#xA;    &#x9;Disable loopback. Any app in the virtual sink will not be played back to the main speaker (except bypassed apps)&#xA;  -onlyCapture string&#xA;    &#x9;Comma-separated application names to exclusively capture into the capture sink&#xA;  -vSinkName string&#xA;    &#x9;The name of the virtual sink (default &#34;SystemCaptureSink&#34;)&#xA;&#xA;also, go-bwhero, an image compressor/thumbnailer proxy have these options:&#xA;$ ./go-bwhero -help&#xA;2026/08/20 13:28:14 bwhero, rewritten backend.&#xA;Usage of ./go-bwhero:&#xA;  -animSizeLimit int&#xA;    &#x9;Original animation size limit in bytes (default -1)&#xA;  -imgSizeLimit int&#xA;    &#x9;Original image size limit in bytes (default -1)&#xA;  -listen string&#xA;    &#x9;Listen address (default &#34;localhost:8080&#34;)&#xA;  -userAgent string&#xA;    &#x9;User agent that go-bwhero should use. (default &#34;Mozilla/5.0; go-bwhero [https://github.com/Yonle/bwhero]&#34;)&#xA;  -videoSizeLimit int&#xA;    &#x9;Original video size limit in bytes (default -1)&#xA;  -vipsConcurrencyLevel int&#xA;    &#x9;libvips concurrency level to use&#xA;  -workers int&#xA;    &#x9;Amount of workers to spawn (default 8)&#xA;&#xA;and the most obvious one, unlockata, a tool for doing ATA security on ATA storage drives, have these options too:&#xA;$ unlockata -help&#xA;Usage of unlockata:&#xA;  -device string&#xA;    &#x9;ATA device (&#34;list&#34; to list ATA devices)&#xA;  -master&#xA;    &#x9;use the ATA master password instead of the user password&#xA;  -maximum&#xA;    &#x9;use maximum security level&#xA;  -noreadpart&#xA;    &#x9;do not reread the partition table after the ATA command&#xA;  -op string&#xA;    &#x9;ATA security operation (&#34;help&#34; to list supported operations) (default &#34;unlock&#34;)&#xA;  -passwd string&#xA;    &#x9;Path to 32-byte binary password file&#xA;  -serial string&#xA;    &#x9;ATA device serial number (&#34;list&#34; to list ATA devices)&#xA;  -verbose&#xA;    &#x9;show CDB and Payload bytes being transmitted to the ATA drive.&#xA;&#xA;$ unlockata -device test -op help&#xA;Available ATA security operations:&#xA;  set              SECURITY SET PASSWORD (0xf1)&#xA;  unlock           SECURITY UNLOCK (0xf2)&#xA;  freeze           SECURITY FREEZE LOCK (0xf5)&#xA;  erase            SECURITY ERASE UNIT (0xf4)&#xA;  erase-prepare    SECURITY ERASE PREPARE (0xf3)&#xA;  disable          SECURITY DISABLE PASSWORD (0xf6)&#xA;&#xA;from there you can really see which part i really tried my best to convince people to use it in the most indirect way possible.&#xA;&#xA;---&#xA;&#xA;despite all of that, i do have one very common problem though. if the tool that i create already has a perfect code that then i had no idea what to add or what to fix let alone improve, most of the times, these became pretty much a stall,&#xA;&#xA;which is funnily what happened with most of my go projects. but i don&#39;t think i should worry these though given how safe go already is (compared to javascript, heh)&#xA;&#xA;well. with all that being said, now you know why i&#39;m still around and still interested experimenting random things.&#xA;&#xA;but yes. the fact that i use go is deadly for everyone.&#xA;&#xA;cuz i have no longer need to suffer through python, node, c, c++, c##, lua, perl, java, erlang, or even rust problems just to fight one problem]]&gt;</description>
      <content:encoded><![CDATA[<p>I have one funny reason that still keeps me up doing it despite being a bit lazy.</p>

<p>I encountered a problem that has no optional fix around it that i wanted so i had to create one to solve the damn problem in any way myself. To be frank, i moved on and had a burnout a lot, but even so, i still began to create another kind of tool for myself, and if that still interests me, i often try to maintain it.</p>

<p>the thing is that, open source or foss stuff is not really my first passion to begin with when the first time i managed to code stuff by myself (that was before chatgpt even existed, god lord!)</p>

<p>and to this day, even though it seems like that i contribute to the open source / foss spaces with my own code being published for free, i wasn&#39;t here to contribute to the environment actually. i simply made a tool, once found it usable for myself, i simply share it as both archival/preservation and for other to be able to use my thing. because i do not like it when the thing that i code wasn&#39;t being used by anyone other than myself.</p>

<p>i might looked like helping some project by sending PR to them to fix certain bug, I might do helping them, yes. But the initial idea is still pretty much because i use their thing, and their thing is problematic, then finally it&#39;s technically resolveable, and somehow that&#39;s the healthier position for me.</p>

<p>Thing is, i liked creating and then expecting people to use it.</p>

<p>Because i do not like making a project that had no user.</p>

<p>and because i want to have people use my tools, i tend to make some of my projects flexible and controllable while still being easy to use.</p>

<p>for example, <a href="https://github.com/Yonle/vsink" rel="nofollow">vsink</a>, a project of mine that does some stuff with virtual pulseaudio sink, have these options:</p>

<pre><code>$ vsink -help
Usage of vsink:
  -bypass string
    	Comma-separated application names to bypass capture
  -defaultSinkMode
    	Set the virtual sink as default sink. May help with some apps, but can cause issues with volume control.
  -monitor string
    	Comma-separated application names whose recordings should use the capture sink monitor
  -noLoopback
    	Disable loopback. Any app in the virtual sink will not be played back to the main speaker (except bypassed apps)
  -onlyCapture string
    	Comma-separated application names to exclusively capture into the capture sink
  -vSinkName string
    	The name of the virtual sink (default &#34;SystemCaptureSink&#34;)
</code></pre>

<p>also, <a href="https://github.com/Yonle/go-bwhero" rel="nofollow">go-bwhero</a>, an image compressor/thumbnailer proxy have these options:</p>

<pre><code>$ ./go-bwhero -help
2026/08/20 13:28:14 bwhero, rewritten backend.
Usage of ./go-bwhero:
  -animSizeLimit int
    	Original animation size limit in bytes (default -1)
  -imgSizeLimit int
    	Original image size limit in bytes (default -1)
  -listen string
    	Listen address (default &#34;localhost:8080&#34;)
  -userAgent string
    	User agent that go-bwhero should use. (default &#34;Mozilla/5.0; go-bwhero [https://github.com/Yonle/bwhero]&#34;)
  -videoSizeLimit int
    	Original video size limit in bytes (default -1)
  -vipsConcurrencyLevel int
    	libvips concurrency level to use
  -workers int
    	Amount of workers to spawn (default 8)
</code></pre>

<p>and the most obvious one, <a href="https://github.com/Yonle/unlockata" rel="nofollow">unlockata</a>, a tool for doing ATA security on ATA storage drives, have these options too:</p>

<pre><code>$ unlockata -help
Usage of unlockata:
  -device string
    	ATA device (&#34;list&#34; to list ATA devices)
  -master
    	use the ATA master password instead of the user password
  -maximum
    	use maximum security level
  -noreadpart
    	do not reread the partition table after the ATA command
  -op string
    	ATA security operation (&#34;help&#34; to list supported operations) (default &#34;unlock&#34;)
  -passwd string
    	Path to 32-byte binary password file
  -serial string
    	ATA device serial number (&#34;list&#34; to list ATA devices)
  -verbose
    	show CDB and Payload bytes being transmitted to the ATA drive.

$ unlockata -device test -op help
Available ATA security operations:
  set              SECURITY SET PASSWORD (0xf1)
  unlock           SECURITY UNLOCK (0xf2)
  freeze           SECURITY FREEZE LOCK (0xf5)
  erase            SECURITY ERASE UNIT (0xf4)
  erase-prepare    SECURITY ERASE PREPARE (0xf3)
  disable          SECURITY DISABLE PASSWORD (0xf6)
</code></pre>

<p>from there you can really see which part i really tried my best to convince people to use it in the most indirect way possible.</p>

<hr>

<p>despite all of that, i do have one very common problem though. if the tool that i create already has a perfect code that then i had no idea what to add or what to fix let alone improve, most of the times, these became pretty much a stall,</p>

<p>which is funnily what happened with most of my go projects. but i don&#39;t think i should worry these though given how safe go already is (compared to javascript, heh)</p>

<p>well. with all that being said, now you know why i&#39;m still around and still interested experimenting random things.</p>

<p>but yes. the fact that i use go is deadly for everyone.</p>

<p>cuz i have no longer need to suffer through python, node, c, c++, c##, lua, perl, java, erlang, or even rust problems just to fight one problem</p>
]]></content:encoded>
      <author>Yonle</author>
      <guid>https://pen.waltuh.cyou/read/a/y6wqxwo98y</guid>
      <pubDate>Thu, 20 Aug 2026 06:24:42 +0000</pubDate>
    </item>
    <item>
      <title>The monthly journal of youth me: #3</title>
      <link>https://pen.waltuh.cyou/yonle/the-monthly-journal-of-youth-me-3</link>
      <description>&lt;![CDATA[I do not like to be forced to explain something that i&#39;m personally not comfortable to talk about. And when that happens, I always hung up the phone immediately. That&#39;s exactly what happened to me this week.&#xA;&#xA;My Mum dialed me and asked whenever the tuition has been paid. It has been a week, But it hasn&#39;t. I told her that, and then hung up immediately as i knew that she will ask me many thousands of times and then teach me how to &#34;scold my Dad to do it immediately&#34;.&#xA;&#xA;And as i guessed, She called me back. But the moment i hear the first 3 words of the same thing, I hung up immediately, again. Several minutes after i write this, She dialed. Again. Was about to ask the same question again, Which then i hung up again. Immediately.&#xA;&#xA;I did tell her several weeks ago, Or many times that i do not like to be forced to answer some of his questions. But she doesn&#39;t like that answer and then said that i&#39;m basically the same as my Dad, and &#34;his Big Son doesn&#39;t like her&#34;.&#xA;&#xA;So that&#39;s basically another reason on why i always hung up my phone immediately and always reconsider myself every time i was planning to go back to my hometown. Because if i did so, She will go with that same darn heavy set of lines once again. That includes when i refuse his solution. too.&#xA;&#xA;Well. It&#39;s always been like that. At some other day, His instict to always corner my Dad to send her money (which is normal, basically. I can&#39;t blame her) nearly everyday 3 times a day basically led my Dad to literally block his number immediately.&#xA;&#xA;He wasn&#39;t really refusing to send money to my Mum. I did send some sum of money that my Dad told me to sent to my Mom via my Uncle&#39;s Bank account (since we&#39;re in remote town), But when she heard that i&#39;m the one that send it to her, She&#39;s very dead picky and refuse to accept the money and insisted that i should keep it for myself (while that money is actually reserved for her. Not me).&#xA;&#xA;Speaking of which, The same situation that she already led into already causes me to block her 2 times for 2 straight months before. And that&#39;s me being called &#34;dark-minded&#34;, &#34;disobedient&#34;, and then the most legendary &#34;why should you even exists if i knew you will grow like this&#34; and finally &#34;if i were reborn once again, I swear to myself that i do not want to have a husband and a child&#34;.&#xA;&#xA;From there, You can see why i hung up my phone on her immediately.&#xA;&#xA;and there you have it.&#xA;&#xA;This is basically the everyday life of mine. But whenever i accept myself to become some kind of beggar is something else.]]&gt;</description>
      <content:encoded><![CDATA[<p>I do not like to be forced to explain something that i&#39;m personally not comfortable to talk about. And when that happens, I always hung up the phone immediately. That&#39;s exactly what happened to me this week.</p>

<p>My Mum dialed me and asked whenever the tuition has been paid. It has been a week, But it hasn&#39;t. I told her that, and then hung up immediately as i knew that she will ask me many thousands of times and then teach me how to “scold my Dad to do it immediately”.</p>

<p>And as i guessed, She called me back. But the moment i hear the first 3 words of the same thing, I hung up immediately, again. Several minutes after i write this, She dialed. Again. Was about to ask the same question again, Which then i hung up again. Immediately.</p>

<p>I did tell her several weeks ago, Or many times that i do not like to be forced to answer some of his questions. But she doesn&#39;t like that answer and then said that i&#39;m basically the same as my Dad, and “his Big Son doesn&#39;t like her”.</p>

<p>So that&#39;s basically another reason on why i always hung up my phone immediately and always reconsider myself every time i was planning to go back to my hometown. Because if i did so, She will go with that same darn heavy set of lines once again. That includes when i refuse his solution. too.</p>

<p>Well. It&#39;s always been like that. At some other day, His instict to always corner my Dad to send her money (which is normal, basically. I can&#39;t blame her) nearly everyday 3 times a day basically led my Dad to literally block his number immediately.</p>

<p>He wasn&#39;t really refusing to send money to my Mum. I did send some sum of money that my Dad told me to sent to my Mom via my Uncle&#39;s Bank account (since we&#39;re in remote town), But when she heard that i&#39;m the one that send it to her, She&#39;s very dead picky and refuse to accept the money and insisted that i should keep it for myself (while that money is actually reserved for her. Not me).</p>

<p>Speaking of which, The same situation that she already led into already causes me to block her 2 times for 2 straight months before. And that&#39;s me being called “dark-minded”, “disobedient”, and then the most legendary “why should you even exists if i knew you will grow like this” and finally <strong>“if i were reborn once again, I swear to myself that i do not want to have a husband and a child”</strong>.</p>

<p>From there, You can see why i hung up my phone on her immediately.</p>

<p>and there you have it.</p>

<p>This is basically the everyday life of mine. But whenever i accept myself to become some kind of beggar is something else.</p>
]]></content:encoded>
      <author>Yonle</author>
      <guid>https://pen.waltuh.cyou/read/a/ro3beewvmm</guid>
      <pubDate>Sun, 16 Aug 2026 07:17:29 +0000</pubDate>
    </item>
    <item>
      <title>20 Hal yang Membuat Saya Senang</title>
      <link>https://pen.waltuh.cyou/hiki/20-hal-yang-membuat-saya-senang</link>
      <description>&lt;![CDATA[Berikut merupakan 20 hal yang membuat saya senang (setelah saya pikir-pikir):&#xA;&#xA;Dapat makan makanan yang disuka&#xA;&#xA;Entah itu kebab, nasi goreng, sushi, ramen, atau curry, makan makanan yang disuka dapat menenangkan saya.&#xA;&#xA;Stabil secara finansial&#xA;&#xA;Walau saya masih memperjuangkan hal yang satu ini, namun punya tabungan yang cukup untuk bertahan hidup (serta dapat membeli barang kapanpun dibutuhkan), serta tak punya hutang pada siapapun, membuat hati tenang.&#xA;&#xA;Baca novel&#xA;&#xA;Tinggalkan smartphone, dan bacalah novel. Buat saya, baca novel jauh lebih menarik daripada doomscrolling sosial media, karena interaksi antar tokoh di novel banyak yang menarik perhatian, bahkan dapat membuat saya merenung dan mengubah hidup saya sebaagai pembaca.&#xA;&#xA;Keluarga&#xA;&#xA;Keluarga adalah tempat saya kembali setelah lelah beraktivitas, serta selalu menemani dan support saya di kala senang dan susah.&#xA;&#xA;Rumah&#xA;&#xA;Rumah bukan hanya sekedar tembok, atap, dengan furnitur-furniturnya. Rumah adalah tempat untuk beristirahat, berkumpul bersama keluarga, dan juga tempat di mana saya bisa menjadi diri saya sendiri sepenuhnya.&#xA;&#xA;Khusyuk dalam beribadah&#xA;&#xA;Bisa khusyuk dalam beribadah, dengan mengesampingkan (atau tanpa memikirkan) hal-hal duniawi dan hanya mengingat Tuhan adalah sebuah kenikmatan.&#xA;&#xA;Mendengarkan lagu&#xA;&#xA;Dapat mendengarkan lagu atau album yang disuka, sesuai dengan suasana hati, sangatlah menyenangkan.&#xA;&#xA;Tidur tanpa set alarm&#xA;&#xA;Adalah sebuah kenikmatan tersendiri bisa tidur tanpa mengatur alarm, jadi bisa tidur selama apa pun yang diinginkan dan bangun kalau memang tubuh betul-betul sudah merasa segar.&#xA;&#xA;Mandi dengan air hangat&#xA;&#xA;Setelah melakukan banyak aktivitas, dengan mandi air hangat rasa lelah tubuh jadi berkurang dan tidur jadi lebih enak.&#xA;&#xA;Menghabiskan waktu sendirian&#xA;&#xA;Saya adalah orang yang suka dengan kesendirian, entah itu nonton ke bioskop sendiri, atau makan di restoran sendirian. Saya malah tak nyaman kalau harus pergi berkelompok.&#xA;&#xA;Suara rintik hujan&#xA;&#xA;Konteksnya di sini adalah saat saya berada di rumah, hujan yang tidak begitu deras (jadi tak perlu khawatir banjir), tanpa suara petir yang menggelegar. Mendengarkan suara hujan, apalagi ditambah dengan membaca novel sambil minum kopi hangat sangatlah nikmat.&#xA;&#xA;Bersepeda&#xA;&#xA;Sedari kecil saya senang bersepeda. Mengayuh pedal dengan kekuatan kaki sendiri, serta menikmati pemandangan sekitar sudah membuat saya senang (walau saya hanya pergi ke minimarket).&#xA;&#xA;Menginap di resort dengan pantai yang cantik&#xA;&#xA;Walaupun saya baru beberapa kali ke resort dengan pemandangan pantainya yang cantik, namun menikmati semua itu saya sangat senang sekali, bahkan saat saya kembali ke rumah sekalipun.&#xA;&#xA;Menyeduh (dan minum) kopi&#xA;&#xA;Tools saya buat kopi di rumah simpel saja: perangkat coffee drip beserta filternya (yang saya beli di Daiso), serta kopi yang saya beli di supermarket. Lalu, kopi saya minum sebelum mengawali hari. Enaknya.&#xA;&#xA;Kamar yang bersih&#xA;&#xA;Siapa yang tak senang dengan kamar yang bersih? Barang-barang tersusun rapih, debu-debu yang menempel dibersihkan, serta kabel-kabel tak lagi terlihat acak-acakan.&#xA;&#xA;Bepergian, sendirian&#xA;&#xA;Berhubungan juga dengan poin ke-10, di poin ini bepergian yang saya maksud adalah melakukan perjalanan jauh, baik di dalam negeri maupun ke luar negeri. Saya tak suka bepergian dalam grup. Bepergian sendiri jauh lebih asik buat saya, karena tak ada yang perlu mengatur-atur saya ke mana saya harus pergi.&#xA;&#xA;Punya teman yang dapat menerima saya&#xA;&#xA;Untungnya, saya punya beberapa teman yang dapat menerima saya sepenuhnya, walau saya sudah melakukan banyak hal yang menurut saya tak baik pada mereka. Dan sebagai rasa terima kasih, saya pun sebisa mungkin juga support mereka dan menerima mereka, baik itu di kala senang maupun susah.&#xA;&#xA;Bermain gim&#xA;&#xA;Entah itu main gim di laptop, maupun di NDS, bisa main gim tanpa berpikir kalau apa yang saya lakukan hanyalah buang-buang waktu adalah sebuah kenikmantan.&#xA;&#xA;Mendengarkan radio&#xA;&#xA;Hal yang membuat saya senang saat dengar radio adalah menemukan lagu terbaru dan saya langsung suka, terlebih lagi saat penyiar memberitahukan lagu yang baru saja ia putar, jadi saya bisa cari lagu tersebut (dan bahkan membelinya).&#xA;&#xA;Berolahraga&#xA;&#xA;Berolahraga di sini adalah berolahraga dengan intensitas ringan, paling tidak 15-30 menit. Awalnya memang terasa berat, tetapi sejak membuahkan hasil, seperti jarang merasa lelah saat melakukan kegiatan harian, olahraga jadi terasa menyenangkan. Saat ini, saya melakukan olahraga ringan selama lima hari seminggu, dan dua hari sisanya saya pakai untuk beristirahat.&#xA;&#xA;Sekian, dan sampai jumpa di tulisan berikutnya.&#xA;&#xA;#Note #100DaysToOffload #D003Y2026]]&gt;</description>
      <content:encoded><![CDATA[<p>Berikut merupakan 20 hal yang membuat saya senang (setelah saya pikir-pikir):</p>
<ul><li><strong>Dapat makan makanan yang disuka</strong></li></ul>

<p>Entah itu kebab, nasi goreng, sushi, ramen, atau <em>curry</em>, makan makanan yang disuka dapat menenangkan saya.</p>
<ul><li><strong>Stabil secara finansial</strong></li></ul>

<p>Walau saya masih memperjuangkan hal yang satu ini, namun punya tabungan yang cukup untuk bertahan hidup (serta dapat membeli barang kapanpun dibutuhkan), serta tak punya hutang pada siapapun, membuat hati tenang.</p>
<ul><li><strong>Baca novel</strong></li></ul>

<p>Tinggalkan smartphone, dan bacalah novel. Buat saya, baca novel jauh lebih menarik daripada <em>doomscrolling</em> sosial media, karena interaksi antar tokoh di novel banyak yang menarik perhatian, bahkan dapat membuat saya merenung dan mengubah hidup saya sebaagai pembaca.</p>
<ul><li><strong>Keluarga</strong></li></ul>

<p>Keluarga adalah tempat saya kembali setelah lelah beraktivitas, serta selalu menemani dan support saya di kala senang dan susah.</p>
<ul><li><strong>Rumah</strong></li></ul>

<p>Rumah bukan hanya sekedar tembok, atap, dengan furnitur-furniturnya. Rumah adalah tempat untuk beristirahat, berkumpul bersama keluarga, dan juga tempat di mana saya bisa menjadi diri saya sendiri sepenuhnya.</p>
<ul><li><strong>Khusyuk dalam beribadah</strong></li></ul>

<p>Bisa khusyuk dalam beribadah, dengan mengesampingkan (atau tanpa memikirkan) hal-hal duniawi dan hanya mengingat Tuhan adalah sebuah kenikmatan.</p>
<ul><li><strong>Mendengarkan lagu</strong></li></ul>

<p>Dapat mendengarkan lagu atau album yang disuka, sesuai dengan suasana hati, sangatlah menyenangkan.</p>
<ul><li><strong>Tidur tanpa set alarm</strong></li></ul>

<p>Adalah sebuah kenikmatan tersendiri bisa tidur tanpa mengatur alarm, jadi bisa tidur selama apa pun yang diinginkan dan bangun kalau memang tubuh betul-betul sudah merasa segar.</p>
<ul><li><strong>Mandi dengan air hangat</strong></li></ul>

<p>Setelah melakukan banyak aktivitas, dengan mandi air hangat rasa lelah tubuh jadi berkurang dan tidur jadi lebih enak.</p>
<ul><li><strong>Menghabiskan waktu sendirian</strong></li></ul>

<p>Saya adalah orang yang suka dengan kesendirian, entah itu nonton ke bioskop sendiri, atau makan di restoran sendirian. Saya malah tak nyaman kalau harus pergi berkelompok.</p>
<ul><li><strong>Suara rintik hujan</strong></li></ul>

<p>Konteksnya di sini adalah saat saya berada di rumah, hujan yang tidak begitu deras (jadi tak perlu khawatir banjir), tanpa suara petir yang menggelegar. Mendengarkan suara hujan, apalagi ditambah dengan membaca novel sambil minum kopi hangat sangatlah nikmat.</p>
<ul><li><strong>Bersepeda</strong></li></ul>

<p>Sedari kecil saya senang bersepeda. Mengayuh pedal dengan kekuatan kaki sendiri, serta menikmati pemandangan sekitar sudah membuat saya senang (walau saya hanya pergi ke minimarket).</p>
<ul><li><strong>Menginap di resort dengan pantai yang cantik</strong></li></ul>

<p>Walaupun saya baru beberapa kali ke resort dengan pemandangan pantainya yang cantik, namun menikmati semua itu saya sangat senang sekali, bahkan saat saya kembali ke rumah sekalipun.</p>
<ul><li><strong>Menyeduh (dan minum) kopi</strong></li></ul>

<p><em>Tools</em> saya buat kopi di rumah simpel saja: perangkat <em>coffee drip</em> beserta filternya (yang saya beli di Daiso), serta kopi yang saya beli di supermarket. Lalu, kopi saya minum sebelum mengawali hari. Enaknya.</p>
<ul><li><strong>Kamar yang bersih</strong></li></ul>

<p>Siapa yang tak senang dengan kamar yang bersih? Barang-barang tersusun rapih, debu-debu yang menempel dibersihkan, serta kabel-kabel tak lagi terlihat acak-acakan.</p>
<ul><li><strong>Bepergian, sendirian</strong></li></ul>

<p>Berhubungan juga dengan poin ke-10, di poin ini bepergian yang saya maksud adalah melakukan perjalanan jauh, baik di dalam negeri maupun ke luar negeri. Saya tak suka bepergian dalam grup. Bepergian sendiri jauh lebih asik buat saya, karena tak ada yang perlu mengatur-atur saya ke mana saya harus pergi.</p>
<ul><li><strong>Punya teman yang dapat menerima saya</strong></li></ul>

<p>Untungnya, saya punya beberapa teman yang dapat menerima saya sepenuhnya, walau saya sudah melakukan banyak hal yang menurut saya tak baik pada mereka. Dan sebagai rasa terima kasih, saya pun sebisa mungkin juga support mereka dan menerima mereka, baik itu di kala senang maupun susah.</p>
<ul><li><strong>Bermain gim</strong></li></ul>

<p>Entah itu main gim di laptop, maupun di NDS, bisa main gim tanpa berpikir kalau apa yang saya lakukan hanyalah buang-buang waktu adalah sebuah kenikmantan.</p>
<ul><li><strong>Mendengarkan radio</strong></li></ul>

<p>Hal yang membuat saya senang saat dengar radio adalah menemukan lagu terbaru dan saya langsung suka, terlebih lagi saat penyiar memberitahukan lagu yang baru saja ia putar, jadi saya bisa cari lagu tersebut (dan bahkan membelinya).</p>
<ul><li><strong>Berolahraga</strong></li></ul>

<p>Berolahraga di sini adalah berolahraga dengan intensitas ringan, paling tidak 15-30 menit. Awalnya memang terasa berat, tetapi sejak membuahkan hasil, seperti jarang merasa lelah saat melakukan kegiatan harian, olahraga jadi terasa menyenangkan. Saat ini, saya melakukan olahraga ringan selama lima hari seminggu, dan dua hari sisanya saya pakai untuk beristirahat.</p>

<p>Sekian, dan sampai jumpa di tulisan berikutnya.</p>

<p>#Note #100DaysToOffload #D003Y2026</p>
]]></content:encoded>
      <author>Hiki&#39;s Lifelog</author>
      <guid>https://pen.waltuh.cyou/read/a/64b15pxunt</guid>
      <pubDate>Mon, 27 Jul 2026 09:23:44 +0000</pubDate>
    </item>
    <item>
      <title>Weeknotes: 30-2026</title>
      <link>https://pen.waltuh.cyou/hiki/weeknotes-30-2026</link>
      <description>&lt;![CDATA[Minggu ini terasa biasa-biasa saja buat saya. Setelah World Cup berakhir (selamat, Spanyol!), jam tidur saya belum kembali seperti biasanya. Saya baru tertidur pukul 2 atau 3 pagi, bangun sejenak untuk solat subuh di pukul 5-6 pagi, dan baru benar-benar terbangun di pukul 13 atau 14 siang hari. &#xA;&#xA;Di hari Jumat dan Sabtu, saya datang ke kelas Engineering yang sudah berjalan lebih dari tiga bulan. Sejauh ini, saya merasa tak paham apa-apa tentang apa yang sudah saya pelajari. Materi yang disampaikan terlalu advanced buat saya yang otaknya pas-pasan ini. Tak ada satupun ilmu yang nyangkut di kepala saya. Saya ragu bisa lulus dari kelas Engineering ini. Jangankan lulus, mid-test yang rencananya diadakan minggu depan pun saya ragu bisa dapat nilai memuaskan.&#xA;&#xA;Saat ini, saya masih melanjutkan baca buku The City and Its Uncertain Walls Karya Haruki Murakami, buku yang saya pinjam di perpustakaan umum. Buku yang cukup tebal, sekitar 430 halaman. Di hari saya tak datang ke kelas Engineering, saya menyempatkan baca buku ini dengan pace 50 halaman per hari. Dan sampai dengan saat ini, saya telah membaca kurang lebih setengah dari isi keseluruhan buku ini.&#xA;&#xA;Selain datang ke kelas serta baca buku, di minggu ini saya menonton beberapa dokumenter dari NHK yang berjudul A Century on Film, salah satu dokumenter yang saya suka dari NHK, bukan karena saya suka dengan sejarah, namun lebih karena saya ingin tahu lebih mendalam mengenai apa yang terjadi seabad yang lalu, terutama pada zaman Perang Dunia kedua, yang menurutku adalah tragedi terbesar dalam sejarah umat manusia. Dan dengan menonton dokumenter ini pula saya berharap para pemimpin dunia tak melakukan hal yang sama atau bahkan lebih parah di masa yang akan datang.&#xA;&#xA;Sekian Weeknotes di minggu ke-30, tahun 2026.&#xA;&#xA;Sampai jumpa di Weeknotes selanjutnya.&#xA;&#xA;#Weeknotes #100DaysToOffload #D002Y2026]]&gt;</description>
      <content:encoded><![CDATA[<p>Minggu ini terasa biasa-biasa saja buat saya. Setelah <em>World Cup</em> berakhir (selamat, Spanyol!), jam tidur saya belum kembali seperti biasanya. Saya baru tertidur pukul 2 atau 3 pagi, bangun sejenak untuk solat subuh di pukul 5-6 pagi, dan baru benar-benar terbangun di pukul 13 atau 14 siang hari.</p>

<p>Di hari Jumat dan Sabtu, saya datang ke kelas Engineering yang sudah berjalan lebih dari tiga bulan. Sejauh ini, saya merasa tak paham apa-apa tentang apa yang sudah saya pelajari. Materi yang disampaikan terlalu <em>advanced</em> buat saya yang otaknya pas-pasan ini. Tak ada satupun ilmu yang nyangkut di kepala saya. Saya ragu bisa lulus dari kelas Engineering ini. Jangankan lulus, <em>mid-test</em> yang rencananya diadakan minggu depan pun saya ragu bisa dapat nilai memuaskan.</p>

<p>Saat ini, saya masih melanjutkan baca buku <em>The City and Its Uncertain Walls</em> Karya Haruki Murakami, buku yang saya pinjam di perpustakaan umum. Buku yang cukup tebal, sekitar 430 halaman. Di hari saya tak datang ke kelas Engineering, saya menyempatkan baca buku ini dengan <em>pace</em> 50 halaman per hari. Dan sampai dengan saat ini, saya telah membaca kurang lebih setengah dari isi keseluruhan buku ini.</p>

<p>Selain datang ke kelas serta baca buku, di minggu ini saya menonton beberapa dokumenter dari NHK yang berjudul <em>A Century on Film</em>, salah satu dokumenter yang saya suka dari NHK, bukan karena saya suka dengan sejarah, namun lebih karena saya ingin tahu lebih mendalam mengenai apa yang terjadi seabad yang lalu, terutama pada zaman Perang Dunia kedua, yang menurutku adalah tragedi terbesar dalam sejarah umat manusia. Dan dengan menonton dokumenter ini pula saya berharap para pemimpin dunia tak melakukan hal yang sama atau bahkan lebih parah di masa yang akan datang.</p>

<p>Sekian <em>Weeknotes</em> di minggu ke-30, tahun 2026.</p>

<p>Sampai jumpa di <em>Weeknotes</em> selanjutnya.</p>

<p>#Weeknotes #100DaysToOffload #D002Y2026</p>
]]></content:encoded>
      <author>Hiki&#39;s Lifelog</author>
      <guid>https://pen.waltuh.cyou/read/a/2yr3at1zkh</guid>
      <pubDate>Sun, 26 Jul 2026 13:03:51 +0000</pubDate>
    </item>
    <item>
      <title>100 Days To Offload: Day One</title>
      <link>https://pen.waltuh.cyou/hiki/100-days-to-offload-day-one</link>
      <description>&lt;![CDATA[Secara tak sengaja (melihat federated timeline di Fedi), saya menemukan seseorang berhasil menyelesaikan 100 Days To Offload challenge-nya di tahun ini, dan share pencapaiannya. Buat yang belum tahu apa 100 Days To Offload challenge, di challenge ini, seorang blogger menantang dirinya sendiri untuk menulis 100 blog post dalam kurun waktu setahun. Saya pertama kali melihat challenge ini saat saya masih menulis blog di write.as beberapa tahun yang lalu, dan baru tahu detailnya saat membaca situs ini di awal minggu ini.&#xA;&#xA;Sebetulnya, challenge ini bisa dikatakan cukup mudah. Anggaplah begini: dalam satu tahun ada 52 minggu. Dengan menulis blog dua kali seminggu saja, sudah bisa menghasilkan setidaknya 104 blog post (jika konsisten dan tak malas).&#xA;&#xA;Dan entah kenapa saya tertarik untuk ikut challenge ini, di tahun 2026 yang kurang dari enam bulan lagi akan berakhir. Kalau dihitung secara kasarnya, untuk menyelesaikan challenge ini di tahun ini, saya harus menulis setidaknya lima tulisan setiap minggunya.&#xA;&#xA;Kemudian, saya berpikir: &#34;Apakah saya bisa menyelesaikannya?&#34;, atau &#34;Apakah saya punya ide tulisan setiap harinya hingga akhir tahun?&#34;&#xA;&#xA;Lalu, saya pun kembali membaca deskripsi dari situs https://100daystooffload.com berikut:&#xA;&#xA;  Posts don&#39;t need to be long-form, deep, meaningful, or even that well written. If there are spelling and grammar mistakes, or even if there&#39;s no real point to the post, so what? What&#39;s important is that you&#39;re writing about the things you want to write about.&#xA;&#xA;  Your posts could be how-to guides, or links to another post you have found interesting. They could include your own thoughts about that post, or a response to it. It could be a simple update about what you have done that day. Tell us about your dog, your cat, your fish tank, or whatever hobbies you have. Someone will find it interesting.&#xA;&#xA;Tak apa menulis pendek, tanpa makna, bahkan jelek sekalipun. Tak perlu menulis sempurna selama 100 hari berturut-turut. Yang penting: Just.Write.&#xA;&#xA;Sampai saat ini, yang terpikir adalah saya akan kembali menulis Week Notes setiap minggunya di akhir pekan, serta empat post lainnya dengan tema sedapatnya saat itu juga, atau dapat di tempat lain, seperti Pinterest atau Revospring.&#xA;&#xA;Melalui tulisan ini, 100 Days To Offload challenge untuk tahun 2026 buat saya pun dimulai.&#xA;&#xA;Berjuang!&#xA;&#xA;#Note #100DaysToOffload #D001Y2026]]&gt;</description>
      <content:encoded><![CDATA[<p>Secara tak sengaja (melihat <em>federated timeline</em> di Fedi), saya menemukan seseorang berhasil menyelesaikan <em>100 Days To Offload</em> challenge-nya di tahun ini, dan share pencapaiannya. Buat yang belum tahu apa <em>100 Days To Offload</em> challenge, di challenge ini, seorang blogger menantang dirinya sendiri untuk menulis 100 blog post dalam kurun waktu setahun. Saya pertama kali melihat challenge ini saat saya masih menulis blog di <a href="https://write.as" rel="nofollow">write.as</a> beberapa tahun yang lalu, dan baru tahu detailnya saat membaca <a href="https://100daystooffload.com" rel="nofollow">situs ini</a> di awal minggu ini.</p>

<p>Sebetulnya, challenge ini bisa dikatakan cukup mudah. Anggaplah begini: dalam satu tahun ada 52 minggu. Dengan menulis blog dua kali seminggu saja, sudah bisa menghasilkan setidaknya 104 blog post (jika konsisten dan tak malas).</p>

<p>Dan entah kenapa saya tertarik untuk ikut challenge ini, di tahun 2026 yang kurang dari enam bulan lagi akan berakhir. Kalau dihitung secara kasarnya, untuk menyelesaikan challenge ini di tahun ini, saya harus menulis setidaknya lima tulisan setiap minggunya.</p>

<p>Kemudian, saya berpikir: “Apakah saya bisa menyelesaikannya?”, atau “Apakah saya punya ide tulisan setiap harinya hingga akhir tahun?”</p>

<p>Lalu, saya pun kembali membaca deskripsi dari situs <a href="https://100daystooffload.com" rel="nofollow">https://100daystooffload.com</a> berikut:</p>

<blockquote><p>Posts don&#39;t need to be long-form, deep, meaningful, or even that well written. If there are spelling and grammar mistakes, or even if there&#39;s no real point to the post, so what? What&#39;s important is that you&#39;re writing about the things you want to write about.</p>

<p>Your posts could be how-to guides, or links to another post you have found interesting. They could include your own thoughts about that post, or a response to it. It could be a simple update about what you have done that day. Tell us about your dog, your cat, your fish tank, or whatever hobbies you have. Someone will find it interesting.</p></blockquote>

<p>Tak apa menulis pendek, tanpa makna, bahkan jelek sekalipun. Tak perlu menulis sempurna selama 100 hari berturut-turut. Yang penting: <strong>Just.Write.</strong></p>

<p>Sampai saat ini, yang terpikir adalah saya akan kembali menulis <em>Week Notes</em> setiap minggunya di akhir pekan, serta empat post lainnya dengan tema sedapatnya saat itu juga, atau dapat di tempat lain, seperti <em>Pinterest</em> atau <em>Revospring</em>.</p>

<p>Melalui tulisan ini, <em>100 Days To Offload</em> challenge untuk tahun 2026 buat saya pun dimulai.</p>

<p>Berjuang!</p>

<p>#Note #100DaysToOffload #D001Y2026</p>
]]></content:encoded>
      <author>Hiki&#39;s Lifelog</author>
      <guid>https://pen.waltuh.cyou/read/a/ffq5ti9q6f</guid>
      <pubDate>Sat, 25 Jul 2026 16:16:07 +0000</pubDate>
    </item>
    <item>
      <title>Life Update: April-June 2026</title>
      <link>https://pen.waltuh.cyou/hiki/life-update-april-june-2026</link>
      <description>&lt;![CDATA[Di awal bulan April, saya mendapatkan kabar kalau saya mendapatkan beasiswa penuh untuk sekolah spesialis. Singkat cerita, saya tak perlu mengeluarkan biaya sepersenpun selama menjalani sekolah spesialis ini hingga selesai di akhir tahun.&#xA;&#xA;Lalu, di bulan April kondisi Ayah makin memburuk. Ayah hanya bisa tidur di kasur sambil menahan rasa sakit yang dialaminya. Di awal bulan Mei, Ayah kembali dirawat di rumah sakit setelah mengalami sesak napas.&#xA;&#xA;Dan di tanggal 12 Mei, pagi hari, Ayah menghembuskan nafas terakhirnya.&#xA;&#xA;Sebelum Ayah wafat, saya, Ibu, beserta adik saya berada di sampingnya. Ayah menghembuskan nafas terakhirnya dengan sangat tenang sekali. Saat diberitahu suster kalau bapak dinyatakan wafat, kami semua hanya bisa menangis.&#xA;&#xA;Dari pertengahan Mei hingga pertengahan bulan Juni, kami semua menjalani aktivitas seperti biasanya, tanpa Ayah. Tanpa Ayah, keadaan rumah menjadi sangat sepi. Kadang kami dapat menjalani aktivitas dengan baik, dan ada kalanya kami merasa sangat berduka.&#xA;&#xA;Saat saya menulis ini, saya masih merasakan duka. Mungkin duka ini tak akan sepenuhnya hilang dalam diri saya. Saya ingin terus mengenang Ayah serta kebaikan-kebaikannya selama ia hidup selama-lamanya.&#xA;&#xA;Terima kasih, Ayah.&#xA;&#xA;LifeUpdate]]&gt;</description>
      <content:encoded><![CDATA[<p>Di awal bulan April, saya mendapatkan kabar kalau saya mendapatkan beasiswa penuh untuk sekolah spesialis. Singkat cerita, saya tak perlu mengeluarkan biaya sepersenpun selama menjalani sekolah spesialis ini hingga selesai di akhir tahun.</p>

<p>Lalu, di bulan April kondisi Ayah makin memburuk. Ayah hanya bisa tidur di kasur sambil menahan rasa sakit yang dialaminya. Di awal bulan Mei, Ayah kembali dirawat di rumah sakit setelah mengalami sesak napas.</p>

<p>Dan di tanggal 12 Mei, pagi hari, Ayah menghembuskan nafas terakhirnya.</p>

<p>Sebelum Ayah wafat, saya, Ibu, beserta adik saya berada di sampingnya. Ayah menghembuskan nafas terakhirnya dengan sangat tenang sekali. Saat diberitahu suster kalau bapak dinyatakan wafat, kami semua hanya bisa menangis.</p>

<p>Dari pertengahan Mei hingga pertengahan bulan Juni, kami semua menjalani aktivitas seperti biasanya, tanpa Ayah. Tanpa Ayah, keadaan rumah menjadi sangat sepi. Kadang kami dapat menjalani aktivitas dengan baik, dan ada kalanya kami merasa sangat berduka.</p>

<p>Saat saya menulis ini, saya masih merasakan duka. Mungkin duka ini tak akan sepenuhnya hilang dalam diri saya. Saya ingin terus mengenang Ayah serta kebaikan-kebaikannya selama ia hidup selama-lamanya.</p>

<p>Terima kasih, Ayah.</p>

<p>#LifeUpdate</p>
]]></content:encoded>
      <author>Hiki&#39;s Lifelog</author>
      <guid>https://pen.waltuh.cyou/read/a/zaqcwxyn8n</guid>
      <pubDate>Wed, 01 Jul 2026 09:01:13 +0000</pubDate>
    </item>
    <item>
      <title>Indonesia - Where to Get Postcards</title>
      <link>https://pen.waltuh.cyou/hiki/indonesia-where-to-get-postcards</link>
      <description>&lt;![CDATA[This is a list of stores in Indonesia to get postcards, organized by region and city. I also put online shops and Indonesian postcards from outside the country. Please message me if you want to recommend a store (or online shop) in your city that sell postcards, so I can add it here. Thank you!&#xA;&#xA;Jabodetabek (Jakarta, Bogor, Depok, Tangerang, Bekasi)&#xA;&#xA;Jakarta&#xA;&#xA;Kinokuniya Grand Indonesia (Grand Indonesia West Mall, LG Floor, Jl. M.H. Thamrin No. 1, Jakarta 10310). ±Rp10,000-Rp20,000 each. Sell view cards and illustrated cards. Maps ✅&#xA;Gramedia Bookstore. Mostly view cards. Available in some stores.&#xA;Sarinah Mall (Jl. M.H. Thamrin No.11, Jakarta). Reasonable price, ±Rp5,000-Rp15,000 each each.&#xA;Filateli Corner in Central Post Office Pasar Baru, Jakarta. ±Rp3,000 each. ✅&#xA;Pasaraya Department Store, Jakarta, on souvenir floor. ±Rp20,000 each, unreasonable price but some cards have real batik cloth.&#xA;Periplus. ±Rp10,000-Rp20,000 each. Available in some stores. ✅&#xA;Scoop and Scoop Ideas. Sell art cards. Available in some stores. ✅&#xA;Post Kantoor - Koffie . Art . Kultur (Jl. Cikini Raya No. 1, Jakarta). Sell illustrated cards. ±Rp15,000 each. Maps ✅&#xA;Galeri Nasional Indonesia (National Gallery of Indonesia), Jakarta. Sell view and illustrated cards. ±Rp50,000 per set (2-3 postcards). Maps ✅&#xA;&#xA;Bandung&#xA;&#xA;Pos Indonesia (Jl. Asia Afrika No. 49). Rp3,000 each.&#xA;Filateli Corner (Graha Pos Jl. Banda No. 30). Rp3,000 each.&#xA;Periplus (Jl. Dr.Setiabudi No. 42). Rp7,000 each, mostly tourist cards.&#xA;Books &amp; Beyond (Bandung Indah Plaza 1st Floor, Jl. Merdeka No. 56). ±Rp10,000 each, mostly illustrated map cards from lestariid.&#xA;Omuniuum (Jl. Ciumbuleuit No. 151B 2nd Floor). ±Rp10,000 each, usually small art cards probably from postcard box.&#xA;Kineruku (Jl. Hegarmanah No. 52). ±Rp12,000 each, usually art cards from various local artists.&#xA;&#xA;Yogyakarta&#xA;&#xA;Kantor Pos Besar Yogyakarta (Central Post Office)&#xA;&#xA;Loket Filateli / Philatelic counter. Open: Mon-Sat 08.00-14.30. Selling official postcards from Pos Indonesia, but sometimes not available. Price: Rp3,000.&#xA;Koperasi Kantor Pos Yogyakarta (north entrance of the building). Touristic postcards,Batik postcards. Price: Rp5,000.&#xA;Some street vendors on the west of the post office are also selling postcard.&#xA;&#xA;Around Malioboro&#xA;&#xA;The Lucky Boomerang Bookshop (Sosrowijayan Wetan Gang 1). Touristic, black &amp; white, real batik postcards. Price: Rp5,000.&#xA;Sari Ilmu Bookstore (opposite to Mall Malioboro). Touristic (Yogyakarta), there are some old ones. Price: Rp3,000.&#xA;Hamzah Batik. Touristic (Indonesia), vintage ad postcards. Price: Rp6,500.&#xA;Prapanca (near Museum Sonobudoyo). Touristic, black &amp; white. Price: Rp6,000.&#xA;Toko Kembang Gulo.&#xA;&#xA;Other Places in Yogyakarta&#xA;&#xA;Togamas Bookstore (in Kotabaru &amp; Jalan Affandi). Touristic, black &amp; white, illustration postcards. Price: Rp5,000.&#xA;Yogyatourium Dagadu Djokdja. Historic transportation series postcards; great illustrations but on thin paper. Price: Rp10,000.&#xA;Museum Affandi. Affandi paintings. Price: Rp5,000.&#xA;Artlinx Store. Illustration postcards. Maps&#xA;&#xA;Note: places and prices in Yogyakarta was updated in February 2020. For more information, you can visit this blog.&#xA;&#xA;Denpasar&#xA;&#xA;Tourist shops in Sanur, Bali.&#xA;Nacivet Art Photography Gallery Ubud.&#xA;&#xA;Makassar&#xA;&#xA;Street-vendors right outside the post office in Jl. Selamet Riyadi No.10 (selling view cards).&#xA;Bookstore at Sultan Hasanuddin International Airport (UPG). ✅&#xA;&#xA;---&#xA;&#xA;Online Shops&#xA;&#xA;Local Shops&#xA;&#xA;Artlinx Store (Shopee)&#xA;Boxlibby (Shopee)&#xA;BToQo Postcards (Shopee)&#xA;Filateli.co.id&#xA;freesia97 (Shopee)&#xA;Freesia 99 (Tokopedia)&#xA;kartupospakpos (Instagram)&#xA;kotak.pos (Shopee)&#xA;lisasaputra (Shopee), lisasaputra (Tokopedia), lisasaputra (ko-fi)&#xA;Lestari Post (Shopee), LestariPostcard (Tokopedia), and lestariid (Instagram)&#xA;Lun Projects (Tokopedia)&#xA;Manifesto Letters (Shopee), Manifesto Letters and Crafts (Tokopedia)&#xA;medanstamps (Shopee)&#xA;medyloekito (Instagram)&#xA;namonzone (Shopee)&#xA;PATW (Instagram)&#xA;Posnesia (Shopee)&#xA;Postaleid (Shopee)&#xA;postcardsansichtkaarten (Instagram)&#xA;Postcards by Finessa (Shopee)&#xA;SOIACRAFT (Shopee)&#xA;Tees.co.id&#xA;TWANIS JOGJA (Shopee)&#xA;writeswithirin (Shopee), writeswithirin (Tokopedia)&#xA;&#xA;Online Printing&#xA;&#xA;OnlinePrint.co.id&#xA;&#xA;Indonesian Postcards from Outside the Country&#xA;&#xA;House of Postcards Countries of the World: Indonesia&#xA;papersisters Happy Postcrossing ID&#xA;Postallove Greetings from… Indonesia&#xA;PostcardsMarket Indonesian Postcards, ASEAN&#xA;World Travel Postcard WT-Indonesia&#xA;&#xA;Others&#xA;&#xA;More Online Shops&#xA;&#xA;Unexpected Postcards&#xA;&#xA;Events&#xA;&#xA;Comic Frontier or Comifuro, typically held on Saturday and Sunday, bi-annually each year. Some local artists/illustrators sell their illustrated postcards in this event.&#xA;Artket or Art &amp; Illustration Market. Held in Jakarta. Some local artists/illustrators sell their illustrated postcards in this event.&#xA;Kira Kira Art Market, also held in Jakarta. Some local artists/illustrators sell their illustrated postcards in this event.&#xA;Biggle or Biggle Creative Market, also held in Jakarta. Some local artists/illustrators sell their illustrated postcards in this event.&#xA;Semasa Piknik, held in Lapangan Banteng, Jakarta once a year. Some local artists/illustrators sell their illustrated postcards in this event.&#xA;&#xA;---&#xA;&#xA;Note:  &#xA;NEW → Recently added&#xA;(!) → This store has been inactive in the past 30 days or temporarily closed&#xA;✅ → Verified, I visited myself&#xA;&#xA;Last updated: 24 June 2026&#xA;&#xA;#Postcrossing #Postcards]]&gt;</description>
      <content:encoded><![CDATA[<p>This is a list of stores in Indonesia to get postcards, organized by region and city. I also put online shops and Indonesian postcards from outside the country. Please message me if you want to recommend a store (or online shop) in your city that sell postcards, so I can add it here. Thank you!</p>

<h2 id="jabodetabek-jakarta-bogor-depok-tangerang-bekasi">Jabodetabek (Jakarta, Bogor, Depok, Tangerang, Bekasi)</h2>

<h3 id="jakarta">Jakarta</h3>
<ul><li><strong>Kinokuniya Grand Indonesia</strong> (Grand Indonesia West Mall, LG Floor, Jl. M.H. Thamrin No. 1, Jakarta 10310). ±Rp10,000-Rp20,000 each. Sell view cards and illustrated cards. <a href="https://maps.app.goo.gl/hLDDaDeQEBfQaPsS9" rel="nofollow">Maps</a> ✅</li>
<li><strong>Gramedia Bookstore</strong>. Mostly view cards. Available in some stores.</li>
<li><strong>Sarinah Mall</strong> (Jl. M.H. Thamrin No.11, Jakarta). Reasonable price, ±Rp5,000-Rp15,000 each each.</li>
<li><strong>Filateli Corner</strong> in <strong>Central Post Office Pasar Baru</strong>, Jakarta. ±Rp3,000 each. ✅</li>
<li><strong>Pasaraya Department Store</strong>, Jakarta, on souvenir floor. ±Rp20,000 each, unreasonable price but some cards have real batik cloth.</li>
<li><strong>Periplus</strong>. ±Rp10,000-Rp20,000 each. Available in some stores. ✅</li>
<li><strong>Scoop</strong> and <strong>Scoop Ideas</strong>. Sell art cards. Available in some stores. ✅</li>
<li><strong>Post Kantoor – Koffie . Art . Kultur</strong> (Jl. Cikini Raya No. 1, Jakarta). Sell illustrated cards. ±Rp15,000 each. <a href="https://maps.app.goo.gl/W6ZiQromi1DcUPP29" rel="nofollow">Maps</a> ✅</li>
<li><strong>Galeri Nasional Indonesia (National Gallery of Indonesia)</strong>, Jakarta. Sell view and illustrated cards. ±Rp50,000 per set (2-3 postcards). <a href="https://maps.app.goo.gl/Uik3ThZoP7Z4AKsx5" rel="nofollow">Maps</a> ✅</li></ul>

<h2 id="bandung">Bandung</h2>
<ul><li><strong>Pos Indonesia</strong> (Jl. Asia Afrika No. 49). Rp3,000 each.</li>
<li><strong>Filateli Corner</strong> (Graha Pos Jl. Banda No. 30). Rp3,000 each.</li>
<li><strong>Periplus</strong> (Jl. Dr.Setiabudi No. 42). Rp7,000 each, mostly tourist cards.</li>
<li><strong>Books &amp; Beyond</strong> (Bandung Indah Plaza 1st Floor, Jl. Merdeka No. 56). ±Rp10,000 each, mostly illustrated map cards from <a href="https://www.instagram.com/lestari_id/" rel="nofollow">lestari_id</a>.</li>
<li><strong>Omuniuum</strong> (Jl. Ciumbuleuit No. 151B 2nd Floor). ±Rp10,000 each, usually small art cards probably from postcard box.</li>
<li><strong>Kineruku</strong> (Jl. Hegarmanah No. 52). ±Rp12,000 each, usually art cards from various local artists.</li></ul>

<h2 id="yogyakarta">Yogyakarta</h2>

<h3 id="kantor-pos-besar-yogyakarta-central-post-office">Kantor Pos Besar Yogyakarta (Central Post Office)</h3>
<ul><li><strong>Loket Filateli / Philatelic counter</strong>. Open: Mon-Sat 08.00-14.30. Selling official postcards from Pos Indonesia, but sometimes not available. Price: Rp3,000.</li>
<li><strong>Koperasi Kantor Pos Yogyakarta</strong> (north entrance of the building). Touristic postcards,Batik postcards. Price: Rp5,000.</li>
<li>Some street vendors on the west of the post office are also selling postcard.</li></ul>

<h3 id="around-malioboro">Around Malioboro</h3>
<ul><li><strong>The Lucky Boomerang Bookshop</strong> (Sosrowijayan Wetan Gang 1). Touristic, black &amp; white, real batik postcards. Price: Rp5,000.</li>
<li><strong>Sari Ilmu Bookstore</strong> (opposite to Mall Malioboro). Touristic (Yogyakarta), there are some old ones. Price: Rp3,000.</li>
<li><strong>Hamzah Batik</strong>. Touristic (Indonesia), vintage ad postcards. Price: Rp6,500.</li>
<li><strong>Prapanca</strong> (near Museum Sonobudoyo). Touristic, black &amp; white. Price: Rp6,000.</li>
<li><strong>Toko Kembang Gulo</strong>.</li></ul>

<h3 id="other-places-in-yogyakarta">Other Places in Yogyakarta</h3>
<ul><li><strong>Togamas Bookstore</strong> (in Kotabaru &amp; Jalan Affandi). Touristic, black &amp; white, illustration postcards. Price: Rp5,000.</li>
<li><strong>Yogyatourium Dagadu Djokdja</strong>. Historic transportation series postcards; great illustrations but on thin paper. Price: Rp10,000.</li>
<li><strong>Museum Affandi</strong>. Affandi paintings. Price: Rp5,000.</li>
<li><strong>Artlinx Store</strong>. Illustration postcards. <a href="https://www.google.com/maps/place/Artlinx+Store/@-7.7454625,110.39817,21z/data=!4m6!3m5!1s0x2e7a59a7e6b66fd5:0x98dfdf689fa1241c!8m2!3d-7.7454028!4d110.3981652!16s%2Fg%2F11g6hwlhw5?entry=ttu&amp;g_ep=EgoyMDI2MDYyMS4wIKXMDSoASAFQAw%3D%3D" rel="nofollow">Maps</a></li></ul>

<p><em>Note: places and prices in Yogyakarta was updated in February 2020. For more information, you can visit <a href="https://adiantomr.wordpress.com/2020/09/28/where-to-buy-postcard-in-yogyakarta/" rel="nofollow">this blog</a>.</em></p>

<h2 id="denpasar">Denpasar</h2>
<ul><li>Tourist shops in Sanur, Bali.</li>
<li>Nacivet Art Photography Gallery Ubud.</li></ul>

<h2 id="makassar">Makassar</h2>
<ul><li>Street-vendors right outside the post office in Jl. Selamet Riyadi No.10 (selling view cards).</li>
<li>Bookstore at Sultan Hasanuddin International Airport (UPG). ✅</li></ul>

<hr>

<h2 id="online-shops">Online Shops</h2>

<h3 id="local-shops">Local Shops</h3>
<ul><li><a href="https://shopee.co.id/artlinxstore" rel="nofollow">Artlinx Store</a> (Shopee)</li>
<li><a href="https://shopee.co.id/boxlibbyhttps://shopee.co.id/boxlibby" rel="nofollow">Boxlibby</a> (Shopee)</li>
<li><a href="https://shopee.co.id/iftikar26" rel="nofollow">BToQo Postcards</a> (Shopee)</li>
<li><a href="https://filateli.co.id/Category?c=MTUEQUAL" rel="nofollow">Filateli.co.id</a></li>
<li><a href="https://shopee.co.id/freesia_97" rel="nofollow">freesia97</a> (Shopee)</li>
<li><a href="https://www.tokopedia.com/freesia99" rel="nofollow">Freesia 99</a> (Tokopedia)</li>
<li><a href="https://www.instagram.com/kartupospakpos" rel="nofollow">kartupospakpos</a> (Instagram)</li>
<li><a href="https://shopee.co.id/kotak.pos" rel="nofollow">kotak.pos</a> (Shopee)</li>
<li><a href="https://shopee.co.id/lisasaputraaa" rel="nofollow">lisasaputra</a> (Shopee), <a href="https://www.tokopedia.com/lisasaputra" rel="nofollow">lisasaputra</a> (Tokopedia), <a href="https://ko-fi.com/lisasaputra" rel="nofollow">lisasaputra</a> (ko-fi)</li>
<li><a href="https://shopee.co.id/lestaripostshop" rel="nofollow">Lestari Post</a> (Shopee), <a href="https://www.tokopedia.com/lestaripost" rel="nofollow">LestariPostcard</a> (Tokopedia), and <a href="https://www.instagram.com/lestari_id" rel="nofollow">lestari_id</a> (Instagram)</li>
<li><a href="https://www.tokopedia.com/lunprojects" rel="nofollow">Lun Projects</a> (Tokopedia)</li>
<li><a href="https://shopee.co.id/bungamatahari121" rel="nofollow">Manifesto Letters</a> (Shopee), <a href="https://www.tokopedia.com/manifestoletters" rel="nofollow">Manifesto Letters and Crafts</a> (Tokopedia)</li>
<li><a href="https://shopee.co.id/medanstamps" rel="nofollow">medanstamps</a> (Shopee)</li>
<li><a href="https://www.instagram.com/medyloekito" rel="nofollow">medyloekito</a> (Instagram)</li>
<li><a href="https://shopee.co.id/namonz" rel="nofollow">namonzone</a> (Shopee)</li>
<li><a href="https://www.instagram.com/thepatw" rel="nofollow">PATW</a> (Instagram)</li>
<li><a href="https://shopee.co.id/posnesia" rel="nofollow">Posnesia</a> (Shopee)</li>
<li><a href="https://shopee.co.id/postaleid" rel="nofollow">Postaleid</a> (Shopee)</li>
<li><a href="https://www.instagram.com/postcards_ansichtkaarten" rel="nofollow">postcards_ansichtkaarten</a> (Instagram)</li>
<li><a href="https://shopee.co.id/by.finessa" rel="nofollow">Postcards by Finessa</a> (Shopee)</li>
<li><a href="https://shopee.co.id/soiacraft" rel="nofollow">SOIACRAFT</a> (Shopee)</li>
<li><a href="https://tees.co.id/model/postcard" rel="nofollow">Tees.co.id</a></li>
<li><a href="https://shopee.co.id/twanis" rel="nofollow">TWANIS JOGJA</a> (Shopee)</li>
<li><a href="https://shopee.co.id/writeswithirin" rel="nofollow">writeswithirin</a> (Shopee), <a href="https://www.tokopedia.com/writeswithirin" rel="nofollow">writeswithirin</a> (Tokopedia)</li></ul>

<h3 id="online-printing">Online Printing</h3>
<ul><li><a href="https://onlineprint.co.id/id/kartu_pos/" rel="nofollow">OnlinePrint.co.id</a></li></ul>

<h3 id="indonesian-postcards-from-outside-the-country">Indonesian Postcards from Outside the Country</h3>
<ul><li>House of Postcards <a href="https://houseofpostcards.pl/en_US/p/Countries-of-the-World-Indonesia/18708" rel="nofollow">Countries of the World: Indonesia</a></li>
<li>papersisters <a href="https://www.papersisters.de/en/postcards/postcrossing/happy-postcrossing-hpc/happy-postcrossing-id" rel="nofollow">Happy Postcrossing ID</a></li>
<li>Postallove <a href="https://www.postallove.com/Postcards/Greetings-from-series/Greetings-from-Indonesia" rel="nofollow">Greetings from… Indonesia</a></li>
<li>PostcardsMarket <a href="https://postcardsmarket.com/search?q=indonesia" rel="nofollow">Indonesian Postcards</a>, <a href="https://postcardsmarket.com/search?q=asean" rel="nofollow">ASEAN</a></li>
<li>World Travel Postcard <a href="https://wt.nisan.tw/shop/wt-indonesia/" rel="nofollow">WT-Indonesia</a></li></ul>

<h3 id="others">Others</h3>
<ul><li><a href="https://community.postcrossing.com/t/online-shops-wiki" rel="nofollow">More Online Shops</a></li></ul>

<h2 id="unexpected-postcards">Unexpected Postcards</h2>

<h3 id="events">Events</h3>
<ul><li><a href="https://comifuro.net/" rel="nofollow">Comic Frontier</a> or <strong>Comifuro</strong>, typically held on Saturday and Sunday, bi-annually each year. Some local artists/illustrators sell their illustrated postcards in this event.</li>
<li><a href="https://www.instagram.com/artket.id/" rel="nofollow">Artket</a> or <strong>Art &amp; Illustration Market</strong>. Held in Jakarta. Some local artists/illustrators sell their illustrated postcards in this event.</li>
<li><a href="https://www.instagram.com/kirakiraartmarket/" rel="nofollow">Kira Kira Art Market</a>, also held in Jakarta. Some local artists/illustrators sell their illustrated postcards in this event.</li>
<li><a href="https://www.instagram.com/biggledot/" rel="nofollow">Biggle</a> or <strong>Biggle Creative Market</strong>, also held in Jakarta. Some local artists/illustrators sell their illustrated postcards in this event.</li>
<li><a href="https://www.instagram.com/semasa_di/" rel="nofollow">Semasa Piknik</a>, held in Lapangan Banteng, Jakarta once a year. Some local artists/illustrators sell their illustrated postcards in this event.</li></ul>

<hr>

<p><strong>Note:</strong><br>
<strong>NEW</strong> → Recently added
<strong>(!)</strong> → This store has been inactive in the past 30 days or temporarily closed
✅ → Verified, I visited myself</p>

<p><em>Last updated: 24 June 2026</em></p>

<p>#Postcrossing #Postcards</p>
]]></content:encoded>
      <author>Hiki&#39;s Lifelog</author>
      <guid>https://pen.waltuh.cyou/read/a/ek39ovo7om</guid>
      <pubDate>Wed, 24 Jun 2026 12:54:48 +0000</pubDate>
    </item>
    <item>
      <title>I decided to detox myself </title>
      <link>https://pen.waltuh.cyou/jimedrand/i-decided-to-detox-myself</link>
      <description>&lt;![CDATA[Detox social network&#xA;&#xA;After I am shocked and asking help to my close friend, I decided to detox myself from using any social media, both centralised and decentralised. With exception, I keep my accounts on Peertube under MakerTube, Funkwhale under Funkwhale Italia, YouTube (with new account), and some podcast platform both for consuming good content and content creation. &#xA;&#xA;I was already told people on Facebook that I am stopping to use fediverse due to the unstable behaviour behalf on myself. Until then, I just make them as &#34;newspaper&#34; rather than communicating with them. Sometimes, I have too much consuming the inappropiate content like what my friend Yonle told me. History stuff, geopolitics, government stuff, hot news, and more. Those have effect to my brain and affects how I am communicating with people.&#xA;&#xA;Also, my friend Runa told me to do what she was doing to make detox effective. She told me to getting back to old style communication modes such as emails and IRCs (I was there, and still registered at Libera Chat), and also reducing to follow the trends. Well, it seems not complicated at theories, but for practices, I am trying hard. Well, since I have joined bunch of communities that suits with my job both as Software Developer and SysAdmin, I am getting new insight and I decide to put my times into more reasonable hobbies such as making programs and learn about developer experiences (DX).&#xA;&#xA;The thing is, detoxing is quite hard at first, but this is the requirments that I should face to prevent more damages on my mental health. Also, as people with bipolar, I am really need to control my neuronic environment and manage the stress to prevent unstable behaviour breaks out. That&#39;s why I choose to detox both on centralised and decentralised, except for content distribution. I am nearly compared to Lain Iwakura from SE Lain, but worse.&#xA;&#xA;During my detox time, I am just communicating with close relative and few communities that I trusted. Also, I am keep writing the post when I needed to on this instances and start over from zero for content comsumption by making new Google account and subscribe some insightful channels about vintage computers, tech stuff, and more on YouTube in new accounts. For my presence on Facebook and Instagram, I want to abandon again in my detox time.&#xA;&#xA;How&#39;s my future as VTuber? Since I cannot follow their culture, I decided to be hybrid content creator and start over from zero. I want take the inspiration from my friend Faiz Intifada and do my own. Not because VTuber culture is niche, but because it won&#39;t fit in my behave.&#xA;&#xA;So, I&#39;ll start over my life from zero again and if you want to communicate with me, just email me or find me in communities such as IMPHNEN, The openSUSE Project, Cursor Bandung Community, and GNU/Weeb. I am there and open for you to communicate.&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://docvita.com/wp-content/uploads/2024/07/Social-Media-Detox-1080x675.webp" alt="Detox social network"></p>

<p>After I am shocked and asking help to my close friend, I decided to detox myself from using any social media, both centralised and decentralised. With exception, I keep my accounts on Peertube under MakerTube, Funkwhale under Funkwhale Italia, YouTube (with new account), and some podcast platform both for consuming good content and content creation.</p>

<p>I was already told people on Facebook that I am stopping to use fediverse due to the unstable behaviour behalf on myself. Until then, I just make them as “newspaper” rather than communicating with them. Sometimes, I have too much consuming the inappropiate content like what my friend Yonle told me. History stuff, geopolitics, government stuff, hot news, and more. Those have effect to my brain and affects how I am communicating with people.</p>

<p>Also, my friend Runa told me to do what she was doing to make detox effective. She told me to getting back to old style communication modes such as emails and IRCs (I was there, and still registered at Libera Chat), and also reducing to follow the trends. Well, it seems not complicated at theories, but for practices, I am trying hard. Well, since I have joined bunch of communities that suits with my job both as Software Developer and SysAdmin, I am getting new insight and I decide to put my times into more reasonable hobbies such as making programs and learn about developer experiences (DX).</p>

<p>The thing is, detoxing is quite hard at first, but this is the requirments that I should face to prevent more damages on my mental health. Also, as people with bipolar, I am really need to control my neuronic environment and manage the stress to prevent unstable behaviour breaks out. That&#39;s why I choose to detox both on centralised and decentralised, except for content distribution. I am nearly compared to Lain Iwakura from SE Lain, but worse.</p>

<p>During my detox time, I am just communicating with close relative and few communities that I trusted. Also, I am keep writing the post when I needed to on this instances and start over from zero for content comsumption by making new Google account and subscribe some insightful channels about vintage computers, tech stuff, and more on YouTube in new accounts. For my presence on Facebook and Instagram, I want to abandon again in my detox time.</p>

<p>How&#39;s my future as VTuber? Since I cannot follow their culture, I decided to be hybrid content creator and start over from zero. I want take the inspiration from my friend <a href="https://www.instagram.com/faizintifada/" rel="nofollow">Faiz Intifada</a> and do my own. Not because VTuber culture is niche, but because it won&#39;t fit in my behave.</p>

<p>So, I&#39;ll start over my life from zero again and if you want to communicate with me, just email me or find me in communities such as IMPHNEN, The openSUSE Project, Cursor Bandung Community, and GNU/Weeb. I am there and open for you to communicate.</p>
]]></content:encoded>
      <author>Jim&#39;s Personal Blog</author>
      <guid>https://pen.waltuh.cyou/read/a/yrdwiaicuj</guid>
      <pubDate>Sun, 17 May 2026 02:49:56 +0000</pubDate>
    </item>
    <item>
      <title>Why I chose QEMU/KVM over VirtualBox and VMware for my virtualisation needs?</title>
      <link>https://pen.waltuh.cyou/jimedrand/why-i-chose-qemu-kvm-over-virtualbox-and-vmware-for-my-virtualisation-needs</link>
      <description>&lt;![CDATA[KVM logo&#xA;&#xA;As a person with sysadmin skills, sometimes I need to test the program that I made without thinking about looking for another computer hardware (unless for ARM, that I need hardware for testing), and I have been familiar with VMware for nearly 2 years, and somehow VMware isn&#39;t fit for me because it&#39;s really obese, and sometimes it cannot interoperate like what VirtIOFS does. I don&#39;t want to run a Docker-based container because it wastes my storage, and I don&#39;t necessarily need it for now. After a few months trying QEMU/KVM, I guess we finally have a virtualised environment that we can tweak whatever we want without the limitations that VMware and VirtualBox didn&#39;t offer.&#xA;&#xA;Basically, when I want to run the subsystem that could integrate like what WSL2 did, I am trying to learn how to utilise the KVM by reading some docs that exist so much on the Internet, even on openSUSE Docs regarding KVM, I would give an try for this one, since I want to be less dependent on VMware, and it&#39;s amazing. They did have running under libvirtd with some other components that were required for running the VMs. The performance I faced when running is really great since the module is built into the Linux kernel. &#xA;&#xA;For management, I am using virt-manager, which is a program made by Red Hat for managing virtual machines. Since QEMU is a free and open source emulation program, and they require you to understand the commands and have comfort using the terminal, I guess these management tools like virt-manager really help. KVM only accelerate the architecture that you&#39;re using on your computer. If you have x8664, then it only accelerates on Intel/AMD&#39;s 64-bit architecture. But if you&#39;re on ARM64 or aarch64, it could be the same as what Intel/AMD&#39;s 64-bit does. I even think of running the first Intel-based Mac OS X using QEMU/KVM if I could.&#xA;&#xA;Well, I guess this is just the beginning of using QEMU/KVM in my daily computing. Should you use QEMU/KVM? If you want to learn and use it on your Linux computer for your daily work, then you should try it. For beginners? If you want, take it. ]]&gt;</description>
      <content:encoded><![CDATA[<p><img src="https://upload.wikimedia.org/wikipedia/commons/7/70/Kvmbanner-logo2_1.png" alt="KVM logo"></p>

<p>As a person with sysadmin skills, sometimes I need to test the program that I made without thinking about looking for another computer hardware (unless for ARM, that I need hardware for testing), and I have been familiar with VMware for nearly 2 years, and somehow VMware isn&#39;t fit for me because it&#39;s really obese, and sometimes it cannot interoperate like what VirtIOFS does. I don&#39;t want to run a Docker-based container because it wastes my storage, and I don&#39;t necessarily need it for now. After a few months trying QEMU/KVM, I guess we finally have a virtualised environment that we can tweak whatever we want without the limitations that VMware and VirtualBox didn&#39;t offer.</p>

<p>Basically, when I want to run the subsystem that could integrate like what WSL2 did, I am trying to learn how to utilise the KVM by reading some docs that exist so much on the Internet, even on <a href="https://doc.opensuse.org/documentation/leap/virtualization/html/book-virtualization/cha-qemu-host.html" rel="nofollow">openSUSE Docs regarding KVM</a>, I would give an try for this one, since I want to be less dependent on VMware, and it&#39;s amazing. They did have running under <code>libvirtd</code> with some other components that were required for running the VMs. The performance I faced when running is really great since the module is built into the Linux kernel.</p>

<p>For management, I am using <code>virt-manager</code>, which is a program made by Red Hat for managing virtual machines. Since QEMU is a free and open source emulation program, and they require you to understand the commands and have comfort using the terminal, I guess these management tools like <code>virt-manager</code> really help. KVM only accelerate the architecture that you&#39;re using on your computer. If you have <code>x86_64</code>, then it only accelerates on Intel/AMD&#39;s 64-bit architecture. But if you&#39;re on ARM64 or <code>aarch64</code>, it could be the same as what Intel/AMD&#39;s 64-bit does. I even think of running the first Intel-based Mac OS X using QEMU/KVM if I could.</p>

<p>Well, I guess this is just the beginning of using QEMU/KVM in my daily computing. Should you use QEMU/KVM? If you want to learn and use it on your Linux computer for your daily work, then you should try it. For beginners? If you want, take it.</p>
]]></content:encoded>
      <author>Jim&#39;s Personal Blog</author>
      <guid>https://pen.waltuh.cyou/read/a/er52j3oae8</guid>
      <pubDate>Sun, 10 May 2026 01:08:13 +0000</pubDate>
    </item>
    <item>
      <title>sepucuk pendapat pribadi: siswa, dan sekolah</title>
      <link>https://pen.waltuh.cyou/yonle/sepucuk-pendapat-pribadi-siswa-dan-sekolah</link>
      <description>&lt;![CDATA[sepucuk pendapat pribadi: siswa, dan sekolah&#xA;&#xA;jika kamu pikir-pikir, keadaan siswa-siswi Indonesia yang kebanyakan tidak dapat menyerap banyak ilmu maupun pengetahuan dari sekolahnya cenderung akan lebih tolol lagi jika pemblokiran wikipedia benar-benar terjadi. kamu lihat:&#xA;&#xA;kurikulum yang tidak jelas, tidak realistis&#xA;&#xA;saat aku pegang kedua buku yang berbeda, satu dari berbasis kurikulum 2013, dan satunya dari kurikulum merdeka, perbedaannya sangat menonjol:&#xA;&#xA;dalam buku kurikulum k13 tersebut, penjelasan materi cenderung lebih luas daripada sebuah tugas per bab. Setiap tugas yang diberikan di dalam buku itu mereferensikan dengan apa yang sudah dijabarkan kepada siswa, Mau itu telah dijelaskan oleh guru maupun tidak, semua jawaban dan pengetahuan dapat didapatkan dari satu buku ini secara otodidak oleh siswa.&#xA;&#xA;perhatikan lampiran 2 halaman ini, lalu simpulkan sendiri:&#xA;gambar&#xA;gambar&#xA;&#xA;sedangkan pada buku kurikulum merdeka, penjelasan pada sebuah materi hampir cenderung nihil pada buku mata pelajaran masing-masing. jika tugas-tugas ini dijelaskan oleh guru terlebih dahulu, mungkin masuk akal, namun jika orang tua yang menjelaskan kepada anaknya, maka kenapa siswa harus masuk sekolah dari awal?&#xA;&#xA;kejadian di lapangan menunjukkan bahwa kebanyakan guru cenderung jarang memberikan penjelasan pada jam kelas dan terkadang hanya dijelaskan pada saat les, dan walaupun itu dibantu dengan memperpanjang waktu sekolah siswa yang awalnya dari jam 6 pagi sampai jam 12 (atau 1 siang) menjadi jam 6 pagi (lebih awal) sampai jam 3:45.&#xA;&#xA;masalahnya, begini:&#xA;penyampaian materi pada buku-buku ini cenderung kompleks, dan bahkan demikian saat lapangan menunjukkan bahwa di Sekolah Dasar pun memiliki masalah seperti ini.&#xA;guru di lapangan yang baru terjun di mata pelajaran ini justru kewalahan dengan kompleksitivitas metode penyampaian materi yang disampaikan. ini seharusnya sudah tidak terjadi di beberapa wilayah, namun hasil di lapangan pun menunjukkan bahwa guru baru pun tetap memiliki masalah serupa.&#xA;kebanyakan guru di lapangan cenderung tidak melakukan penjelasan, dan justru memberikan tugas lalu kemudian, begitu saja (keluar dari kelas saat belum istirahat, memberikan siswa jam kosong).&#xA;siswa yang tidak mengerti dengan materi yang disampaikan cenderung terjebak dengan materi yang diberikan jika tidak ada semacam les, atau pengajaran di rumah&#xA;orang tua terbebankan oleh tugas-tugas anaknya yang dimana seharusnya sudah dijelaskan oleh guru&#xA;&#xA;dan sebenarnya? beberapa sekolah cenderung mengkeep beberapa mata pelajaran agar tetap mengajarkan beberapa dari kurikulum 2013.&#xA;&#xA;kita sudah melihatnya di lapangan, dan konsenkuensinya, bukan main&#xA;&#xA;perhatikan, lalu buka peramban internetmu sendiri:&#xA;beberapa murid-murid SMA pun tidak dapat membaca, atau bahkan menghitung aritmatika dasar (tambah, kurang, kali, bagi) yang dimana seharusnya sudah bisa&#xA;masih sma, tidak dapat baca jam dinding?? apa kabar dengan gurunya sebelumnya? apakah di lingkungannya tidak pernah ajari cara membaca jam dinding sama sekali??&#xA;&#xA;lalu, begini masalahnya:&#xA;jika kita sebut guru-guru molor pada tugasnya di lapangan, sebenarnya ada faktor yang memperjelaskan keadaan guru:&#xA;&#xA;guru kita underpaid. serius.&#xA;&#xA;jika kita lihat keadaan di lapangan, beberapa guru hanya digaji sekitaran 200 ribu ataupun hanya 150 ribu perbulan.&#xA;&#xA;iya. sebanyak uang kas yang kita keluarkan setiap 4 hari.&#xA;&#xA;sebenarnya, beberapa pihak sudah mendesak pemerintah untuk menaikkan gaji guru, namun pemerintah condong ke MBG yang secara bersamaan menyebabkan inflasi harga sembako di beberapa kota beserta tutupnya beberapa UMKM di wilayah sekolah. dan secara bersamaan, gaji guru dipotong di situasi yang bersamaan.&#xA;&#xA;sekarang, sudah lihat kan?&#xA;&#xA;---&#xA;&#xA;mungkin itu saja dariku.&#xA;&#xA;jika terdapat kesalahan, buatlah pos yang mengkoreksi artikelku ini.&#xA;&#xA;sekian,&#xA;&#xA;seorang mantan siswa yang melihat transisi k13 ke kurikulum merdeka.]]&gt;</description>
      <content:encoded><![CDATA[<h2 id="sepucuk-pendapat-pribadi-siswa-dan-sekolah">sepucuk pendapat pribadi: siswa, dan sekolah</h2>

<p>jika kamu pikir-pikir, keadaan siswa-siswi Indonesia yang kebanyakan tidak dapat menyerap banyak ilmu maupun pengetahuan dari sekolahnya cenderung akan lebih tolol lagi jika <a href="https://id.wikipedia.org/wiki/Wikipedia:Pernyataan_resmi_komunitas_Wikipedia_bahasa_Indonesia_terhadap_pembatasan_akses_auth.wikimedia.org_di_Indonesia" rel="nofollow">pemblokiran wikipedia</a> benar-benar terjadi. kamu lihat:</p>

<h2 id="kurikulum-yang-tidak-jelas-tidak-realistis">kurikulum yang tidak jelas, tidak realistis</h2>

<p>saat aku pegang kedua buku yang berbeda, satu dari berbasis kurikulum 2013, dan satunya dari kurikulum merdeka, perbedaannya sangat menonjol:</p>

<p>dalam buku kurikulum k13 tersebut, penjelasan materi cenderung lebih luas daripada sebuah tugas per bab. Setiap tugas yang diberikan di dalam buku itu mereferensikan dengan apa yang sudah dijabarkan kepada siswa, Mau itu telah dijelaskan oleh guru maupun tidak, semua jawaban dan pengetahuan dapat didapatkan dari satu buku ini secara otodidak oleh siswa.</p>

<p>perhatikan lampiran 2 halaman ini, lalu simpulkan sendiri:
<a href="https://media.fedinet.waltuh.cyou/media/aa394e454a4d5d5f8cefef8d9bf56fd80d5b8bfd8c19b2a5c1d07cf243655b56.png" rel="nofollow"><img src="https://media.fedinet.waltuh.cyou/media/aa394e454a4d5d5f8cefef8d9bf56fd80d5b8bfd8c19b2a5c1d07cf243655b56.png" alt="gambar"></a>
<a href="https://media.fedinet.waltuh.cyou/media/09bc31780c586e0710d767f0f4eae92a22626784cd1c34ea818cfa405b5fd19c.png" rel="nofollow"><img src="https://media.fedinet.waltuh.cyou/media/09bc31780c586e0710d767f0f4eae92a22626784cd1c34ea818cfa405b5fd19c.png" alt="gambar"></a></p>

<p>sedangkan pada buku kurikulum merdeka, penjelasan pada sebuah materi hampir cenderung nihil pada buku mata pelajaran masing-masing. jika tugas-tugas ini dijelaskan oleh guru terlebih dahulu, mungkin masuk akal, namun jika orang tua yang menjelaskan kepada anaknya, <strong>maka kenapa siswa harus masuk sekolah dari awal?</strong></p>

<p>kejadian di lapangan menunjukkan bahwa kebanyakan guru cenderung <strong>jarang</strong> memberikan penjelasan pada jam kelas dan terkadang hanya dijelaskan pada saat les, dan walaupun itu dibantu dengan memperpanjang waktu sekolah siswa yang awalnya dari jam 6 pagi sampai jam 12 (atau 1 siang) menjadi jam 6 pagi (lebih awal) <strong>sampai jam 3:45</strong>.</p>

<p>masalahnya, begini:
– penyampaian materi pada buku-buku ini cenderung kompleks, dan bahkan demikian saat lapangan menunjukkan bahwa di Sekolah Dasar pun memiliki masalah seperti ini.
– guru di lapangan yang baru terjun di mata pelajaran ini <strong>justru kewalahan dengan kompleksitivitas</strong> metode penyampaian materi yang disampaikan. ini seharusnya sudah tidak terjadi di beberapa wilayah, namun hasil di lapangan pun menunjukkan bahwa <strong>guru baru pun tetap memiliki masalah serupa</strong>.
– kebanyakan guru di lapangan cenderung <strong>tidak melakukan penjelasan</strong>, dan justru memberikan tugas lalu kemudian, <em>begitu saja</em> (keluar dari kelas saat belum istirahat, memberikan siswa jam kosong).
– siswa yang tidak mengerti dengan materi yang disampaikan cenderung terjebak dengan materi yang diberikan jika tidak ada semacam les, atau pengajaran di rumah
– <strong>orang tua terbebankan oleh tugas-tugas anaknya yang dimana seharusnya sudah dijelaskan oleh guru</strong></p>

<p>dan sebenarnya? beberapa sekolah cenderung meng<em>keep</em> beberapa mata pelajaran agar tetap mengajarkan beberapa dari kurikulum 2013.</p>

<h2 id="kita-sudah-melihatnya-di-lapangan-dan-konsenkuensinya-bukan-main">kita sudah melihatnya di lapangan, dan konsenkuensinya, <strong>bukan main</strong></h2>

<p>perhatikan, lalu buka peramban internetmu sendiri:
– beberapa murid-murid SMA pun <strong>tidak dapat membaca</strong>, atau bahkan <strong>menghitung aritmatika dasar (tambah, kurang, kali, bagi)</strong> yang dimana seharusnya sudah bisa
– <strong>masih sma, tidak dapat baca jam dinding??</strong> apa kabar dengan gurunya sebelumnya? apakah di lingkungannya tidak pernah ajari cara membaca jam dinding sama sekali??</p>

<p>lalu, begini masalahnya:
– jika kita sebut guru-guru <strong>molor</strong> pada tugasnya di lapangan, sebenarnya ada faktor yang memperjelaskan keadaan guru:</p>

<h2 id="guru-kita-underpaid-serius">guru kita underpaid. serius.</h2>

<p>jika kita lihat keadaan di lapangan, beberapa guru hanya digaji sekitaran 200 ribu ataupun hanya 150 ribu <strong>perbulan</strong>.</p>

<p>iya. sebanyak uang kas yang kita keluarkan setiap 4 hari.</p>

<p>sebenarnya, beberapa pihak sudah mendesak pemerintah untuk menaikkan gaji guru, namun pemerintah condong ke MBG yang secara bersamaan menyebabkan inflasi harga sembako di beberapa kota beserta tutupnya beberapa UMKM di wilayah sekolah. dan secara bersamaan, <strong>gaji guru dipotong</strong> di situasi yang bersamaan.</p>

<p>sekarang, sudah lihat kan?</p>

<hr>

<p>mungkin itu saja dariku.</p>

<p>jika terdapat kesalahan, <strong>buatlah pos yang mengkoreksi artikelku ini</strong>.</p>

<p>sekian,</p>

<p>seorang mantan siswa yang melihat transisi k13 ke kurikulum merdeka.</p>
]]></content:encoded>
      <author>Yonle</author>
      <guid>https://pen.waltuh.cyou/read/a/ffh77ci7ob</guid>
      <pubDate>Thu, 23 Apr 2026 10:27:02 +0000</pubDate>
    </item>
    <item>
      <title>A messy little rambling of mine. Might be gibberish</title>
      <link>https://pen.waltuh.cyou/yonle/a-messy-little-rambling-of-mine</link>
      <description>&lt;![CDATA[Well, Look. Since i&#39;ve said this before in the VC, So i might wanna make things clear a bit since i spoke all of that during my little jogging that i can&#39;t really focus on my words.&#xA;&#xA;Caution to reader: This might sounded misogynistic at first, But it&#39;s actually not. If you still thought so, Close this tab.&#xA;&#xA;---&#xA;&#xA;To begin with, I literally didn&#39;t care if you&#39;re a male or female to begin with. If one completely acted like a cunt to the point i can&#39;t even hold my fury, then so be it.&#xA;&#xA;Like any usual middle high schoolers, There&#39;s always that one person that literally despise you for no reason but then will need you for something else, and that kind of person is always here. I would like to say this, though. I really don&#39;t want to have debates to begin with, But given the amount of volumes of BS that i get everyday from these individuals, That same exact incident changed exactly who i am since that very day.&#xA;&#xA;Please remember: I talk about one specific person. It doesn&#39;t even mean that i will treat everyone exactly the same treatment. There&#39;s a reason for why the following happens.&#xA;&#xA;There&#39;s that one girl who since the last year of middle school will always cut me off everytime i talk to teacher or my close friend (rare, but it occurs), or during group discussion. These cuts are not even polite or anything, but rather pure disrespect.&#xA;&#xA;There are time where i literally had enough to that girl that i literally slam my hands onto the table to shut that one person off due to constant cutting off and the disrespect that she put,&#xA;&#xA;When she fight back with words, This time i snapped and shouted back at her, It&#39;s all going on back and forth until a classmate stop both of us.&#xA;&#xA;---&#xA;&#xA;Well, This is basically a messy rambling that i try to recall on my brain that then ended up being messy.&#xA;&#xA;To be frank, I do not really want to be a debater to begin with, But i guess there&#39;s so many factors to the point that I literally became one.]]&gt;</description>
      <content:encoded><![CDATA[<p>Well, Look. Since i&#39;ve said this before in the VC, So i might wanna make things clear a bit since i spoke all of that during my little jogging that i can&#39;t really focus on my words.</p>

<p><strong>Caution to reader</strong>: This might sounded <a href="https://dictionary.cambridge.org/us/dictionary/english/misogynistic" rel="nofollow">misogynistic</a> at first, But it&#39;s actually not. If you still thought so, <strong><a href="https://google.com" rel="nofollow">Close this tab</a></strong>.</p>

<hr>

<p>To begin with, I literally didn&#39;t care if you&#39;re a male or female to begin with. If one completely acted like a cunt to the point i can&#39;t even hold my fury, then so be it.</p>

<p>Like any usual middle high schoolers, There&#39;s always that one person that literally despise you for no reason but then will need you for something else, and that kind of person is always here. I would like to say this, though. I really don&#39;t want to have debates to begin with, But given the amount of volumes of BS that i get everyday from these individuals, That same exact incident changed exactly who i am since that very day.</p>

<p>Please remember: <strong>I talk about one specific person</strong>. It doesn&#39;t even mean that i will treat everyone exactly the same treatment. There&#39;s a reason for why the following happens.</p>

<p>There&#39;s that one girl who since the last year of middle school will always cut me off everytime i talk to teacher or my close friend (rare, but it occurs), or during group discussion. These cuts are not even polite or anything, but rather pure disrespect.</p>

<p>There are time where i literally had enough to that girl that i literally slam my hands onto the table to shut that one person off due to constant cutting off and the disrespect that she put,</p>

<p>When she fight back with words, This time i snapped and shouted back at her, It&#39;s all going on back and forth until a classmate stop both of us.</p>

<hr>

<p>Well, This is basically a messy rambling that i try to recall on my brain that then ended up being messy.</p>

<p>To be frank, I do not really want to be a debater to begin with, But i guess there&#39;s so many factors to the point that I literally became one.</p>
]]></content:encoded>
      <author>Yonle</author>
      <guid>https://pen.waltuh.cyou/read/a/sqrhkana0q</guid>
      <pubDate>Mon, 20 Apr 2026 19:45:15 +0000</pubDate>
    </item>
    <item>
      <title>The Social Web Foundation Adds End-to-End-Encryption to Mastodon and Why This...</title>
      <link>https://pen.waltuh.cyou/autumn/the-social-web-foundation-adds-end-to-end-encryption-to-mastodon-and-why-this</link>
      <description>&lt;![CDATA[The Social Web Foundation Adds End-to-End-Encryption to Mastodon and Why This Is Probably Not a Great Idea&#xA;&#xA;---&#xA;&#xA;    As gregarious as people are, they also love their privacy. Eavesdropping, reading over the shoulder, going through personal affects? Everyone can agree, it is egregious behavior when your privacy is violated, even when justified. Thusly, it is in one&#39;s nature - innocent or otherwise - to engage in the right of privacy. What people do not have the right to, is to demand provision of this privacy from external sources. Historically, you learn to wear your own mask, to bury your own secrets.&#xA;&#xA;    Simultaneously, we continue to see that people are contrarian. As much as the people love their anonymity, they equally love their identity, expressing themselves in both private and public spaces such as bars, clubs, boardwalks, or even Social Networking Services (SNS) like Mastodon. Within these spaces people hold a reasonable expectation to both privacy and respect, i.e. not to be harassed, mocked, doxxed, stalked, have their personal space, or likeness violated, etc. Unfortunately, this cannot always be guaranteed in public or even in private spaces, leading us to the necessity of moderation, which we will touch on later.&#xA;&#xA;    Considering these facts, you are likely to enjoy the idea of secure and private conversations with your associates. If this is the case, you are probably looking for a service that offers End-to-End-Encryption (E2EE). There are many services to choose from, some more secure than others. Whatsapp for example offers convenient but highly insecure E2EE, while Signal Messenger offers a less convenient, but more secure implementation.&#xA;&#xA;---&#xA;&#xA;    E2EE explained simply is when everyone has two keys and a signature. You generate these keys, one public, one private, then start trading public keys and signatures with known associates. When you send a message to anyone, it will be encrypted using their public key &amp; decrypted only by their private key. Your message stays secure in transit. Seal that letter with your signature we mentioned and you&#39;ve proven yourself as the origin, avoiding impersonation.&#xA;&#xA;  Note: E2EE doesn’t stop the network from seeing who talks to who, when, or how often - &#34;privacy&#34; is leaky even if message content is encrypted.&#xA;&#xA;    Many individuals - including myself - have recommended using PGP&#39;s key generation, signing &amp; message encryption/ decryption capabilities to send encrypted messages &#34;anywhere&#34;... this is less than ideal in 2026. The author of a href=&#34;https://www.lvh.io/posts/the-pgp-problem/&#34;The PGP Problem/a - lvh - stated that if you want to talk, &#xA;&#xA;  Use Signal. Or Wire, or WhatsApp, or some other Signal-protocol-based secure messenger.&#xA;&#xA;  Modern secure messengers are purpose-built around messaging. They use privacy-preserving authentication handshakes, repudiable messages, cryptographic ratchets that rekey on every message exchange, and, of course, modern encryption primitives. Messengers are trivially easy to use and there’s no fussing over keys and subkeys. If you use Signal, you get even more than that: you get a system so paranoid about keeping private metadata off servers that it tunnels Giphy searches to avoid traffic analysis attacks, and until relatively recently didn’t even support user profiles.&#xA;&#xA;    As for email?&#xA;&#xA;  Don&#39;t.&#xA;&#xA;---&#xA;&#xA;    Now that we have explained what E2EE is, &#39;The PGP Problem&#39;, and the use of dedicated tools, let us take a look at this - From the Social Web Foundation, Implementing Encrypted Messaging over ActivityPub:&#xA;&#xA;  &#34;Encrypted messaging has become a common feature on many social networks since ActivityPub was created, and its lack has inhibited Social Web adoption and public trust in the network.&#34;&#xA;&#xA;    Do you genuinely believe the lack of E2EE is keeping the masses at bay? The grandmas and grandpas who just want to message their grandchildren? The mothers who just want to know when the next soccer meet is? I assure you, not a single &#34;normie&#34; is worried about E2EE unless they have swallowed marketing material. Perceived low conversion rates are because these people are literally addicted to their dopamine apps. The &#34;Social Web&#34; is fundamentally not Facebook, that is what you&#39;re observing.&#xA;&#xA;---&#xA;&#xA;    Everyone has some expectation of privacy, particularly in regards to federated SNS. Many users are tired of service providers like Facebook &#34;harvesting their data points for actionable business insights&#34; leading them to options that provide a semblance of self agency and sovereignty. On one hand, these services do not traditionally track users, on the other hand, ActivityProtocol (AP) is running behind the scenes as the language of many of your favorite services, i.e. Mastodon. This type of protocol and the way it behaves is referred to as a broadcast protocol. Everyone, everywhere can see you and what you do, who you talk to, and when. &#xA;&#xA;    This is especially true when the other server is not fully respecting the protocol, when disrespected, &#34;private&#34; accounts and posts requiring follower approval may not be entirely private. This can lead to confusion and anger between users and operators for being followed by people who shouldn&#39;t have access, bots, or tracking services, each of which are disrespecting wishes, consent, or the protocol.&#xA;&#xA;    Because of these quirks, there are some nuanced avenues for harassment I will not outline here. Actively processing, investigating, and remediating the deluge of reports in the attempt to promptly moderate against rule breakers, abuse, harassment, exploitation, scams, etc. is already a Herculean and Sisyphean task. Due to abuse by both network users and operators, there are now regulations around the world regarding data retention or lack thereof, along with legal obligations and potential demand. &#xA;&#xA;---&#xA;&#xA;    Everything so far leads the question with E2EE &amp; SNS to quickly become: How do we deploy this at scale, without breaking moderation, without confusing users, &amp; without inviting legal or security failure?&#xA;&#xA;     If an operator offers E2EE on an SNS like Mastodon - due to the nature of the protocol being comparable to a public space - suddenly we see the landscape become exponentially difficult, if not impossible to moderate. Operators will place themselves into the unfortunate position where they cannot properly serve and protect their users, or their legal obligations. Additionally, if you offer a secure service and it is not secure or your implementation is bad, what will you do if a litigious troll attempts to sue?&#xA;&#xA;    To introduce E2EE into public‑facing SNS while simultaneously trying to “solve” abuse, moderation, &amp; legal exposure, the path of least resistance is likely to be “just verify everyone”, pushing identity‑linked, KYC‑style identity checks as a way to “anchor” trust &amp; accountability. The loudest users and largest operators may start demanding identity verification to ease this friction. &#xA;&#xA;---&#xA;&#xA;    This appears in the long run to be potentially bad for privacy, and it’s exactly why I strongly believe E2EE should be kept out of the core social layer &amp; kept within dedicated tools instead. If people want to hide themselves, they have many options - third party clients, applications, and tools - as they have always had the ability and right to do/ use. It is not the operators responsibility to provide their users the ability to hide. Don&#39;t know how to encrypt your own messages? Talk on Signal. Mastodon is a public space, take your private conversation elsewhere. Don&#39;t forget, people were writing encrypted messages by hand before computers.&#xA;&#xA;   The cost outweighs the benefit. Please, make the sane decision, don&#39;t over complicate the backend and keep the public social layer unencrypted. Mastodon is a public space, use purpose built tools like Signal for your private conversations.&#xA;&#xA;---&#xA;&#xA;  P.S. You do not need E2EE everywhere. If you indiscriminately E2EE with everyone across your personal, business, and social life, then a single impersonation can spread everywhere. At that point, the question becomes: how do you prove an imposter is not you?&#xA;&#xA;---&#xA;&#xA;    Yes, at the moment these are optional features, but we ultimately teach our users unsafe and unsanitary practices by telling them it is alright to shit where they eat. Once it is the social norm, even if optional, it will be hard to offer a service that doesn&#39;t let users shit where they eat. In the long run this idea appears horrible. As the user, why are you putting the burden of your secrecy on the operator? As the operator, what will you do when users start placing the burden of their secrecy on you?&#xA;&#xA;Source: https://socialwebfoundation.org/2025/12/19/implementing-encrypted-messaging-over-activitypub/&#xA;&#xA;---&#xA;&#xA;    Update: Was informed of and removed mention of GPG as it is insecure, that same friend just provided this article as well, it is a wonderful read, and I will be updating this piece accordingly:&#xA;&#xA;https://www.lvh.io/posts/the-pgp-problem/&#xA;&#xA;    Second Update: Removed this following section and updated due to old/ misinformation -&#xA;&#xA;  If you want to send encrypted messages anywhere, regardless of service, you could do-it-yourself by using PGP&#39;s key generation &amp; message encryption/ decryption capabilities, alongside something like openBSD&#39;s Signify for signing and verification. There is also terminology like key rotation and key recovery but these over-complicate things for a simple chat between known associates.&#xA;&#xA;  Trade public keys, treat private-key leaks as full identity compromise, and keep circles small to foster high-trust networks.]]&gt;</description>
      <content:encoded><![CDATA[<p>The Social Web Foundation Adds End-to-End-Encryption to Mastodon and Why This Is Probably Not a Great Idea</p>

<hr>

<p>    As gregarious as people are, they also love their privacy. Eavesdropping, reading over the shoulder, going through personal affects? Everyone can agree, it is egregious behavior when your privacy is violated, even when justified. Thusly, it is in one&#39;s nature – innocent or otherwise – to engage in the right of privacy. What people do not have the right to, is to demand provision of this privacy from external sources. Historically, you learn to wear your own mask, to bury your own secrets.</p>

<p>    Simultaneously, we continue to see that people are contrarian. As much as the people love their anonymity, they equally love their identity, expressing themselves in both private and public spaces such as bars, clubs, boardwalks, or even Social Networking Services (SNS) like Mastodon. Within these spaces people hold a reasonable expectation to both privacy and respect, i.e. not to be harassed, mocked, doxxed, stalked, have their personal space, or likeness violated, etc. Unfortunately, this cannot always be guaranteed in public or even in private spaces, leading us to the necessity of moderation, which we will touch on later.</p>

<p>    Considering these facts, you are likely to enjoy the idea of secure and private conversations with your associates. If this is the case, you are probably looking for a service that offers End-to-End-Encryption (E2EE). There are many services to choose from, some more secure than others. Whatsapp for example offers convenient but highly insecure E2EE, while Signal Messenger offers a less convenient, but more secure implementation.</p>

<hr>

<p>    E2EE explained simply is when everyone has two keys and a signature. You generate these keys, one public, one private, then start trading public keys and signatures with known associates. When you send a message to anyone, it will be encrypted using their public key &amp; decrypted only by their private key. Your message stays secure in transit. Seal that letter with your signature we mentioned and you&#39;ve proven yourself as the origin, avoiding impersonation.</p>

<blockquote><p>Note: E2EE doesn’t stop the network from seeing who talks to who, when, or how often – “privacy” is leaky even if message content is encrypted.</p></blockquote>

<p>    Many individuals – including myself – have recommended using PGP&#39;s key generation, signing &amp; message encryption/ decryption capabilities to send encrypted messages “anywhere”... this is less than ideal in 2026. The author of <a href="https://www.lvh.io/posts/the-pgp-problem/" rel="nofollow">The PGP Problem</a> – lvh – stated that if you want to talk,</p>

<blockquote><p>Use Signal. Or Wire, or WhatsApp, or some other Signal-protocol-based secure messenger.</p>

<p>Modern secure messengers are purpose-built around messaging. They use privacy-preserving authentication handshakes, repudiable messages, cryptographic ratchets that rekey on every message exchange, and, of course, modern encryption primitives. Messengers are trivially easy to use and there’s no fussing over keys and subkeys. If you use Signal, you get even more than that: you get a system so paranoid about keeping private metadata off servers that it tunnels Giphy searches to avoid traffic analysis attacks, and until relatively recently didn’t even support user profiles.</p></blockquote>

<p>    As for email?</p>

<blockquote><p>Don&#39;t.</p></blockquote>

<hr>

<p>    Now that we have explained what E2EE is, &#39;The PGP Problem&#39;, and the use of dedicated tools, let us take a look at this – From the Social Web Foundation, Implementing Encrypted Messaging over ActivityPub:</p>

<blockquote><p>“Encrypted messaging has become a common feature on many social networks since ActivityPub was created, and its lack has inhibited Social Web adoption and public trust in the network.”</p></blockquote>

<p>    Do you genuinely believe the lack of E2EE is keeping the masses at bay? The grandmas and grandpas who just want to message their grandchildren? The mothers who just want to know when the next soccer meet is? I assure you, not a single “normie” is worried about E2EE unless they have swallowed marketing material. Perceived low conversion rates are because these people are literally addicted to their dopamine apps. The “Social Web” is fundamentally not Facebook, that is what you&#39;re observing.</p>

<hr>

<p>    Everyone has some expectation of privacy, particularly in regards to federated SNS. Many users are tired of service providers like Facebook “harvesting their data points for actionable business insights” leading them to options that provide a semblance of self agency and sovereignty. On one hand, these services do not traditionally track users, on the other hand, ActivityProtocol (AP) is running behind the scenes as the language of many of your favorite services, i.e. Mastodon. This type of protocol and the way it behaves is referred to as a broadcast protocol. Everyone, everywhere can see you and what you do, who you talk to, and when.</p>

<p>    This is especially true when the other server is not fully respecting the protocol, when disrespected, “private” accounts and posts requiring follower approval may not be entirely private. This can lead to confusion and anger between users and operators for being followed by people who shouldn&#39;t have access, bots, or tracking services, each of which are disrespecting wishes, consent, or the protocol.</p>

<p>    Because of these quirks, there are some nuanced avenues for harassment I will not outline here. Actively processing, investigating, and remediating the deluge of reports in the attempt to promptly moderate against rule breakers, abuse, harassment, exploitation, scams, etc. is already a Herculean and Sisyphean task. Due to abuse by both network users and operators, there are now regulations around the world regarding data retention or lack thereof, along with legal obligations and potential demand.</p>

<hr>

<p>    Everything so far leads the question with E2EE &amp; SNS to quickly become: How do we deploy this at scale, without breaking moderation, without confusing users, &amp; without inviting legal or security failure?</p>

<p>     If an operator offers E2EE on an SNS like Mastodon – due to the nature of the protocol being comparable to a public space – suddenly we see the landscape become exponentially difficult, if not impossible to moderate. Operators will place themselves into the unfortunate position where they cannot properly serve and protect their users, or their legal obligations. Additionally, if you offer a secure service and it is not secure or your implementation is bad, what will you do if a litigious troll attempts to sue?</p>

<p>    To introduce E2EE into public‑facing SNS while simultaneously trying to “solve” abuse, moderation, &amp; legal exposure, the path of least resistance is likely to be “just verify everyone”, pushing identity‑linked, KYC‑style identity checks as a way to “anchor” trust &amp; accountability. The loudest users and largest operators may start demanding identity verification to ease this friction.</p>

<hr>

<p>    This appears in the long run to be potentially bad for privacy, and it’s exactly why I strongly believe E2EE should be kept out of the core social layer &amp; kept within dedicated tools instead. If people want to hide themselves, they have many options – third party clients, applications, and tools – as they have always had the ability and right to do/ use. It is not the operators responsibility to provide their users the ability to hide. Don&#39;t know how to encrypt your own messages? Talk on Signal. Mastodon is a public space, take your private conversation elsewhere. Don&#39;t forget, people were writing encrypted messages by hand before computers.</p>

<p>   The cost outweighs the benefit. Please, make the sane decision, don&#39;t over complicate the backend and keep the public social layer unencrypted. Mastodon is a public space, use purpose built tools like Signal for your private conversations.</p>

<hr>

<blockquote><p>P.S. You do not need E2EE everywhere. If you indiscriminately E2EE with everyone across your personal, business, and social life, then a single impersonation can spread everywhere. At that point, the question becomes: how do you prove an imposter is not you?</p></blockquote>

<hr>

<p>    Yes, at the moment these are optional features, but we ultimately teach our users unsafe and unsanitary practices by telling them it is alright to shit where they eat. Once it is the social norm, even if optional, it will be hard to offer a service that doesn&#39;t let users shit where they eat. In the long run this idea appears horrible. As the user, why are you putting the burden of your secrecy on the operator? As the operator, what will you do when users start placing the burden of their secrecy on you?</p>

<p>Source: <a href="https://socialwebfoundation.org/2025/12/19/implementing-encrypted-messaging-over-activitypub/" rel="nofollow">https://socialwebfoundation.org/2025/12/19/implementing-encrypted-messaging-over-activitypub/</a></p>

<hr>

<p>    Update: Was informed of and removed mention of GPG as it is insecure, that same friend just provided this article as well, it is a wonderful read, and I will be updating this piece accordingly:</p>

<p><a href="https://www.lvh.io/posts/the-pgp-problem/" rel="nofollow">https://www.lvh.io/posts/the-pgp-problem/</a></p>

<p>    Second Update: Removed this following section and updated due to old/ misinformation -</p>

<blockquote><p>   If you want to send encrypted messages anywhere, regardless of service, you could do-it-yourself by using PGP&#39;s key generation &amp; message encryption/ decryption capabilities, alongside something like openBSD&#39;s Signify for signing and verification. There is also terminology like key rotation and key recovery but these over-complicate things for a simple chat between known associates.</p>

<p>   Trade public keys, treat private-key leaks as full identity compromise, and keep circles small to foster high-trust networks.</p></blockquote>
]]></content:encoded>
      <author>autumn</author>
      <guid>https://pen.waltuh.cyou/read/a/ri4cqqiv19</guid>
      <pubDate>Tue, 14 Apr 2026 20:59:00 +0000</pubDate>
    </item>
    <item>
      <title>Measurement</title>
      <link>https://pen.waltuh.cyou/misa/measurement-rn66</link>
      <description>&lt;![CDATA[In physics, we basically do measurement on all things that can measured. We see a phenomenon or an object, we observe it, take a measurement, and make a mathematical model for describe and predict the behavior of those things.&#xA;&#xA;Since ancient times, Human love to compare things. Imagine if we want to take a free pizza from a party, we would try to see which one is bigger or smaller piece, and of course we will take a bigger piece, right? but how do we know it is bigger that the other piece? simple, just compare it with other piece and you can tell by just looking at it. hey it is a bigger pizza.&#xA;&#xA;Then, there is a question, if something is big, how big is it? If something is long, how long is it compared to another one? Which one is actually bigger? We cannot just say “big” or “small” without knowing how much, right? So we need a way to compare a quantity with another quantity of the same kind. From there, math number is introduced to define and express that quantity clearly.&#xA;&#xA;lets take an example, there is a book and there are identical pens. how we can define how long that book is? we can put pens in row along book and we can tell&#xA;&#xA;&#34;Hey, the book is two pens long&#34;. The length of the book, which is what we measure, is called a quantity. The pen is the object we use as a comparison, which we call a unit, and 2 is the measurement value. With this, we know the length of the book equals the length of 2 pens.&#xA;&#xA;That is measurement. Measurement is the process of comparing a object quantity with another object as a unit. We only can do measurement with comparing quantity with same quantity. length book with length pen, weight with weight, and much more.&#xA;&#xA;The Systeme International (SI) of Units&#xA;&#xA;Imagine we take a measurement like in the example before. Lets say our friend measures the same book using his own pen as a unit of comparison. There is a problem here are the length of his pen might be different from ours, right? If that happens, the measurement value can change. The book might be measured as 3 pens long simply because his pen is smaller. This can lead to confusion.&#xA;&#xA;Now, let’s say another friend measures the same book, but instead of using a pen, he uses a marker, which is a totally different unit. He might find that the length of the book is one and a half markers, while we got a result of 2 pens. This means we can try to convert our unit (length of pen) into his unit (length of marker), which sounds great. However, there is a problem, the conversion process can lead to inaccuracy.&#xA;&#xA;This problem actually happened in the real world. Since ancient times, humans traded using different units from different cultures and regions, which made conversion and price determination difficult. The inconsistency of units often led to fraud and unfairness in trade. This also happened in Ancien Régime, where until 1795, France used many different systems of measurement without a unified standard. There was even widespread abuse of measurement standards for taxation and trade.&#xA;&#xA;The solution to this problem was the creation of a standardized and universal system called the metric system. Thanks to the French Revolution, this system was introduced and later became the foundation of the system are used today. Not go too deep into the history here.&#xA;&#xA;The International System of Units (SI), which consists of 7 base units and its quantity that are widely used by many countries around the world&#xA;&#xA;| Quantity              | Unit Name | Symbol | Dimension |&#xA;|----------------------|----------|--------|-----------|&#xA;| Length               | meter    | m      | [L]       |&#xA;| Mass                 | kilogram | kg     | [M]       |&#xA;| Time                 | second   | s      | [T]       |&#xA;| Electric Current     | ampere   | A      | [I]       |&#xA;| Temperature          | kelvin   | K      | [Θ]       |&#xA;| Amount of Substance  | mole     | mol    | [N]       |&#xA;| Luminous Intensity   | candela  | cd     | [J]       |&#xA;&#xA;Each unit has its own definition and history. For example, for mass, it is used a physical prototype made of a platinum–iridium cylinder called the kilogram. One kilogram was defined as the mass of that cylinder. This prototype was copied and distributed to many countries as the international standard of mass.&#xA;&#xA;Of course, each definition has been updated over time as technology advances. The more of history of these developments on the official website of the International Bureau of Weights and Measures, the international organization responsible for maintaining these standards&#xA;&#xA;https://www.bipm.org/en/history-si]]&gt;</description>
      <content:encoded><![CDATA[<p>In physics, we basically do measurement on all things that can measured. We see a phenomenon or an object, we observe it, take a measurement, and make a mathematical model for describe and predict the behavior of those things.</p>

<p>Since ancient times, Human love to compare things. Imagine if we want to take a free pizza from a party, we would try to see which one is bigger or smaller piece, and of course we will take a bigger piece, right? but how do we know it is bigger that the other piece? simple, just compare it with other piece and you can tell by just looking at it. hey it is a bigger pizza.</p>

<p>Then, there is a question, if something is big, how big is it? If something is long, how long is it compared to another one? Which one is actually bigger? We cannot just say “big” or “small” without knowing how much, right? So we need a way to compare a quantity with another quantity of the same kind. From there, math number is introduced to define and express that quantity clearly.</p>

<p>lets take an example, there is a book and there are identical pens. how we can define how long that book is? we can put pens in row along book and we can tell</p>

<p>“Hey, the book is two pens long”. The length of the book, which is what we measure, is called a quantity. The pen is the object we use as a comparison, which we call a unit, and 2 is the measurement value. With this, we know the length of the book equals the length of 2 pens.</p>

<p>That is measurement. Measurement is the process of comparing a object quantity with another object as a unit. We only can do measurement with comparing quantity with same quantity. length book with length pen, weight with weight, and much more.</p>

<h2 id="the-systeme-international-si-of-units">The Systeme International (SI) of Units</h2>

<p>Imagine we take a measurement like in the example before. Lets say our friend measures the same book using his own pen as a unit of comparison. There is a problem here are the length of his pen might be different from ours, right? If that happens, the measurement value can change. The book might be measured as 3 pens long simply because his pen is smaller. This can lead to confusion.</p>

<p>Now, let’s say another friend measures the same book, but instead of using a pen, he uses a marker, which is a totally different unit. He might find that the length of the book is one and a half markers, while we got a result of 2 pens. This means we can try to convert our unit (length of pen) into his unit (length of marker), which sounds great. However, there is a problem, the conversion process can lead to inaccuracy.</p>

<p>This problem actually happened in the real world. Since ancient times, humans traded using different units from different cultures and regions, which made conversion and price determination difficult. The inconsistency of units often led to fraud and unfairness in trade. This also happened in Ancien Régime, where until 1795, France used many different systems of measurement without a unified standard. There was even widespread abuse of measurement standards for taxation and trade.</p>

<p>The solution to this problem was the creation of a standardized and universal system called the metric system. Thanks to the French Revolution, this system was introduced and later became the foundation of the system are used today. Not go too deep into the history here.</p>

<p>The International System of Units (SI), which consists of 7 base units and its quantity that are widely used by many countries around the world</p>

<table>
<thead>
<tr>
<th>Quantity</th>
<th>Unit Name</th>
<th>Symbol</th>
<th>Dimension</th>
</tr>
</thead>

<tbody>
<tr>
<td>Length</td>
<td>meter</td>
<td>m</td>
<td>[L]</td>
</tr>

<tr>
<td>Mass</td>
<td>kilogram</td>
<td>kg</td>
<td>[M]</td>
</tr>

<tr>
<td>Time</td>
<td>second</td>
<td>s</td>
<td>[T]</td>
</tr>

<tr>
<td>Electric Current</td>
<td>ampere</td>
<td>A</td>
<td>[I]</td>
</tr>

<tr>
<td>Temperature</td>
<td>kelvin</td>
<td>K</td>
<td>[Θ]</td>
</tr>

<tr>
<td>Amount of Substance</td>
<td>mole</td>
<td>mol</td>
<td>[N]</td>
</tr>

<tr>
<td>Luminous Intensity</td>
<td>candela</td>
<td>cd</td>
<td>[J]</td>
</tr>
</tbody>
</table>

<p>Each unit has its own definition and history. For example, for mass, it is used a physical prototype made of a platinum–iridium cylinder called the kilogram. One kilogram was defined as the mass of that cylinder. This prototype was copied and distributed to many countries as the international standard of mass.</p>

<p>Of course, each definition has been updated over time as technology advances. The more of history of these developments on the official website of the International Bureau of Weights and Measures, the international organization responsible for maintaining these standards</p>

<p><a href="https://www.bipm.org/en/history-si" rel="nofollow">https://www.bipm.org/en/history-si</a></p>
]]></content:encoded>
      <author>Misa</author>
      <guid>https://pen.waltuh.cyou/read/a/7eawxud9os</guid>
      <pubDate>Fri, 27 Mar 2026 17:07:46 +0000</pubDate>
    </item>
    <item>
      <title>Written: April 25, 2024</title>
      <link>https://pen.waltuh.cyou/autumn/the-paradox-of-ownership-in-the-digital-age</link>
      <description>&lt;![CDATA[Written: April 25, 2024&#xA;Published: March 11, 2026&#xA;&#xA;The Paradox of Ownership in the Digital Age:&#xA; How DMCA and DRM Limit Access and Undermine Preservation Efforts&#xA;&#xA; The digital age has ushered in a revolution in how we access and interact with information and culture. E-books, streaming services, and online libraries offer a seemingly boundless collection of knowledge and creative works at our fingertips. However, the concept of ownership in this new landscape remains shrouded in ambiguity. This essay explores how the Digital Millennium Copyright Act (DMCA) and Digital Rights Management (DRM) technologies, intended to protect copyright, create a system where consumers have limited control over their digital purchases. These limitations hinder fair use, restrict access for institutions like libraries and archives, and ultimately raise fundamental questions about true ownership in the digital age.&#xA;&#xA; Librarians and archivists stand as the guardians of cultural heritage, ensuring future generations have access to the knowledge and creative output of the past. However, the DMCA throws a wrench into their efforts. The act restricts activities like copying and sharing for educational purposes, which are crucial for libraries fulfilling their mission of disseminating information and fostering creativity. As highlighted by McDermott (2012), &#34;complex copyright laws and a misunderstanding of fair use threaten libraries&#39; ability to fulfill their mission of providing information access and fostering creativity&#34;.  Librarians often rely on fair use to share excerpts of copyrighted works for educational purposes, create digital copies for long-term preservation, or offer interlibrary loan services. The DMCA&#39;s restrictions on these activities create a chilling effect, hindering innovation and jeopardizing the long-term accessibility of knowledge.&#xA;&#xA; Imagine a scenario where a library owns a physical copy of a book out of print but still protected by copyright. Under the DMCA, the library may be unable to scan and offer a digital copy, even though this could significantly increase accessibility for patrons.  This situation exemplifies the tension between copyright protection and the public&#39;s right to access information.  Furthermore, the DMCA&#39;s limitations can restrict libraries from archiving digital materials altogether.  A library may be hesitant to acquire e-books due to concerns about the long-term accessibility of the content, potentially impacting user access to valuable resources.&#xA;&#xA; The DMCA&#39;s impact extends beyond access limitations. The act fosters a culture of fear and uncertainty surrounding fair use. Libraries may be reluctant to engage in activities deemed potentially infringing due to the threat of costly litigation; hindering innovation and libraries&#39; ability to effectively serve their communities in this digital age.&#xA;&#xA; The limitations imposed by the DMCA are further compounded by Digital Rights Management (DRM) technologies. DRM software encrypts content and restricts how users can access and utilize their digital purchases. While DRM serves the purpose of protecting copyrighted material from unauthorized copying and distribution, it also undermines the very notion of ownership in the digital sphere. When consumers purchase an e-book or song, they are essentially buying a license to access the work under certain conditions, not the work itself.&#xA;&#xA; Scharf (2010) aptly argues that DRM &#34;prioritizes control over user rights&#34;. This translates to limited user control over digital purchases. Imagine purchasing a digital book that you cannot lend to a friend or critically analyze online due to DRM restrictions. This scenario exemplifies how the current system prioritizes control by copyright holders over user rights. Furthermore, the ever-evolving nature of DRM software raises concerns about its long-term compatibility. The potential obsolescence of DRM could render previously purchased content inaccessible in the future, effectively negating any sense of ownership.&#xA;&#xA; Scharf (2010) further emphasizes the complex relationship between fair use and DRM. &#34;Any attempt to encapsulate fair use provisions within DRM would have drawbacks for both right holders and users...&#34; (p. 182). This quote highlights the inherent tension that exists between user rights and copyright holder control. Striking a balance between the two will be critical in moving forward.&#xA;&#xA; The limitations of DMCA and DRM extend beyond immediate user experience and have a profound impact on long-term preservation efforts. Libraries and archives face significant challenges in preserving digital content due to these restrictions. As Gasaway (2007) points out, &#34;current limitations on copying and distribution don&#39;t translate well to digital media&#34;.&#xA;&#xA; Unlike physical books, digital files can become inaccessible over time due to changes in file formats or software incompatibility. This presents a significant hurdle for long-term preservation. The focus on &#34;preservation-only&#34; exceptions with restricted access, as discussed in the article by Gasaway (2007), creates a paradox. Restricted access undermines the core purpose of preservation, which is to ensure future generations can access the information. One quote from the article emphasizes this concern: &#34;One question is whether any user should have access to preservation only-copies. In fact, one could argue that the copy is no longer for preservation only if access is being granted to users&#34; (Gasaway, 2007). This quote confirms the concern that restricted access to preserved works challenges the true purpose of preservation, which is to ensure future access. Additionally, the ever-evolving nature of digital formats and technology poses a challenge for long-term preservation.&#xA;&#xA; While the limitations of current copyright law and DRM pose significant challenges, emerging technologies like blockchain offer a potential solution for securing ownership of digital assets. Blockchain technology utilizes a distributed ledger system, where data is recorded across a network of computers. This creates an immutable record of ownership that is transparent and tamper-proof. Bodó et al. (2018) discusses the potential of blockchain for copyright protection, arguing that “Distributed ledgers are a general-purpose technology, meaning that they are freely configurable to any and every application. In theory, this makes it relatively easy to correspond the core building blocks of blockchain technology to fundamental concepts in copyright law.” (p.314). This further exemplifies how blockchain technology could potentially be a powerful tool for enforcing intellectual property rights through distributed ledgers.&#xA;&#xA; In theory, blockchain could be used to track ownership of digital content, ensuring creators receive appropriate compensation for their work. Additionally, blockchain could potentially facilitate secure access control for libraries and archives, allowing them to preserve digital materials while ensuring copyright compliance. However, it is important to acknowledge the limitations of blockchain technology in the context of digital preservation.&#xA;&#xA; Firstly, blockchain itself cannot store copious amounts of data efficiently. While ownership records could be stored on the blockchain, the actual content would likely need to be stored elsewhere. This raises questions about long-term accessibility and potential compatibility issues between storage solutions and future technologies. Secondly, integrating existing copyright laws with blockchain technology presents a complex challenge.&#xA;&#xA; Despite these limitations, blockchain offers a promising avenue for exploring new models of digital ownership and preservation. As Bodó et al. (2018) concludes, &#34; Still, should blockchain technology reach its market potential, it may have significant—perhaps transformative—impact on copyright in the digital environment. &#34; (p. 336). Collaboration between stakeholders – including content creators, copyright holders, technology companies, and libraries – will be crucial in determining how best to leverage blockchain for a more balanced digital ecosystem.&#xA;&#xA; The issue of digital ownership becomes even more complex when considering piracy. While piracy undoubtedly has negative consequences, the article by Kim et al. (2018) introduces a thought-provoking concept: the &#34;invisible hand&#34; of piracy. The authors argue that &#34;When information goods are sold to consumers via a retailer, in certain situations, a moderate level of piracy seems to have a surprising positive impact on the profits of the manufacturer and the retailer while, at the same time, enhancing consumer welfare.&#34; (Kim et al., 2018, pp. 1117). They explain how piracy can act as a &#34;shadow competitor,&#34; forcing manufacturers and retailers to lower prices or improve accessibility, potentially leading to a more efficient supply chain (Kim et al., 2018). This challenges the current legal framework and traditional views on ownership of digital goods. The concept of &#34;owning&#34; digital media becomes blurry when copying is near-effortless. Piracy can be seen as a symptom of a broken market, where consumers resort to piracy due to limited access or inflated costs. Perhaps a more nuanced approach to piracy is needed, considering the potential benefits and drawbacks in specific situations.&#xA;&#xA; In conclusion, the DMCA and DRM, while intended to protect copyright, create a system that undermines the concept of true ownership in the digital age.  Consumers have limited control over their purchases, fair use is restricted, and long-term preservation of digital materials is hindered. Librarians and archivists, who play a crucial role in safeguarding cultural heritage, are particularly impacted by these limitations.&#xA;&#xA; Moving forward, a more balanced approach is necessary, one that respects copyright while ensuring fair use rights, promoting open access, and facilitating long-term preservation of our digital heritage. This could involve a few avenues:&#xA; • Revising DMCA exemptions for libraries and archives: Expanding exemptions to allow libraries to create digital copies for preservation purposes and offer interlibrary loan services for digital materials.&#xA;&#xA; • Exploring alternative preservation strategies: Investigating the potential of blockchain technology for secure ownership records while exploring complementary strategies for content preservation outside the blockchain ecosystem.&#xA;&#xA; • Encouraging collaboration between content creators, copyright holders, technology companies, and user groups to develop new models that prioritize both ownership and accessibility. This could involve exploring innovative licensing models that offer more user control and exploring new revenue streams for content creators in the digital age.&#xA;&#xA; • Re-evaluating the role of piracy: Considering the potential benefits and drawbacks of piracy in specific contexts and exploring strategies to address the underlying issues that lead to piracy, such as limited access or high costs.&#xA;&#xA;&#x9;By addressing these challenges, we can move towards a digital ecosystem that fosters creativity, ensures long-term access to information, and respects the rights of both creators and consumers.  A system that strikes a balance between copyright protection and fair use is essential for a healthy digital environment where knowledge and culture can continue to thrive.&#xA;&#xA;Some additional considerations we can take with us moving forward:&#xA; • Educating users about copyright law, fair use rights, and responsible digital citizenship can help foster a more balanced environment. Libraries and educational institutions can play a crucial role in these efforts.&#xA;&#xA; • Developing open access models that will facilitate open access initiatives that ensure the public has access to scholarly research and cultural heritage materials helping to democratize access to knowledge and encourage innovation.&#xA;&#xA; • Investing in robust and secure digital storage solutions for long-term preservation of digital materials. Collaboration between government agencies, libraries, and technology companies will be key in achieving these goals.&#xA;&#xA; Ultimately, the question of ownership in the digital age is a complex one with no easy answers.  However, by fostering dialogue, exploring innovative solutions, and prioritizing both access and creator rights, we can create a more equitable and sustainable digital future.&#xA;&#xA; Capitalists: ...&#34;You will own nothing and you will be happy.&#34;&#xA; Everyone else: ...&#34;Stand up me hearties, yo ho!&#34;&#xA;&#xA;Reference List&#xA;&#xA;Bodó, A., et al. (2018). Copyright in the Blockchain Era: Enforcing Intellectual Property Rights Through Distributed Ledgers. Journal of Intellectual Property Law &amp; Practice, 13(8), 741-750.&#xA;&#xA;Gasaway, L. (2007). Digital Millennium Copyright Act and Library Preservation: A Paradox of Access and Control. Library Resources &amp; Technical Services, 51(4), 1329-1337.&#xA;&#xA;Kim, J., et al. (2018). The Invisible Hand of Piracy: How Moderate Levels of Piracy Can Benefit Businesses and Consumers. Journal of Marketing Research, 55(5), 1112-1132.&#xA;&#xA;McDermott, S. (2012). The Chilling Effects of Copyright Law on Libraries and Archives. D-Lib Magazine, 18(5/6), 1-10.&#xA;&#xA;Scharf, M. B. (2010). Fair Use in a Digital World: The Future of User Rights in the Information Society. Duke Law Journal, 60(2), 181-238.]]&gt;</description>
      <content:encoded><![CDATA[<p>Written: April 25, 2024
Published: March 11, 2026</p>

<p>The Paradox of Ownership in the Digital Age:
 How DMCA and DRM Limit Access and Undermine Preservation Efforts</p>

<p> The digital age has ushered in a revolution in how we access and interact with information and culture. E-books, streaming services, and online libraries offer a seemingly boundless collection of knowledge and creative works at our fingertips. However, the concept of ownership in this new landscape remains shrouded in ambiguity. This essay explores how the Digital Millennium Copyright Act (DMCA) and Digital Rights Management (DRM) technologies, intended to protect copyright, create a system where consumers have limited control over their digital purchases. These limitations hinder fair use, restrict access for institutions like libraries and archives, and ultimately raise fundamental questions about true ownership in the digital age.</p>

<p> Librarians and archivists stand as the guardians of cultural heritage, ensuring future generations have access to the knowledge and creative output of the past. However, the DMCA throws a wrench into their efforts. The act restricts activities like copying and sharing for educational purposes, which are crucial for libraries fulfilling their mission of disseminating information and fostering creativity. As highlighted by McDermott (2012), “complex copyright laws and a misunderstanding of fair use threaten libraries&#39; ability to fulfill their mission of providing information access and fostering creativity”.  Librarians often rely on fair use to share excerpts of copyrighted works for educational purposes, create digital copies for long-term preservation, or offer interlibrary loan services. The DMCA&#39;s restrictions on these activities create a chilling effect, hindering innovation and jeopardizing the long-term accessibility of knowledge.</p>

<p> Imagine a scenario where a library owns a physical copy of a book out of print but still protected by copyright. Under the DMCA, the library may be unable to scan and offer a digital copy, even though this could significantly increase accessibility for patrons.  This situation exemplifies the tension between copyright protection and the public&#39;s right to access information.  Furthermore, the DMCA&#39;s limitations can restrict libraries from archiving digital materials altogether.  A library may be hesitant to acquire e-books due to concerns about the long-term accessibility of the content, potentially impacting user access to valuable resources.</p>

<p> The DMCA&#39;s impact extends beyond access limitations. The act fosters a culture of fear and uncertainty surrounding fair use. Libraries may be reluctant to engage in activities deemed potentially infringing due to the threat of costly litigation; hindering innovation and libraries&#39; ability to effectively serve their communities in this digital age.</p>

<p> The limitations imposed by the DMCA are further compounded by Digital Rights Management (DRM) technologies. DRM software encrypts content and restricts how users can access and utilize their digital purchases. While DRM serves the purpose of protecting copyrighted material from unauthorized copying and distribution, it also undermines the very notion of ownership in the digital sphere. When consumers purchase an e-book or song, they are essentially buying a license to access the work under certain conditions, not the work itself.</p>

<p> Scharf (2010) aptly argues that DRM “prioritizes control over user rights”. This translates to limited user control over digital purchases. Imagine purchasing a digital book that you cannot lend to a friend or critically analyze online due to DRM restrictions. This scenario exemplifies how the current system prioritizes control by copyright holders over user rights. Furthermore, the ever-evolving nature of DRM software raises concerns about its long-term compatibility. The potential obsolescence of DRM could render previously purchased content inaccessible in the future, effectively negating any sense of ownership.</p>

<p> Scharf (2010) further emphasizes the complex relationship between fair use and DRM. “Any attempt to encapsulate fair use provisions within DRM would have drawbacks for both right holders and users...” (p. 182). This quote highlights the inherent tension that exists between user rights and copyright holder control. Striking a balance between the two will be critical in moving forward.</p>

<p> The limitations of DMCA and DRM extend beyond immediate user experience and have a profound impact on long-term preservation efforts. Libraries and archives face significant challenges in preserving digital content due to these restrictions. As Gasaway (2007) points out, “current limitations on copying and distribution don&#39;t translate well to digital media”.</p>

<p> Unlike physical books, digital files can become inaccessible over time due to changes in file formats or software incompatibility. This presents a significant hurdle for long-term preservation. The focus on “preservation-only” exceptions with restricted access, as discussed in the article by Gasaway (2007), creates a paradox. Restricted access undermines the core purpose of preservation, which is to ensure future generations can access the information. One quote from the article emphasizes this concern: “One question is whether any user should have access to preservation only-copies. In fact, one could argue that the copy is no longer for preservation only if access is being granted to users” (Gasaway, 2007). This quote confirms the concern that restricted access to preserved works challenges the true purpose of preservation, which is to ensure future access. Additionally, the ever-evolving nature of digital formats and technology poses a challenge for long-term preservation.</p>

<p> While the limitations of current copyright law and DRM pose significant challenges, emerging technologies like blockchain offer a potential solution for securing ownership of digital assets. Blockchain technology utilizes a distributed ledger system, where data is recorded across a network of computers. This creates an immutable record of ownership that is transparent and tamper-proof. Bodó et al. (2018) discusses the potential of blockchain for copyright protection, arguing that “Distributed ledgers are a general-purpose technology, meaning that they are freely configurable to any and every application. In theory, this makes it relatively easy to correspond the core building blocks of blockchain technology to fundamental concepts in copyright law.” (p.314). This further exemplifies how blockchain technology could potentially be a powerful tool for enforcing intellectual property rights through distributed ledgers.</p>

<p> In theory, blockchain could be used to track ownership of digital content, ensuring creators receive appropriate compensation for their work. Additionally, blockchain could potentially facilitate secure access control for libraries and archives, allowing them to preserve digital materials while ensuring copyright compliance. However, it is important to acknowledge the limitations of blockchain technology in the context of digital preservation.</p>

<p> Firstly, blockchain itself cannot store copious amounts of data efficiently. While ownership records could be stored on the blockchain, the actual content would likely need to be stored elsewhere. This raises questions about long-term accessibility and potential compatibility issues between storage solutions and future technologies. Secondly, integrating existing copyright laws with blockchain technology presents a complex challenge.</p>

<p> Despite these limitations, blockchain offers a promising avenue for exploring new models of digital ownership and preservation. As Bodó et al. (2018) concludes, “ Still, should blockchain technology reach its market potential, it may have significant—perhaps transformative—impact on copyright in the digital environment. ” (p. 336). Collaboration between stakeholders – including content creators, copyright holders, technology companies, and libraries – will be crucial in determining how best to leverage blockchain for a more balanced digital ecosystem.</p>

<p> The issue of digital ownership becomes even more complex when considering piracy. While piracy undoubtedly has negative consequences, the article by Kim et al. (2018) introduces a thought-provoking concept: the “invisible hand” of piracy. The authors argue that “When information goods are sold to consumers via a retailer, in certain situations, a moderate level of piracy seems to have a surprising positive impact on the profits of the manufacturer and the retailer while, at the same time, enhancing consumer welfare.” (Kim et al., 2018, pp. 1117). They explain how piracy can act as a “shadow competitor,” forcing manufacturers and retailers to lower prices or improve accessibility, potentially leading to a more efficient supply chain (Kim et al., 2018). This challenges the current legal framework and traditional views on ownership of digital goods. The concept of “owning” digital media becomes blurry when copying is near-effortless. Piracy can be seen as a symptom of a broken market, where consumers resort to piracy due to limited access or inflated costs. Perhaps a more nuanced approach to piracy is needed, considering the potential benefits and drawbacks in specific situations.</p>

<p> In conclusion, the DMCA and DRM, while intended to protect copyright, create a system that undermines the concept of true ownership in the digital age.  Consumers have limited control over their purchases, fair use is restricted, and long-term preservation of digital materials is hindered. Librarians and archivists, who play a crucial role in safeguarding cultural heritage, are particularly impacted by these limitations.</p>

<p> Moving forward, a more balanced approach is necessary, one that respects copyright while ensuring fair use rights, promoting open access, and facilitating long-term preservation of our digital heritage. This could involve a few avenues:
 • Revising DMCA exemptions for libraries and archives: Expanding exemptions to allow libraries to create digital copies for preservation purposes and offer interlibrary loan services for digital materials.</p>

<p> • Exploring alternative preservation strategies: Investigating the potential of blockchain technology for secure ownership records while exploring complementary strategies for content preservation outside the blockchain ecosystem.</p>

<p> • Encouraging collaboration between content creators, copyright holders, technology companies, and user groups to develop new models that prioritize both ownership and accessibility. This could involve exploring innovative licensing models that offer more user control and exploring new revenue streams for content creators in the digital age.</p>

<p> • Re-evaluating the role of piracy: Considering the potential benefits and drawbacks of piracy in specific contexts and exploring strategies to address the underlying issues that lead to piracy, such as limited access or high costs.</p>

<p>    By addressing these challenges, we can move towards a digital ecosystem that fosters creativity, ensures long-term access to information, and respects the rights of both creators and consumers.  A system that strikes a balance between copyright protection and fair use is essential for a healthy digital environment where knowledge and culture can continue to thrive.</p>

<p>Some additional considerations we can take with us moving forward:
 • Educating users about copyright law, fair use rights, and responsible digital citizenship can help foster a more balanced environment. Libraries and educational institutions can play a crucial role in these efforts.</p>

<p> • Developing open access models that will facilitate open access initiatives that ensure the public has access to scholarly research and cultural heritage materials helping to democratize access to knowledge and encourage innovation.</p>

<p> • Investing in robust and secure digital storage solutions for long-term preservation of digital materials. Collaboration between government agencies, libraries, and technology companies will be key in achieving these goals.</p>

<p> Ultimately, the question of ownership in the digital age is a complex one with no easy answers.  However, by fostering dialogue, exploring innovative solutions, and prioritizing both access and creator rights, we can create a more equitable and sustainable digital future.</p>

<p> Capitalists: ...“You will own nothing and you will be happy.”
 Everyone else: ...“Stand up me hearties, yo ho!”</p>

<p>Reference List</p>

<p>Bodó, A., et al. (2018). Copyright in the Blockchain Era: Enforcing Intellectual Property Rights Through Distributed Ledgers. Journal of Intellectual Property Law &amp; Practice, 13(8), 741-750.</p>

<p>Gasaway, L. (2007). Digital Millennium Copyright Act and Library Preservation: A Paradox of Access and Control. Library Resources &amp; Technical Services, 51(4), 1329-1337.</p>

<p>Kim, J., et al. (2018). The Invisible Hand of Piracy: How Moderate Levels of Piracy Can Benefit Businesses and Consumers. Journal of Marketing Research, 55(5), 1112-1132.</p>

<p>McDermott, S. (2012). The Chilling Effects of Copyright Law on Libraries and Archives. D-Lib Magazine, 18(5/6), 1-10.</p>

<p>Scharf, M. B. (2010). Fair Use in a Digital World: The Future of User Rights in the Information Society. Duke Law Journal, 60(2), 181-238.</p>
]]></content:encoded>
      <author>autumn</author>
      <guid>https://pen.waltuh.cyou/read/a/slm8ta7ry2</guid>
      <pubDate>Wed, 11 Mar 2026 20:21:11 +0000</pubDate>
    </item>
    <item>
      <title>Installation guide for DEBIAN 13 &#39;Trixie&#39;, Wayland, x11, &amp; nvidia:</title>
      <link>https://pen.waltuh.cyou/autumn/installation-guide-for-debian-13-trixie-wayland-x11-and-nvidia</link>
      <description>&lt;![CDATA[Installation guide for DEBIAN 13 &#39;Trixie&#39;, Wayland, x11, &amp; nvidia:&#xA;&#xA;(tip: run commands as root with &#xA;Step 1. Add contrib &amp; non-free in /etc/apt/sources.list&#xA;&#xA;deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware&#xA;&#xA;deb http://security.debian.org/debian-security/ trixie-security contrib non-free main non-free-firmware&#xA;&#xA;...and often also for -updates:&#xA;&#xA;deb http://deb.debian.org/debian/ trixie-updates non-free-firmware non-free contrib main&#xA;&#xA;---&#xA;  Example of modified sources.list:&#xA;&#xA;deb cdrom:[Debian GNU/Linux 13.3.0 Trixie - Official amd64 DVD Binary-1 with firmware 20260110-11:00]/ trixie contrib main non-free-firmware&#xA;&#xA;deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware&#xA;deb-src http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware&#xA;&#xA;deb http://security.debian.org/debian-security/ trixie-security contrib non-free main non-free-firmware&#xA;deb-src http://security.debian.org/debian-security trixie-security contrib non-free main non-free-firmware&#xA;&#xA;trixie-updates, to get updates before a point release is made;&#xA;# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#updatesandbackports&#xA;deb http://deb.debian.org/debian/ trixie-updates non-free-firmware non-free contrib main&#xA;deb-src http://deb.debian.org/debian/ trixie-updates non-free-firmware non-free contrib main&#xA;&#xA;This system was installed using removable media other than&#xA;CD/DVD/BD (e.g. USB stick, SD card, ISO image file).&#xA;The matching &#34;deb cdrom&#34; entries were disabled at the end&#xA;of the installation process.&#xA;For information about how to configure apt package sources,&#xA;see the sources.list(5) manual.&#xA;&#xA;---&#xA;Step 2. &#xA;Step 3. &#xA;Step 4. &#xA;Step 5. &#xA;Step 6. when prompted, enter a password&#xA;&#xA;Step 7. &#xA;Step 8. On boot there will be a prompt to enroll the MOK, select yes; when asked, enter the password from step 6&#xA;&#xA;Step 9. Enter TTY with CTRL+ALT+F3, enter username, password, &#xA;(Tip: generally you may select x11 environment in the bottom left corner of the login screen if you want a graphical interface/ get stuck)&#xA;&#xA;Step 10. Add &#xA;---&#xA;  Example of modified grub file:&#xA;&#xA;If you change this file or any /etc/default/grub.d/*.cfg file,&#xA;run &#39;update-grub&#39; afterwards to update /boot/grub/grub.cfg.&#xA;For full documentation of the options in these files, see:&#xA;info -f grub -n &#39;Simple configuration&#39;&#xA;GRUBDEFAULT=0&#xA;GRUBTIMEOUT=5&#xA;GRUBDISTRIBUTOR=( . /etc/os-release &amp;&amp; echo ${NAME} )&#xA;GRUBCMDLINELINUXDEFAULT=&#34;nvidiadrm.modeset=1 nvidia-drm.fbdev=1 quiet&#34;&#xA;GRUBCMDLINELINUX=&#34;&#34;&#xA;&#xA;If your computer has multiple operating systems installed, then you&#xA;probably want to run os-prober. However, if your computer is a host&#xA;for guest OSes installed via LVM or raw disk devices, running&#xA;os-prober can cause damage to those guest OSes as it mounts&#xA;filesystems to look for things.&#xA;GRUBDISABLEOSPROBER=false&#xA;&#xA;Uncomment to enable BadRAM filtering, modify to suit your needs&#xA;This works with Linux (no patch required) and with any kernel that obtains&#xA;the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)&#xA;GRUBBADRAM=&#34;0x01234567,0xfefefefe,0x89abcdef,0xefefefef&#34;&#xA;&#xA;Uncomment to disable graphical terminal&#xA;GRUBTERMINAL=console&#xA;&#xA;The resolution used on graphical terminal&#xA;note that you can use only modes which your graphic card supports via VBE/GOP/UGA&#xA;you can see them in real GRUB with the command `videoinfo&#39;&#xA;GRUBGFXMODE=640x480&#xA;&#xA;Uncomment if you don&#39;t want GRUB to pass &#34;root=UUID=xxx&#34; parameter to Linux&#xA;GRUBDISABLELINUXUUID=true&#xA;&#xA;Uncomment to disable generation of recovery mode menu entries&#xA;GRUBDISABLERECOVERY=&#34;true&#34;&#xA;&#xA;Uncomment to get a beep at grub start&#xA;GRUBINITTUNE=&#34;480 440 1&#34;&#xA;&#xA;---&#xA;Step 11. within home/username create the hidden directory .nvtmp&#xA;&#xA;Step 12. set module options for the nvidia module variable at &#xA;&#xA;---&#xA;  Example of modified nvidia-options.conf file:&#xA;&#xA;options nvidia-current NVregDeviceFileUID=0 NVregDeviceFileGID=44 NVregDeviceFileMode=0660&#xA;&#xA;To grant performance counter access to unprivileged users, uncomment the following line:&#xA;options nvidia-current NVregRestrictProfilingToAdminUsers=0&#xA;&#xA;Uncomment to enable this power management feature:&#xA;options nvidia-current NVregPreserveVideoMemoryAllocations=1 NVregTemporaryFilePath=~/.nvtmp&#xA;&#xA;Uncomment to enable this power management feature:&#xA;options nvidia-current NVregEnableS0ixPowerManagement=1&#xA;&#xA;Step 13. add your modules to the initramfs by editing &#xA;add&#xA;&#xA;---&#xA;  Example of modified nvidia-options.conf file:&#xA;&#xA;List of modules that you want to include in your initramfs.&#xA;They will be loaded at boot time in the order below.&#xA;&#xA;Syntax:  modulename [args ...]&#xA;&#xA;You must run update-initramfs(8) to effect this change.&#xA;&#xA;Examples:&#xA;&#xA;raid1&#xA;sdmod&#xA;crc32c&#xA;nvidia&#xA;nvidiadrm&#xA;nvidiauvm&#xA;nvidia_modeset&#xA;&#xA;Step 14. generate initramfs to add the changes you have made.&#xA;&#xA;Step 15. generate grub.cfg&#xA;&#xA;OR&#xA;&#xA;Step 16. Before rebooting, enable scripts to allow wake from suspend/hibernate using systemd.&#xA;&#xA;sudo systemctl enable nvidia-suspend.service nvidia-hibernate.service nvidia-resume.service&#xA;&#xA;Step 17. &#xA;Step 18. login]]&gt;</description>
      <content:encoded><![CDATA[<p>Installation guide for DEBIAN 13 &#39;Trixie&#39;, Wayland, x11, &amp; nvidia:</p>

<p>(tip: run commands as root with <code>su -</code>)</p>

<p>Step 1. Add contrib &amp; non-free in /etc/apt/sources.list</p>

<pre><code>deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware

deb http://security.debian.org/debian-security/ trixie-security contrib non-free main non-free-firmware
</code></pre>

<p>...and often also for -updates:</p>

<pre><code>deb http://deb.debian.org/debian/ trixie-updates non-free-firmware non-free contrib main
</code></pre>

<hr>

<blockquote><p>  Example of modified sources.list:</p></blockquote>

<pre><code>#deb cdrom:[Debian GNU/Linux 13.3.0 _Trixie_ - Official amd64 DVD Binary-1 with firmware 20260110-11:00]/ trixie contrib main non-free-firmware

deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
deb-src http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware

deb http://security.debian.org/debian-security/ trixie-security contrib non-free main non-free-firmware
deb-src http://security.debian.org/debian-security trixie-security contrib non-free main non-free-firmware

# trixie-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://deb.debian.org/debian/ trixie-updates non-free-firmware non-free contrib main
deb-src http://deb.debian.org/debian/ trixie-updates non-free-firmware non-free contrib main

# This system was installed using removable media other than
# CD/DVD/BD (e.g. USB stick, SD card, ISO image file).
# The matching &#34;deb cdrom&#34; entries were disabled at the end
# of the installation process.
# For information about how to configure apt package sources,
# see the sources.list(5) manual.
</code></pre>

<hr>

<p>Step 2. <code>apt update</code></p>

<p>Step 3. <code>apt install linux-headers-amd64</code></p>

<p>Step 4. <code>apt install nvidia-kernel-dkms nvidia-driver firmware-misc-nonfree nvtop</code></p>

<p>Step 5. <code>mokutil --import /var/lib/dkms/mok.pub</code></p>

<p>Step 6. when prompted, enter a password</p>

<p>Step 7. <code>systemctl reboot</code></p>

<p>Step 8. On boot there will be a prompt to enroll the MOK, select yes; when asked, enter the password from step 6</p>

<p>Step 9. Enter TTY with CTRL+ALT+F3, enter username, password, <code>sudo nano /etc/default/grub</code></p>

<p>(Tip: generally you may select x11 environment in the bottom left corner of the login screen if you want a graphical interface/ get stuck)</p>

<p>Step 10. Add <code>nvidia_drm.modeset=1</code> as a boot option. This is achieved by appending it within the file /etc/default/grub to GRUB<em>CMDLINE</em>LINUX_DEFAULT=“” without deleting other parameters.</p>

<hr>

<blockquote><p>  Example of modified grub file:</p></blockquote>

<pre><code># If you change this file or any /etc/default/grub.d/*.cfg file,
# run &#39;update-grub&#39; afterwards to update /boot/grub/grub.cfg.
# For full documentation of the options in these files, see:
#   info -f grub -n &#39;Simple configuration&#39;
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`( . /etc/os-release &amp;&amp; echo ${NAME} )`
GRUB_CMDLINE_LINUX_DEFAULT=&#34;nvidia_drm.modeset=1 nvidia-drm.fbdev=1 quiet&#34;
GRUB_CMDLINE_LINUX=&#34;&#34;

# If your computer has multiple operating systems installed, then you
# probably want to run os-prober. However, if your computer is a host
# for guest OSes installed via LVM or raw disk devices, running
# os-prober can cause damage to those guest OSes as it mounts
# filesystems to look for things.
#GRUB_DISABLE_OS_PROBER=false

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM=&#34;0x01234567,0xfefefefe,0x89abcdef,0xefefefef&#34;

# Uncomment to disable graphical terminal
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE/GOP/UGA
# you can see them in real GRUB with the command `videoinfo&#39;
#GRUB_GFXMODE=640x480

# Uncomment if you don&#39;t want GRUB to pass &#34;root=UUID=xxx&#34; parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY=&#34;true&#34;

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE=&#34;480 440 1&#34;
</code></pre>

<hr>

<p>Step 11. within home/username create the hidden directory .nvtmp</p>

<p>Step 12. set module options for the nvidia module variable at <code>/etc/modprobe.d/nvidia-options.conf</code> uncomment <code>options nvidia-current NVreg_PreserveVideoMemoryAllocations=1</code> and add <code>NVreg_TemporaryFilePath=~/.nvtmp</code> to the same line</p>

<p><code>sudo nano /etc/modprobe.d/nvidia-options.conf</code></p>

<hr>

<blockquote><p>  Example of modified nvidia-options.conf file:</p></blockquote>

<pre><code>#options nvidia-current NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=44 NVreg_DeviceFileMode=0660

# To grant performance counter access to unprivileged users, uncomment the following line:
#options nvidia-current NVreg_RestrictProfilingToAdminUsers=0

# Uncomment to enable this power management feature:
options nvidia-current NVreg_PreserveVideoMemoryAllocations=1 NVreg_TemporaryFilePath=~/.nvtmp

# Uncomment to enable this power management feature:
#options nvidia-current NVreg_EnableS0ixPowerManagement=1
</code></pre>

<p>Step 13. add your modules to the initramfs by editing <code>/etc/initramfs-tools/modules</code> and adding nvidia, nvidia<em>drm, nvidia</em>uvm, and nvidia_modeset to <code>MODULES</code>.</p>

<p><code>sudo nano /etc/initramfs-tools/modules</code>
add
<code>MODULES=&#34;crc32c nvidia nvidia_drm nvidia_uvm nvidia_modeset&#34;</code></p>

<hr>

<blockquote><p>  Example of modified nvidia-options.conf file:</p></blockquote>

<pre><code># List of modules that you want to include in your initramfs.
# They will be loaded at boot time in the order below.
#
# Syntax:  module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod
crc32c
nvidia
nvidia_drm
nvidia_uvm
nvidia_modeset
</code></pre>

<p>Step 14. generate initramfs to add the changes you have made.</p>

<p><code>sudo update-initramfs -u -k all</code></p>

<p>Step 15. generate grub.cfg</p>

<p><code>sudo update-grub</code>
OR
<code>sudo grub-mkconfig -o /boot/grub/grub.cfg</code></p>

<p>Step 16. Before rebooting, enable scripts to allow wake from suspend/hibernate using systemd.</p>

<pre><code>sudo systemctl enable nvidia-suspend.service nvidia-hibernate.service nvidia-resume.service
</code></pre>

<p>Step 17. <code>systemctl reboot</code></p>

<p>Step 18. login</p>
]]></content:encoded>
      <author>autumn</author>
      <guid>https://pen.waltuh.cyou/read/a/l2ubya2x6k</guid>
      <pubDate>Wed, 11 Mar 2026 19:32:24 +0000</pubDate>
    </item>
    <item>
      <title>Ane benci dengan Forticlient VPN jadi ane pasang openfortivpn</title>
      <link>https://pen.waltuh.cyou/poes/ane-benci-dengan-forticlient-vpn-jadi-ane-pasang-openfortivpn</link>
      <description>&lt;![CDATA[Di MacOs Tahoe 26.3, GUI Forticlient VPN tidak bisa jalan dengan benar. Mungkin bug atau mungkin juga Forticlient terlalu tolol sehingga membuat aplikasi berjalan sangat lambat atau malah tidak bisa dipakai sama sekali.&#xA;&#xA;Ane sudah reinstall berkali - kali namun tetap saja tidak bisa jalan dengan benar. Versi Forticlient yang ane pakai adalah legacy 6.0 yang harusnya aman dan lancar untuk dipakai. Apakah karena Tahoe 26.3? bisa jadi, oleh karena itu ane coba install versi terkini namun untuk bisa unduh si Fortinet minta data KYC. Bang*t ane ga mau share data pribadi dengan mereka.&#xA;&#xA;Untungnya ada OpenFortiVPN yang ringan dan bisa jalan lancar dari terminal, ane install dari HomeBrew. File Readme.txt sudah sangat jelas dan semua happy ending dalam 3 menit kemudian.]]&gt;</description>
      <content:encoded><![CDATA[<p>Di MacOs Tahoe 26.3, GUI Forticlient VPN tidak bisa jalan dengan benar. Mungkin <em>bug</em> atau mungkin juga Forticlient terlalu tolol sehingga membuat aplikasi berjalan sangat lambat atau malah tidak bisa dipakai sama sekali.</p>

<p>Ane sudah <em>reinstall</em> berkali – kali namun tetap saja tidak bisa jalan dengan benar. Versi Forticlient yang ane pakai adalah legacy 6.0 yang harusnya aman dan lancar untuk dipakai. Apakah karena Tahoe 26.3? bisa jadi, oleh karena itu ane coba <em>install</em> versi terkini namun untuk bisa unduh si Fortinet minta data KYC. Bang*t ane ga mau <em>share</em> data pribadi dengan mereka.</p>

<p>Untungnya ada <a href="https://github.com/adrienverge/openfortivpn" rel="nofollow">OpenFortiVPN</a> yang ringan dan bisa jalan lancar dari terminal, ane install dari HomeBrew. <em>File</em> <code>Readme.txt</code> sudah sangat jelas dan semua <em>happy ending</em> dalam 3 menit kemudian.</p>
]]></content:encoded>
      <author>poes</author>
      <guid>https://pen.waltuh.cyou/read/a/f9jr51npas</guid>
      <pubDate>Sat, 14 Feb 2026 09:27:47 +0000</pubDate>
    </item>
    <item>
      <title>i have 20t floods and i hate cloudflare for reporting my botnet proxy.</title>
      <link>https://pen.waltuh.cyou/furina/i-have-20t-floods-and-i-hate-cloudflare-for-reporting-my-botnet-proxy</link>
      <description>&lt;![CDATA[i have 20t floods and i hate cloudflare for reporting my botnet proxy.]]&gt;</description>
      <content:encoded><![CDATA[<p>i have 20t floods and i hate cloudflare for reporting my botnet proxy.</p>
]]></content:encoded>
      <author>furina</author>
      <guid>https://pen.waltuh.cyou/read/a/xcgbk275xl</guid>
      <pubDate>Wed, 11 Feb 2026 09:48:17 +0000</pubDate>
    </item>
    <item>
      <title>writefreely is here</title>
      <link>https://pen.waltuh.cyou/waltuh/writefreely-is-here</link>
      <description>&lt;![CDATA[writefreely is basically a small blogging platform that is connected with the fediverse via activitypub protocol, where it allows federation to some platforms like mastodon, pleroma, misskey, and etc.&#xA;&#xA;writefreely is written in golang, and is licensed under AGPL-3.0. Now also available via pen.waltuh.cyou&#xA;&#xA;registration&#xA;&#xA;normal registration is disabled to prevent abuse. for registration, you can reach out to yonle@waltuh.cyou via fedi or via email under the same address&#xA;&#xA;by using waltuh.cyou services, you agree to our terms of service.]]&gt;</description>
      <content:encoded><![CDATA[<p>writefreely is basically a small blogging platform that is connected with the fediverse via activitypub protocol, where it allows federation to some platforms like mastodon, pleroma, misskey, and etc.</p>

<p>writefreely is written in golang, and is licensed under AGPL-3.0. Now also available via pen.waltuh.cyou</p>

<h2 id="registration">registration</h2>

<p>normal registration is disabled to prevent abuse. for registration, you can reach out to <a href="https://fedinet.waltuh.cyou/yonle" rel="nofollow">yonle@waltuh.cyou via fedi</a> or via email under the <a href="mailto:yonle@waltuh.cyou" rel="nofollow">same address</a></p>

<p>by using waltuh.cyou services, you agree to our <a href="https://fedinet.waltuh.cyou/about" rel="nofollow">terms of service</a>.</p>
]]></content:encoded>
      <author>Waltuh</author>
      <guid>https://pen.waltuh.cyou/read/a/r1pcdih15n</guid>
      <pubDate>Thu, 05 Feb 2026 12:51:23 +0000</pubDate>
    </item>
  </channel>
</rss>