<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tan Chun Siong</title>
    <link>https://www.tanchunsiong.com/</link>
    <description>Recent content on Tan Chun Siong</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 03 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.tanchunsiong.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Adding Models to OpenClaw</title>
      <link>https://www.tanchunsiong.com/2026/02/adding-models-to-openclaw/</link>
      <pubDate>Tue, 03 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2026/02/adding-models-to-openclaw/</guid>
      <description>&lt;p&gt;OpenClaw (also known as ClawdBot / MoltBot) supports multiple model providers. Here&amp;rsquo;s how to add new models or providers to your setup.&lt;/p&gt;&#xA;&lt;h2 id=&#34;add-a-new-openrouter-model&#34;&gt;Add a New OpenRouter Model&lt;/h2&gt;&#xA;&lt;p&gt;First, find the model ID you want to add:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -s https://openrouter.ai/api/v1/models | python3 -c &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;import json,sys; [print(m[&amp;#39;id&amp;#39;]) for m in json.load(sys.stdin)[&amp;#39;data&amp;#39;]]&amp;#34;&lt;/span&gt; | grep -i &amp;lt;search-term&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add the model to &lt;code&gt;~/.openclaw/openclaw.json&lt;/code&gt; under &lt;code&gt;models.providers.openrouter.models&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;author&amp;gt;/&amp;lt;model&amp;gt;&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Display Name&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;reasoning&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;input&amp;#34;&lt;/span&gt;: [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;],&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;output&amp;#34;&lt;/span&gt;: [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add to the allowlist in &lt;code&gt;agents.defaults.models&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building Skills for LLM</title>
      <link>https://www.tanchunsiong.com/2026/02/building-skills-for-llm/</link>
      <pubDate>Tue, 03 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2026/02/building-skills-for-llm/</guid>
      <description>&lt;h2 id=&#34;start-with-docs-and-sample-code&#34;&gt;Start with Docs and Sample Code&lt;/h2&gt;&#xA;&lt;p&gt;Before writing a single line of skill instructions, gather your raw materials. Official docs, sample code, API references—anything the LLM can crawl and learn from.&lt;/p&gt;&#xA;&lt;p&gt;This isn&amp;rsquo;t just context. It&amp;rsquo;s the foundation. The LLM needs to see how things actually work before you tell it how to work with them.&lt;/p&gt;&#xA;&lt;p&gt;Skip this step and you&amp;rsquo;re building on sand. The skill might generate plausible-looking output, but it&amp;rsquo;ll hallucinate the details that matter.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lessons from the LLM Age: Week 1 February 2026</title>
      <link>https://www.tanchunsiong.com/2026/02/lessons-from-the-llm-age-week-1-february-2026/</link>
      <pubDate>Tue, 03 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2026/02/lessons-from-the-llm-age-week-1-february-2026/</guid>
      <description>&lt;h2 id=&#34;loosely-coupled-specs&#34;&gt;Loosely Coupled Specs&lt;/h2&gt;&#xA;&lt;p&gt;We used to build tight contracts—APIs, schemas, interfaces—because machines needed exact matches to talk to each other.&lt;/p&gt;&#xA;&lt;p&gt;Now we write loose definitions, natural language hints, and let the LLM figure out the mapping. It&amp;rsquo;s fuzzy logic thinking applied to system design.&lt;/p&gt;&#xA;&lt;p&gt;The glue isn&amp;rsquo;t code anymore. It&amp;rsquo;s context. LLMs bridge gaps that would&amp;rsquo;ve required weeks of integration work.&lt;/p&gt;&#xA;&lt;p&gt;Being less precise paradoxically makes systems more resilient—they interpret intent instead of failing hard on mismatched types.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Lessons from the LLM Age: January 2026</title>
      <link>https://www.tanchunsiong.com/2026/01/lessons-from-the-llm-age-january-2026/</link>
      <pubDate>Mon, 26 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2026/01/lessons-from-the-llm-age-january-2026/</guid>
      <description>&lt;h2 id=&#34;everything-is-a-prompt-away&#34;&gt;Everything is a Prompt Away&lt;/h2&gt;&#xA;&lt;p&gt;Most things are now a prompt. Code, essays, images. A junior and senior can produce the same artifact in the same time.&lt;/p&gt;&#xA;&lt;p&gt;You can ship without understanding. The gap between &amp;ldquo;I made this&amp;rdquo; and &amp;ldquo;I understand this&amp;rdquo; has never been wider.&lt;/p&gt;&#xA;&lt;h2 id=&#34;hard-things-still-matter&#34;&gt;Hard Things Still Matter&lt;/h2&gt;&#xA;&lt;p&gt;When the easy path is always available, choosing hard becomes a statement.&lt;/p&gt;&#xA;&lt;p&gt;LLMs can&amp;rsquo;t give you the 3am debugging sessions, the wrong turns that taught you why, the scar tissue from failing 50 times.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TrueNAS Multi-Report for HDD Health</title>
      <link>https://www.tanchunsiong.com/truenas-multi-report-for-hdd-health/</link>
      <pubDate>Tue, 06 Jan 2026 09:00:00 +0800</pubDate>
      <guid>https://www.tanchunsiong.com/truenas-multi-report-for-hdd-health/</guid>
      <description>&lt;p&gt;Maintaining my home lab requires me to keep a constant eye on my drive health. On &lt;strong&gt;TrueNAS SCALE&lt;/strong&gt;, one of my favorite tools for this is the &lt;strong&gt;Multi-Report&lt;/strong&gt; script. However, I&amp;rsquo;ve found that updates can sometimes break dependencies. Here is a quick guide on how I get it running and keep it persistent.&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-the-loophole-restoring-bc-after-updates&#34;&gt;1. The &amp;ldquo;Loophole&amp;rdquo; (Restoring bc after updates)&lt;/h3&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve noticed that TrueNAS SCALE updates often reset the root filesystem protection. If my report fails because &lt;code&gt;bc&lt;/code&gt; (the arbitrary precision calculator language) is missing, I run these commands in order to restore it:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up Vibe Kanban on Ubuntu VM for Browser-Based AI Coding</title>
      <link>https://www.tanchunsiong.com/setting-up-vibe-kanban-on-ubuntu-vm-for-browser-based-ai-coding/</link>
      <pubDate>Mon, 05 Jan 2026 13:00:00 +0800</pubDate>
      <guid>https://www.tanchunsiong.com/setting-up-vibe-kanban-on-ubuntu-vm-for-browser-based-ai-coding/</guid>
      <description>&lt;p&gt;Following my recent migration to Hugo, I&amp;rsquo;ve been looking for ways to streamline my development workflow, especially when working with AI tools. Today, I&amp;rsquo;m setting up &lt;strong&gt;Vibe Kanban&lt;/strong&gt; on an Ubuntu VM. This setup allows for a browser-based AI coding environment that&amp;rsquo;s both flexible and powerful.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ll assume you already have SSH access to your Ubuntu VM. If not, you might want to check out my previous post on &lt;a href=&#34;https://www.tanchunsiong.com/day-2-supplement-creating-an-ubuntu-vm-with-gui-based-remote-desktop-and-docker-image/&#34;&gt;creating an Ubuntu VM&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Integrating Zoom Video SDK on Windows with WPF, Win32, and WinForms</title>
      <link>https://www.tanchunsiong.com/integrating-zoom-video-sdk-on-windows-with-wpf-win32-and-winforms/</link>
      <pubDate>Mon, 05 Jan 2026 11:00:00 +0800</pubDate>
      <guid>https://www.tanchunsiong.com/integrating-zoom-video-sdk-on-windows-with-wpf-win32-and-winforms/</guid>
      <description>&lt;p&gt;Zoom Video SDK allows you to create fully customized video call experiences on desktop, mobile, and in web browsers. Today, let&amp;rsquo;s talk about the Windows side of things, specifically how to work with the C++ SDK and the specialized renderer.&lt;/p&gt;&#xA;&lt;h3 id=&#34;windows-ui-frameworks-and-the-video-sdk&#34;&gt;Windows UI Frameworks and the Video SDK&lt;/h3&gt;&#xA;&lt;p&gt;The Zoom Video SDK for Windows is natively C++. This means if you&amp;rsquo;re using UI libraries that play nice with C++ (like duilib, GTK, or Qt), you&amp;rsquo;re in for an easy ride.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Integrating Zoom Video SDK on Linux with GTK and Qt</title>
      <link>https://www.tanchunsiong.com/integrating-zoom-video-sdk-on-linux-with-gtk-and-qt/</link>
      <pubDate>Mon, 05 Jan 2026 10:00:00 +0800</pubDate>
      <guid>https://www.tanchunsiong.com/integrating-zoom-video-sdk-on-linux-with-gtk-and-qt/</guid>
      <description>&lt;p&gt;Zoom Video SDK allows you to create fully customized video call experiences on desktop, mobile, and in web browsers. Today, let&amp;rsquo;s take a look at how to integrate the Zoom Video SDK on Linux using UI frameworks like GTK and Qt.&lt;/p&gt;&#xA;&lt;h3 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h3&gt;&#xA;&lt;p&gt;Before we dive in, make sure you have the following ready:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Your preferred code/text editor (I&amp;rsquo;m using VS Code, obviously).&lt;/li&gt;&#xA;&lt;li&gt;A Linux Environment. I&amp;rsquo;m building this on Ubuntu, but it should be compatible with other distributions.&lt;/li&gt;&#xA;&lt;li&gt;Video capture and sound playback devices.&lt;/li&gt;&#xA;&lt;li&gt;A Zoom Video SDK Account. Note that headers and libraries aren&amp;rsquo;t included in the repo, so you&amp;rsquo;ll need to download them from &lt;a href=&#34;https://marketplace.zoom.us&#34;&gt;marketplace.zoom.us&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;step-1-clone-the-scaffolding-project&#34;&gt;Step 1: Clone the Scaffolding Project&lt;/h3&gt;&#xA;&lt;p&gt;Depending on your UI preference, clone either the Qt or GTK quickstart project from GitHub. I&amp;rsquo;ve actually got my own versions of these that you can use:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrating WeShipCode.com from WordPress to Hugo Using AI Tools in VS Code</title>
      <link>https://www.tanchunsiong.com/migrating-wordpress-to-hugo-with-ai/</link>
      <pubDate>Fri, 02 Jan 2026 12:00:00 +0800</pubDate>
      <guid>https://www.tanchunsiong.com/migrating-wordpress-to-hugo-with-ai/</guid>
      <description>&lt;p&gt;Today, I decided to migrate my old WordPress site at weshipcode.com (over 1000 posts!) to Hugo, a fast static site generator. Instead of doing it manually, I used &lt;strong&gt;Cline&lt;/strong&gt; (powered by xAI Code Fast 4.1 via OpenRouter) right inside &lt;strong&gt;VS Code&lt;/strong&gt;. Combined with Gemini Flash for planning, this was a seamless experience using Plan Mode for strategy and Act Mode for execution.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-planning-phase-plan-mode&#34;&gt;The Planning Phase (Plan Mode)&lt;/h3&gt;&#xA;&lt;p&gt;Cline first explored the WordPress setup in &lt;code&gt;/var/www/weshipcode&lt;/code&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Record and Save Zoom Meeting to Aws S3 Storage Using Meeting Sdk for Windows on Docker</title>
      <link>https://www.tanchunsiong.com/2024/12/how-to-record-and-save-zoom-meeting-to-aws-s3-storage-using-meeting-sdk-for-windows-on-docker/</link>
      <pubDate>Mon, 16 Dec 2024 11:44:31 +0800</pubDate>
      <guid>https://www.tanchunsiong.com/2024/12/how-to-record-and-save-zoom-meeting-to-aws-s3-storage-using-meeting-sdk-for-windows-on-docker/</guid>
      <description>&lt;p&gt;#meeting sdk #windows #docker #recording #aws #s3 storage&lt;/p&gt;&#xA;&lt;h1 id=&#34;how-to-record-and-save-zoom-meeting-to-aws-s3-storage-using-meeting-sdk-for-windows-on-docker&#34;&gt;How to record and save Zoom Meeting to AWS S3 Storage using Meeting SDK for Windows on Docker&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/zoom/meetingsdk-windows-local-recording-container-sample&#34;&gt;Zoom Meeting SDK Recording on Container Sample&lt;/a&gt; provides you with the sample to get started with Meeting Recording in a Windows based Dockerized environment, and uploading to AWS S3 for persistent storage.&lt;/p&gt;&#xA;&lt;iframe width=&#34;560&#34; height=&#34;315&#34; &#xA;src=&#34;https://www.youtube.com/embed/--qD5x3m8jw&#34; &#xA;title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; &#xA;allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&#34; &#xA;allowfullscreen&gt;&lt;/iframe&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=--qD5x3m8jw&#34;&gt;Watch this video on YouTube&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>ESP32 Claw Machine with Zoom Integration</title>
      <link>https://www.tanchunsiong.com/2023/09/esp32-claw-machine-with-zoom-integration/</link>
      <pubDate>Thu, 07 Sep 2023 15:00:00 +0800</pubDate>
      <guid>https://www.tanchunsiong.com/2023/09/esp32-claw-machine-with-zoom-integration/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Built a remote-controlled claw machine using ESP32 microcontroller with live video streaming through Zoom&amp;rsquo;s Video SDK. Players can control the machine from anywhere using simple serial commands.&lt;/p&gt;&#xA;&lt;h2 id=&#34;hardware-components&#34;&gt;Hardware Components&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;ESP32 development board&lt;/li&gt;&#xA;&lt;li&gt;4 DC motors for movement control&lt;/li&gt;&#xA;&lt;li&gt;L298N motor driver module&lt;/li&gt;&#xA;&lt;li&gt;2 LED indicators&lt;/li&gt;&#xA;&lt;li&gt;Separate power supplies for logic and motors&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;implementation&#34;&gt;Implementation&lt;/h2&gt;&#xA;&lt;h3 id=&#34;motor-control&#34;&gt;Motor Control&lt;/h3&gt;&#xA;&lt;p&gt;ESP32 GPIO pins control 4 motors through L298N driver:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Motor 1: Forward/backward movement&lt;/li&gt;&#xA;&lt;li&gt;Motor 2: Left/right movement&lt;/li&gt;&#xA;&lt;li&gt;Motors 3-4: Claw mechanism&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;command-system&#34;&gt;Command System&lt;/h3&gt;&#xA;&lt;p&gt;Text-based serial protocol for control commands.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating snapshot and scaling VM manually</title>
      <link>https://www.tanchunsiong.com/Creating-snapshot-and-scaling-VM-manually/</link>
      <pubDate>Mon, 22 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/Creating-snapshot-and-scaling-VM-manually/</guid>
      <description>&lt;p&gt;$resourceGroupName = ‘cloud-shell-storage-southeastasia’&lt;br&gt;&#xA;$location = ‘Brazil South’&lt;br&gt;&#xA;$vmName = ‘ffdts20180904’&lt;br&gt;&#xA;$snapshotName = ‘mySnapshot’&lt;/p&gt;&#xA;&lt;p&gt;$vm = get-azurermvm -ResourceGroupName $resourceGroupName -Name $vmName&lt;br&gt;&#xA;$snapshot = New-AzureRmSnapshotConfig -SourceUri $vm.StorageProfile.OsDisk.ManagedDisk.Id -Location $location -CreateOption copy&lt;/p&gt;&#xA;&lt;p&gt;New-AzureRmSnapshot -Snapshot $snapshot -SnapshotName $snapshotName -ResourceGroupName $resourceGroupName&lt;/p&gt;&#xA;&lt;p&gt;$snapshotName = ‘mySnapshotDataDisk’&lt;br&gt;&#xA;$disk=$vm.StorageProfile.DataDisks| Select-Object -first 1&lt;br&gt;&#xA;$snapshot = New-AzureRmSnapshotConfig -SourceUri $disk.ManagedDisk.Id -Location $location -CreateOption copy&lt;br&gt;&#xA;New-AzureRmSnapshot -Snapshot $snapshot -SnapshotName $snapshotName -ResourceGroupName $resourceGroupName&lt;/p&gt;&#xA;&lt;p&gt;$noOfVMsToCreate = 9&lt;br&gt;&#xA;$startingVMNumber = 2&lt;/p&gt;&#xA;&lt;p&gt;$vmPreFix = “fdts20180904-”&lt;/p&gt;&#xA;&lt;p&gt;$resourceGroupName =’cloud-shell-storage-southeastasia’&lt;br&gt;&#xA;$availSet = Get-AzureRmAvailabilitySet -ResourceGroupName $resourceGroupName -Name ‘FF’&lt;br&gt;&#xA;$snapshotName = ‘mySnapshot’&lt;br&gt;&#xA;$snapshotName2 = ‘mySnapshotDataDisk’&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting CPU and RAM Limit</title>
      <link>https://www.tanchunsiong.com/Setting-CPU-and-RAM-Limit/</link>
      <pubDate>Mon, 22 Apr 2019 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/Setting-CPU-and-RAM-Limit/</guid>
      <description>&lt;pre&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;apiVersion: v1&#xA;kind: Pod&#xA;metadata:&#xA;  name: memory-demo&#xA;  namespace: mem-example&#xA;spec:&#xA;  containers:&#xA;  - name: memory-demo-ctr&#xA;    image: polinux/stress&#xA;    resources:&#xA;      limits:&#xA;        memory: &#34;200Mi&#34;&#xA;      requests:&#xA;        memory: &#34;100Mi&#34;&#xA;    command: [&#34;stress&#34;]&#xA;    args: [&#34;--vm&#34;, &#34;1&#34;, &#34;--vm-bytes&#34;, &#34;150M&#34;, &#34;--vm-hang&#34;, &#34;1&#34;]&#xA;&#xA;correctly injected&#xA;                &#34;requests&#34;:{&#xA;                    &#34;memory&#34;: &#34;64Mi&#34;,&#xA;                    &#34;cpu&#34;: &#34;250m&#34;&#xA;                },&#xA;                &#34;limits&#34;:{&#xA;                    &#34;memory&#34;: &#34;256Mi&#34;,&#xA;                    &#34;cpu&#34;: &#34;1000m&#34;                &#xA;                }&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Day 3 Solution</title>
      <link>https://www.tanchunsiong.com/day-3-solution/</link>
      <pubDate>Tue, 16 Apr 2019 08:51:15 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/day-3-solution/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.tanchunsiong.com/wp-content/uploads/2018/08/real-user-management-traffic-manager-profile.jpg&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-large wp-image-228&#34; src=&#34;https://www.tanchunsiong.com/wp-content/uploads/2018/08/real-user-management-traffic-manager-profile-1024x613.jpg&#34; alt=&#34;&#34; width=&#34;720&#34; height=&#34;431&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.tanchunsiong.com/wp-content/uploads/2018/08/application-insights.jpg&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-large wp-image-231&#34; src=&#34;https://www.tanchunsiong.com/wp-content/uploads/2018/08/application-insights-1024x567.jpg&#34; alt=&#34;&#34; width=&#34;720&#34; height=&#34;399&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 2 Supplement: Creating an Ubuntu VM with GUI Based Remote Desktop and Docker Image</title>
      <link>https://www.tanchunsiong.com/day-2-supplement-creating-an-ubuntu-vm-with-gui-based-remote-desktop-and-docker-image/</link>
      <pubDate>Sat, 06 Apr 2019 12:56:45 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/day-2-supplement-creating-an-ubuntu-vm-with-gui-based-remote-desktop-and-docker-image/</guid>
      <description>&lt;p&gt;I’ll probably skip the creating of the a VM, and assume that you already have SSH access to a Ubuntu VM hosted on Azure.&lt;/p&gt;&#xA;&lt;p&gt;Following this guide here, below are the list of commands&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;&amp;lt;br /&amp;gt; sudo apt-get update&amp;lt;br /&amp;gt; sudo apt-get install apt-transport-https ca-certificates curl software-properties-common&amp;lt;br /&amp;gt; curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -&amp;lt;br /&amp;gt; sudo apt-key fingerprint 0EBFCD88&amp;lt;br /&amp;gt; sudo add-apt-repository &amp;quot;deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&amp;quot;&amp;lt;br /&amp;gt; sudo apt-get update&amp;lt;br /&amp;gt; sudo apt-get install docker-ce&amp;lt;br /&amp;gt; sudo groupadd docker&amp;lt;br /&amp;gt; sudo usermod -aG docker $USER&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 2 Solution: Running WordPress Project Nami on Azure Kubernetes k8s.</title>
      <link>https://www.tanchunsiong.com/day-2-solution-running-wordpress-project-nami-on-azure-kubernetes-k8s/</link>
      <pubDate>Sat, 06 Apr 2019 12:54:46 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/day-2-solution-running-wordpress-project-nami-on-azure-kubernetes-k8s/</guid>
      <description>&lt;p&gt;Here’s my response to the challenge. To make things really complicated, lets do an overkill and utilize docker containers instead of a VM.&lt;br&gt;&#xA;If you are using an VM previously, I would suggest you to explore creating a clone on Web App. Vice-versa for those who are started on Web App, create a clone on VM.&lt;/p&gt;&#xA;&lt;p&gt;Docker has its advantage in terms of service recovery and service healing. By itself it is a tedious task to setup such feature, hence the common orchestrators would be Docker Swarm, DC/OS and Kubernetes (also known as K8s). Here is the TLDR of what I’m going to achieve.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 2 Solution</title>
      <link>https://www.tanchunsiong.com/day-2-solution/</link>
      <pubDate>Sat, 06 Apr 2019 12:53:35 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/day-2-solution/</guid>
      <description>&lt;p&gt;#https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017&lt;/p&gt;&#xA;&lt;p&gt;apt-get install update&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;apt-get install software-properties-common apt-utils&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;add-apt-repository ppa:ondrej/php -y&lt;br&gt;&#xA;apt-get update&lt;br&gt;&#xA;apt-get install php7.2 php7.2-dev php7.2-xml -y –allow-unauthenticated&lt;/p&gt;&#xA;&lt;p&gt;apt-get install gnupg gnupg2 gnupg1&lt;br&gt;&#xA;curl &lt;a href=&#34;https://packages.microsoft.com/keys/microsoft.asc&#34;&gt;https://packages.microsoft.com/keys/microsoft.asc&lt;/a&gt; | apt-key add –&lt;br&gt;&#xA;curl &lt;a href=&#34;https://packages.microsoft.com/config/ubuntu/18.04/prod.list&#34;&gt;https://packages.microsoft.com/config/ubuntu/18.04/prod.list&lt;/a&gt; &amp;gt; /etc/apt/sources.list.d/mssql-release.list&lt;/p&gt;&#xA;&lt;p&gt;apt-get update&lt;br&gt;&#xA;ACCEPT_EULA=Y apt-get install msodbcsql17&lt;br&gt;&#xA;ACCEPT_EULA=Y apt-get install mssql-tools&lt;/p&gt;&#xA;&lt;p&gt;echo ‘export PATH=”$PATH:/opt/mssql-tools/bin”‘ &amp;raquo; ~/.bash_profile&lt;br&gt;&#xA;echo ‘export PATH=”$PATH:/opt/mssql-tools/bin”‘ &amp;raquo; ~/.bashrc&lt;br&gt;&#xA;source ~/.bashrc&lt;/p&gt;&#xA;&lt;p&gt;apt install -y unixodbc-utf16 unixodbc-dev-utf16 2&amp;gt; /dev/null&lt;br&gt;&#xA;sudo apt-get install php-pear&lt;br&gt;&#xA;sudo pecl install sqlsrv&lt;br&gt;&#xA;sudo pecl install pdo_sqlsrv&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 2 Supplement: Installing Helm on Azure K8S</title>
      <link>https://www.tanchunsiong.com/day-2-supplement-installing-helm-on-azure-k8s/</link>
      <pubDate>Sat, 06 Apr 2019 12:52:44 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/day-2-supplement-installing-helm-on-azure-k8s/</guid>
      <description>&lt;p&gt;First install chocolately in admin command prompt&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://docs.helm.sh/using_helm&#34;&gt;https://docs.helm.sh/using_helm&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;nohighlight&#34;&gt;@&#34;%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe&#34; -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command &#34;iex ((New-Object System.Net.WebClient).DownloadString(&#39;https://chocolatey.org/install.ps1&#39;))&#34; &amp;&amp; SET &#34;PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin&#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;choco install kubernetes-helm&#xA;&#xA;#if you already have RBAC k8s cluster&#xA;&#xA;&#xA;&#xA;&#xA;kubectl create serviceaccount --namespacekube-system default&#xA;&#xA;kubectl create clusterrolebinding kubernetes-default --clusterrole=cluster-admin --serviceaccount=kube-system:default &#xA;#install tiller&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-console&#34;&gt;helm init --canary-image &amp;lt;code&gt;--service-account default&lt;/code&gt; &amp;lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-console&#34;&gt;helm repo update&#xA;&#xA;#if you screw it up and want to fix it, you can either Delete or Upgrade&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;code&gt;kubectl delete deployment tiller-deploy --namespace kube-system&#xA;helm init --upgrade --service-account default&#xA;&#xA;&#xA;&#xA;kubectl patch deploy --namespace kube-system tiller-deploy -p &#39;{&amp;quot;spec&amp;quot;:{&amp;quot;template&amp;quot;:{&amp;quot;spec&amp;quot;:{&amp;quot;serviceAccount&amp;quot;:&amp;quot;default&amp;quot;}}}}&#39;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;&lt;/pre&gt;&#xA;&lt;pre&gt;kubectl create clusterrolebinding kubernetes-default --clusterrole=cluster-admin --serviceaccount=kube-system:default &#xA;&#xA;create a file named &lt;code&gt;hello-world-ingress.yaml&lt;/code&gt; and copy in the following example YAML: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-world-ingress annotations: kubernetes.io/ingress.class: nginx certmanager.k8s.io/cluster-issuer: letsencrypt-staging nginx.ingress.kubernetes.io/rewrite-target: / spec: tls: - hosts: - tanchunsiong.com secretName: tls-secret rules: - host: tanchunsiong.com http: paths: - path: / backend: serviceName: projectnami servicePort: 80 &lt;code&gt;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Building a Salon Booking Chatbot with LUIS and Bot Framework</title>
      <link>https://www.tanchunsiong.com/2019/03/building-a-salon-booking-chatbot-with-luis-and-bot-framework/</link>
      <pubDate>Sat, 23 Mar 2019 10:00:00 +0800</pubDate>
      <guid>https://www.tanchunsiong.com/2019/03/building-a-salon-booking-chatbot-with-luis-and-bot-framework/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Built a conversational AI chatbot for Jawed Habib salon services. The bot handles appointment bookings, pricing inquiries, and customer service through natural language conversations.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;h3 id=&#34;bot-framework-integration&#34;&gt;Bot Framework Integration&lt;/h3&gt;&#xA;&lt;p&gt;C# ASP.NET MVC application with Bot Framework SDK 3.2. MessagesController handles incoming messages and routes them to appropriate dialog flows.&lt;/p&gt;&#xA;&lt;h3 id=&#34;luis-natural-language-understanding&#34;&gt;LUIS Natural Language Understanding&lt;/h3&gt;&#xA;&lt;p&gt;Trained LUIS model with intents for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Booking management (make, check, cancel)&lt;/li&gt;&#xA;&lt;li&gt;Price inquiries (services, products)&lt;/li&gt;&#xA;&lt;li&gt;Payment information&lt;/li&gt;&#xA;&lt;li&gt;General help and greetings&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;entity-extraction&#34;&gt;Entity Extraction&lt;/h3&gt;&#xA;&lt;p&gt;LUIS extracts entities from user messages:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 3: Web Analytics, Web Performance Latency, Log Monitoring &#43; Alerts and Management API</title>
      <link>https://www.tanchunsiong.com/web-analytics-web-performance-latency-log-monitoring-alerts-and-management-api/</link>
      <pubDate>Tue, 07 Aug 2018 14:54:55 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/web-analytics-web-performance-latency-log-monitoring-alerts-and-management-api/</guid>
      <description>&lt;h2 id=&#34;challenge-statement&#34;&gt;Challenge Statement&lt;/h2&gt;&#xA;&lt;p&gt;One of the important metrics to measure when running a site, be it an eCommerce site or blog would be to measure the incoming traffic from organic and paid sources. Google Analytics is one of the freemium web analytics which users commonly. I’m looking at services specifically provided by Azure which does similar, which measures the user activity done on site.&lt;/p&gt;&#xA;&lt;p&gt;In addition when you are hosting your application on the cloud, you would want to take advantage of global data center and elastic scalability as well. Provision a service which can provide load testing and monitor ping response from different region in the world.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 2 Challenge: Your primary compute is going down for 4 hours, 7 days from now</title>
      <link>https://www.tanchunsiong.com/day-2-challenge-your-primary-compute-is-going-down-for-4-hours-7-days-from-now/</link>
      <pubDate>Tue, 07 Aug 2018 09:53:46 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/day-2-challenge-your-primary-compute-is-going-down-for-4-hours-7-days-from-now/</guid>
      <description>&lt;p&gt;“Shit happens but life goes on.” Anonymous&lt;/p&gt;&#xA;&lt;h2 id=&#34;challenge-statement&#34;&gt;Challenge Statement&lt;/h2&gt;&#xA;&lt;p&gt;Hopefully you have split your hosting service away from your database service. Which ever &lt;strong&gt;X&lt;/strong&gt; service you have utilize for Day 1, which for my case would be &lt;strong&gt;web app&lt;/strong&gt;. Let’s assume that it is going to be out of service, and you are getting notified about it 7 days prior to it.&lt;/p&gt;&#xA;&lt;p&gt;While it does not happen that often, lets assume this is beyond our control, and lean towards this worse-case scenario. The service &lt;strong&gt;X&lt;/strong&gt; will be unavailable 7 days from now in all region due to a planned maintenance, and you a strict &amp;gt;15 mins SLA to meet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 1 Solution : Creating WordPress with MSSQL on Azure Web App and SQL Azure</title>
      <link>https://www.tanchunsiong.com/day-1-solution-creating-wordpress-with-mssql-on-azure-web-app-and-sql-azure/</link>
      <pubDate>Tue, 07 Aug 2018 03:03:52 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/day-1-solution-creating-wordpress-with-mssql-on-azure-web-app-and-sql-azure/</guid>
      <description>&lt;h2 id=&#34;step-by-step-guide-to-setting-up-wordpress-with-mssql-on-azure-web-app-and-sql-azure&#34;&gt;Step by step guide to setting up WordPress with MSSQL on Azure Web App and SQL Azure&lt;/h2&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;Here’s my response to the challenge. The choice of technology which I’m starting with would be &lt;a href=&#34;https://wordpress.org/&#34;&gt;WordPress&lt;/a&gt;.&lt;br&gt;&#xA;Thinking further, I’ve decided to look for CMS fork of WordPress which utilizes MSSQL instead of MYSQL.&lt;br&gt;&#xA;This is purely my choice as I’m familiar with MSSQL, knowing that in future the setting up of high availability configuration would be something I’m comfortable with.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 1 Challenge: Creating a CMS Site</title>
      <link>https://www.tanchunsiong.com/creating-a-cms-site/</link>
      <pubDate>Tue, 07 Aug 2018 02:06:03 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/creating-a-cms-site/</guid>
      <description>&lt;h2 id=&#34;challenge-statement&#34;&gt;Challenge Statement&lt;/h2&gt;&#xA;&lt;p&gt;Create a content management system hosted on Azure, which you will be using to blog about your progress from Day 1 to Day 30 of your &lt;a href=&#34;https://www.tanchunsiong.com/&#34;&gt;days of azure challenge&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisite-and-requirements&#34;&gt;Prerequisite and Requirements&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Knowledge of &lt;a href=&#34;https://en.wikipedia.org/wiki/List_of_content_management_systems&#34;&gt;popular CMS&lt;/a&gt; (Content Management System) available in the market&lt;/li&gt;&#xA;&lt;li&gt;Understanding of &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-overview&#34;&gt;different types of compute offering on Azure&lt;/a&gt;. This list is by no mean exhaustive and at the point of writing 7th Aug 2018,. the major ones are&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Virtual Machines (VMs)&lt;/li&gt;&#xA;&lt;li&gt;Azure App Service (Also loosely referred to as Azure Web Sites, Azure Web App, App Service Environment from previous naming conventions)&lt;/li&gt;&#xA;&lt;li&gt;Container Services (this is a loose term referring to Docker based container hosting services)&lt;/li&gt;&#xA;&lt;li&gt;Service Fabric&lt;/li&gt;&#xA;&lt;li&gt;Cloud Services (also know as web &amp;amp; worker role)&lt;/li&gt;&#xA;&lt;li&gt;Azure Functions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.microsoft.com/en-us/azure/storage/&#34;&gt;Storage&lt;/a&gt; and &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-overview&#34;&gt;Networking Services&lt;/a&gt; on Azure&lt;/li&gt;&#xA;&lt;li&gt;Knowledge of &lt;a href=&#34;https://azure.microsoft.com/en-us/product-categories/databases/&#34;&gt;available database providers&lt;/a&gt; such as&#xA;&lt;ul&gt;&#xA;&lt;li&gt;MSSQL&lt;/li&gt;&#xA;&lt;li&gt;MYSQL&lt;/li&gt;&#xA;&lt;li&gt;PostgreSQL&lt;/li&gt;&#xA;&lt;li&gt;NoSQL&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Document based&lt;/li&gt;&#xA;&lt;li&gt;Key Value based&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;*enough for now*&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Domain name management and setting up of DNS Records such as&#xA;&lt;ol&gt;&#xA;&lt;li&gt;cname&lt;/li&gt;&#xA;&lt;li&gt;TXT&lt;/li&gt;&#xA;&lt;li&gt;A Records&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Setting up of Application Servers (not to be confused with compute servers) such as&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Nginx&lt;/li&gt;&#xA;&lt;li&gt;Apache&lt;/li&gt;&#xA;&lt;li&gt;IIS&lt;/li&gt;&#xA;&lt;li&gt;Other relevant application server compatible with your CMS, which might be written perl, python, RoR, and other languages&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Knowledge of Windows or Linux based operating systems&lt;/li&gt;&#xA;&lt;li&gt;Bonus: SSL Certificate for Domain Names&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;You do not need to know everything listed above, work with the technologies which you are familiar with.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Day 0: A Prologue</title>
      <link>https://www.tanchunsiong.com/day-0-a-prologue/</link>
      <pubDate>Mon, 06 Aug 2018 14:16:27 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/day-0-a-prologue/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://www.tanchunsiong.com/wp-content/uploads/2018/08/strata_thumb.jpg&#34; alt=&#34;hello&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisite-and-requirements&#34;&gt;Prerequisite and Requirements&lt;/h2&gt;&#xA;&lt;p&gt;Welcome to 30 Days of Azure challenge site. There are no prizes when you complete this challenge. Aww…. Nonetheless things will start getting interesting, as the challenges won’t be easy (at least for beginners), and &lt;a href=&#34;https://knowyourmeme.com/memes/its-not-a-defect-its-a-feature&#34;&gt;they are that by design&lt;/a&gt;. The daily challenges will always start off with the &lt;strong&gt;Challenge Statement, Prerequisite and Requirements, and Though Process section&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you are interested, check out this section on &lt;a href=&#34;https://www.tanchunsiong.com/about/&#34;&gt;why am I doing this&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://www.tanchunsiong.com/2018/08/about/</link>
      <pubDate>Mon, 06 Aug 2018 14:03:59 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2018/08/about/</guid>
      <description>&lt;p&gt;Hi, I’m &lt;a href=&#34;http://www.tanchunsiong.com&#34;&gt;Tan Chun Siong&lt;/a&gt; and &lt;a href=&#34;https://www.tanchunsiong.com&#34;&gt;30 Days of Azure&lt;/a&gt; is a new project I’ve started as a challenge to build more resilient services by adopting these strategies and philosophy&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;adopting and modifying &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/architecture/patterns/&#34;&gt;patterns and practices&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://azure.microsoft.com/en-us/updates/&#34;&gt;new services&lt;/a&gt; released on Azure on a regular basis&lt;/li&gt;&#xA;&lt;li&gt;Indirection of “Any &lt;strong&gt;problem&lt;/strong&gt; in computer science can be &lt;strong&gt;solved&lt;/strong&gt; &lt;strong&gt;with&lt;/strong&gt; one &lt;strong&gt;additional&lt;/strong&gt; &lt;strong&gt;layer&lt;/strong&gt; &lt;strong&gt;of&lt;/strong&gt; indirection.”&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://donovanbrown.com/&#34;&gt;“Never send a human to do a computer’s work” – donovan brown&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The final infrastructure which this wordpress site resides on, should (hopefully) stand up against service failures and unexpected maintenance and possibly disasters in specific regions. To make it more challenging and I’ll be getting my colleague &lt;a href=&#34;https://sannyadang.com/&#34;&gt;Sannya Dang&lt;/a&gt; to work on the same challenges, hoping that there will be slightly different outcome&lt;/p&gt;</description>
    </item>
    <item>
      <title>Azure Portal Metrics Graph / Metric Chart always showing 0 or dips at the end due to averaging.</title>
      <link>https://www.tanchunsiong.com/azure-portal-metrics-graph-metric-chart-always-showing-0-or-dips-at-the-end/</link>
      <pubDate>Thu, 26 Jul 2018 06:28:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/azure-portal-metrics-graph-metric-chart-always-showing-0-or-dips-at-the-end/</guid>
      <description>&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-full wp-image-459&#34; src=&#34;http://www.tanchunsiong.com/wp-content/uploads/2018/07/azure-metric-showing-0-dipping-at-the-end.jpg&#34; alt=&#34;&#34; width=&#34;1515&#34; height=&#34;1264&#34; srcset=&#34;http://www.tanchunsiong.com/wp-content/uploads/2018/07/azure-metric-showing-0-dipping-at-the-end.jpg 1515w, http://www.tanchunsiong.com/wp-content/uploads/2018/07/azure-metric-showing-0-dipping-at-the-end-768x641.jpg 768w&#34; sizes=&#34;(max-width: 1515px) 100vw, 1515px&#34; /&gt; If you are a frequent user of the Azure Portal, you might have realized it is a common sighting to see some metrics such as CPU dropping to Zero, Network dipping to Zero, or Disk Read Write Operation drops to Zero.&lt;/p&gt;&#xA;&lt;p&gt;Do not be alarmed as it is not reflect the true actual value of the service’s metric (which in my case in an Azure VM) dropping to Zero. The charts are an average of the values over time, and does not show real time value as compared to the operating system’s task manager.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up SQL Always On Cluster with Azure Active Directory Domain Services AAD DS and Dedicated NIC on Azure</title>
      <link>https://www.tanchunsiong.com/setting-up-sql-always-on-cluster-with-azure-active-directory-domain-services-and-dedicated-nic-on-azure/</link>
      <pubDate>Thu, 22 Mar 2018 13:28:37 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/setting-up-sql-always-on-cluster-with-azure-active-directory-domain-services-and-dedicated-nic-on-azure/</guid>
      <description>&lt;p&gt;I refer to various guides ranging from &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sql/virtual-machines-windows-portal-sql-alwayson-availability-groups&#34;&gt;SQL Always On Cluster Setup Guide&lt;/a&gt;, and brief documentation on &lt;a href=&#34;https://blogs.msdn.microsoft.com/sqlcat/2017/02/23/sql-server-availability-groups-in-azure-vm-setup-with-aad-domain-services/&#34;&gt;SQL Always On with AAD Domain Services&lt;/a&gt; and have decided to write a comprehensive guide which might save you hours or even days of fun.&lt;/p&gt;&#xA;&lt;p&gt;Here are some constrains which the AAD DS might have, and some workaround for it.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;You can only create computer objects (OU: AADDC Computers) if the AD user is part of the AAD DS Administrator. Hence add your user account on Azure Active Directory management page, to the AAD DS Administrator group.&lt;/li&gt;&#xA;&lt;li&gt;You should not delete users (OU: AADDC Users) directly from AAD DS Administrative Center. You can delete users from the Azure Portal.&lt;/li&gt;&#xA;&lt;li&gt;AD users will only be propagated to AAD DS after resetting and changing their password on myapps.microsoft.com&lt;/li&gt;&#xA;&lt;li&gt;Administrative Center does not allow creation of users. Create users in the Azure Active Directory Panel in your Azure Portal.&lt;/li&gt;&#xA;&lt;li&gt;When creating your AAD DS, it is highly recommended to use a valid domain name, such as &lt;a href=&#34;mailto:myuserid@mytenantname.onmicrosoft.com&#34;&gt;myuserid@mytenantname.onmicrosoft.com&lt;/a&gt; . Choose wisely, as every mistake which requires you to recreate your AAD DS will take 45-60 mins each.&lt;/li&gt;&#xA;&lt;li&gt;Do not delete system generated objects on your AAD DS DNS records. Deleting known computer objects (VMs, Clusters) is fine. If you accidentally delete system generated objects, you will need to refer to point 4. Recreate your AAD DS, go and have a coffee, and come back in an hours time.&lt;/li&gt;&#xA;&lt;li&gt;Do not delete system generated computer objects on your (OU: AADDC Computers). Refer to step 4. If you did, redo your AAD DS, go have lunch now.&lt;/li&gt;&#xA;&lt;li&gt;If you really wish to create user objects, you will need to create an additional OU. But…. these users in this newly created OU will not have permissions to create computer objects. These users (in a different OU) are are not allowed to be part of AAD DS Administrative Group. Hence if you attempt to create a failover cluster with a domain account in a custom OU, it will fail.&lt;/li&gt;&#xA;&lt;li&gt;Create an account such as &lt;a href=&#34;mailto:install@tenantid.onmicrosoft.com&#34;&gt;install@tenantid.onmicrosoft.com&lt;/a&gt; with AAD DS Administrator Group membership.&lt;/li&gt;&#xA;&lt;li&gt;I’ve tried, but there is no direct method to reduce effective permission for a user with AAD DS Administrator Group membership.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Here are some common preparations and information before setting up SQL Always On Cluster on SQL Management Studio&lt;/p&gt;</description>
    </item>
    <item>
      <title>Yeoman Cheatsheet</title>
      <link>https://www.tanchunsiong.com/Yeoman-Cheatsheet/</link>
      <pubDate>Tue, 13 Feb 2018 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/Yeoman-Cheatsheet/</guid>
      <description>&lt;p&gt;# install yo&lt;br&gt;&#xA;npm install –global yo&lt;/p&gt;&#xA;&lt;p&gt;# check for errors&lt;br&gt;&#xA;yo doctor&lt;/p&gt;&#xA;&lt;p&gt;#incase you can’t find the template&lt;br&gt;&#xA;npm install -g generator-vsts-extension&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrating VM from HDD Storage to SSD Premium Storage on Azure for ARM</title>
      <link>https://www.tanchunsiong.com/migrating-vm-from-hdd-storage-to-ssd-premium-storage-on-azure-for-arm/</link>
      <pubDate>Thu, 11 May 2017 15:05:57 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/migrating-vm-from-hdd-storage-to-ssd-premium-storage-on-azure-for-arm/</guid>
      <description>&lt;pre class=&#34;lang:default decode:true &#34; &gt;$cred = Get-Credential&#xD;&#xA;&#xD;&#xA;Add-AzureRmAccount -Credential $cred&#xD;&#xA;&#xD;&#xA;$ResourceGroupName  = &#34;__yourvalues__&#34;&#xD;&#xA;$vmname = &#34;__yourvalues__&#34;&#xD;&#xA;&#xD;&#xA;# maybe this should be another task altogether #&#xD;&#xA;Get-AzureRmVM -ResourceGroupName $ResourceGroupName -Name $vmname | Stop-AzureRmVM -force&#xD;&#xA;&#xD;&#xA;Select-AzureSubscription &#34;yoursubscriptionname&#34; &#xD;&#xA;Set-AzureSubscription -SubscriptionName &#34;yoursubscriptionname&#34; -CurrentStorageAccount &#34;__yourvalues__&#34;&#xD;&#xA;&#xD;&#xA;# VHD blob to copy #&#xD;&#xA;$blobName = &#34;__yourvalues__.vhd&#34; &#xD;&#xA;&#xD;&#xA;# Source Storage Account Information #&#xD;&#xA;$sourceStorageAccountName = &#34;__yourvalues__&#34;&#xD;&#xA;$sourceKey = &#34;__yourvalues__&#34;&#xD;&#xA;$sourceContext = New-AzureStorageContext –StorageAccountName $sourceStorageAccountName -StorageAccountKey $sourceKey  &#xD;&#xA;$sourceContainer = &#34;__yourvalues__&#34;&#xD;&#xA;&#xD;&#xA;# Destination Storage Account Information #&#xD;&#xA;$destinationStorageAccountName = &#34;__yourvalues__&#34; &#xD;&#xA;$destinationKey = &#34;__yourvalues__&#34;&#xD;&#xA;$destinationContext = New-AzureStorageContext –StorageAccountName $destinationStorageAccountName -StorageAccountKey $destinationKey  &#xD;&#xA;&#xD;&#xA;# Create the destination container #&#xD;&#xA;$destinationContainerName = &#34;vhds&#34;&#xD;&#xA;&#xD;&#xA;# Copy the blob # &#xD;&#xA;$blobCopy = Start-AzureStorageBlobCopy -DestContainer $destinationContainerName `&#xD;&#xA;                        -DestContext $destinationContext `&#xD;&#xA;                        -SrcBlob $blobName `&#xD;&#xA;                        -Context $sourceContext `&#xD;&#xA;                        -SrcContainer $sourceContainer -Force&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;while(($blobCopy | Get-AzureStorageBlobCopyState).Status -eq &#34;Pending&#34;)&#xD;&#xA;{&#xD;&#xA;    Start-Sleep -s 30&#xD;&#xA;    $blobCopy | Get-AzureStorageBlobCopyState&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;# maybe this should be another task altogether #&#xD;&#xA;Get-AzureVM -ServiceName $servicename -Name $vmname | Start-AzureVM&#xD;&#xA;&#xD;&#xA;# set as a disk #&#xD;&#xA;$AzureVHD = &#39;https://&#39; + $destinationStorageAccountName + &#39;.blob.core.windows.net/&#39; + $destinationContainerName + &#39;/&#39; + $blobName&#xD;&#xA;&#xD;&#xA;$vnet = Get-AzureRmVirtualNetwork -name  __yourvalues__-ResourceGroupName __yourvalues__&#xD;&#xA;&#xD;&#xA;$nic = New-AzureRmNetworkInterface -Name &#34;__yourvalues__&#34; -ResourceGroupName __yourvalues__ -Location &#34;SouthEast Asia&#34; -SubnetId $vnet.Subnets[0].Id &#xD;&#xA;&#xD;&#xA;$VirtualMachine = New-AzureRmVMConfig -VMName &#34;__yourvalues__&#34; -VMSize &#34;Standard_DS1_v2&#34;&#xD;&#xA;$VirtualMachine = Add-AzureRmVMNetworkInterface -VM $VirtualMachine -Id $nic.Id&#xD;&#xA;$VirtualMachine = Set-AzureRmVMOSDisk -VM $VirtualMachine -Name $blobName -VhdUri $AzureVHD -CreateOption Attach -Windows&#xD;&#xA;New-AzureRmVM -VM $VirtualMachine -ResourceGroupName &#34;__yourvalues__&#34; -location &#39;SouthEast Asia&#39;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Migrating VM from HDD Storage to SSD Premium Storage on Azure for ASM</title>
      <link>https://www.tanchunsiong.com/migrating-vm-from-hdd-storage-to-ssd-premium-storage-on-azure-for-asm/</link>
      <pubDate>Thu, 27 Apr 2017 08:37:45 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/migrating-vm-from-hdd-storage-to-ssd-premium-storage-on-azure-for-asm/</guid>
      <description>&lt;pre class=&#34;lang:default decode:true &#34; &gt;$username = &#34;userid@yourtenantname.onmicrosoft.com&#34;&#xD;&#xA;$password =  ConvertTo-SecureString &#34;yourpassword&#34; -AsPlainText -Force&#xD;&#xA;$cred = new-object -typename System.Management.Automation.PSCredential `&#xD;&#xA;         -argumentlist $username, $password&#xD;&#xA;&#xD;&#xA;Add-AzureAccount -Credential $cred&#xD;&#xA;&#xD;&#xA;$servicename = &#34;yourservicename&#34;&#xD;&#xA;$vmname = &#34;yourvmname&#34;&#xD;&#xA;&#xD;&#xA;# maybe this should be another task altogether #&#xD;&#xA;Get-AzureVM -ServiceName $servicename -Name $vmname | Stop-AzureVM -force&#xD;&#xA;&#xD;&#xA;Select-AzureSubscription &#34;yoursubscriptionname&#34; &#xD;&#xA;Set-AzureSubscription -SubscriptionName &#34;yoursubscriptionname&#34; -CurrentStorageAccount &#34;portalvhdssomethingsource&#34;&#xD;&#xA;&#xD;&#xA;# VHD blob to copy #&#xD;&#xA;$blobName = &#34;yourvhdname.vhd&#34; &#xD;&#xA;&#xD;&#xA;# Source Storage Account Information #&#xD;&#xA;$sourceStorageAccountName = &#34;portalvhdssomethingsource&#34;&#xD;&#xA;$sourceKey = &#34;yourkey&#34;&#xD;&#xA;$sourceContext = New-AzureStorageContext –StorageAccountName $sourceStorageAccountName -StorageAccountKey $sourceKey  &#xD;&#xA;$sourceContainer = &#34;vhds&#34;&#xD;&#xA;&#xD;&#xA;# Destination Storage Account Information #&#xD;&#xA;$destinationStorageAccountName = &#34;portalvhdssomethingdestination&#34; &#xD;&#xA;$destinationKey = &#34;yourkey&#34;&#xD;&#xA;$destinationContext = New-AzureStorageContext –StorageAccountName $destinationStorageAccountName -StorageAccountKey $destinationKey  &#xD;&#xA;&#xD;&#xA;# Create the destination container #&#xD;&#xA;$destinationContainerName = &#34;vhds&#34;&#xD;&#xA;&#xD;&#xA;# Copy the blob # &#xD;&#xA;$blobCopy = Start-AzureStorageBlobCopy -DestContainer $destinationContainerName `&#xD;&#xA;                        -DestContext $destinationContext `&#xD;&#xA;                        -SrcBlob $blobName `&#xD;&#xA;                        -Context $sourceContext `&#xD;&#xA;                        -SrcContainer $sourceContainer -Force&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;while(($blobCopy | Get-AzureStorageBlobCopyState).Status -eq &#34;Pending&#34;)&#xD;&#xA;{&#xD;&#xA;    Start-Sleep -s 30&#xD;&#xA;    $blobCopy | Get-AzureStorageBlobCopyState&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;# maybe this should be another task altogether #&#xD;&#xA;Get-AzureVM -ServiceName $servicename -Name $vmname | Start-AzureVM&#xD;&#xA;&#xD;&#xA;# set as a disk #&#xD;&#xA;$AzureVHD = &#39;http://&#39; + $destinationStorageAccountName + &#39;.blob.core.windows.net/&#39; + $destinationContainerName + &#39;/&#39; + $blobName&#xD;&#xA;&#xD;&#xA;Add-AzureDisk -DiskName $vmname -MediaLocation $AzureVHD `&#xD;&#xA;    -Label $vmname -OS linux&#xD;&#xA;&#xD;&#xA;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Updating Xiaoyi Weidan M1 Mirrorless Camera Firmware 1.0.17-cn</title>
      <link>https://www.tanchunsiong.com/updating-xiaoyi-weidan-m1-mirrorless-camera-firmware-1-0-17-cn/</link>
      <pubDate>Thu, 03 Nov 2016 09:41:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/updating-xiaoyi-weidan-m1-mirrorless-camera-firmware-1-0-17-cn/</guid>
      <description>&lt;p&gt;There are a couple of users who have complained that they are unable to link to their Xiaoyi Weidan M1 Mirrorless Camera via their iPhone and Android application.&lt;/p&gt;&#xA;&lt;p&gt;Xiaoyi has recently released the firmware over &lt;a href=&#34;https://www.xiaoyi.com/weidan/images/download/FirmwareV1.0.17-cn.zip&#34;&gt;here&lt;/a&gt;.&lt;br&gt;&#xA;In case you are unable to download directly, please refer to &lt;a href=&#34;https://www.xiaoyi.com/weidan_download.html&#34;&gt;https://www.xiaoyi.com/weidan_download.html&lt;/a&gt; to download the latest firmware. At time of writing, the latest firmware version is 1.0.17-CN (I’m using the China version).&lt;/p&gt;&#xA;&lt;p&gt;To update your firmware,&lt;/p&gt;</description>
    </item>
    <item>
      <title>(Updated) LUIS Announcement: The programmatic API keys will no longer be used in the endpoint starting 31/12/2016!</title>
      <link>https://www.tanchunsiong.com/luis-announcement-the-programmatic-api-keys-will-no-longer-be-used-in-the-endpoint-starting-31122016/</link>
      <pubDate>Fri, 14 Oct 2016 09:26:10 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/luis-announcement-the-programmatic-api-keys-will-no-longer-be-used-in-the-endpoint-starting-31122016/</guid>
      <description>&lt;p&gt;Users of LUIS, or Language Understanding Intelligent Service on luis.ai might have recently received a message “The programmatic API keys will no longer be used in the endpoint starting 31/12/2016!”.&lt;/p&gt;&#xA;&lt;p&gt;If you are searching for some information on this notice, here are some guidance regarding the notice.&lt;/p&gt;&#xA;&lt;p&gt;&lt;del datetime=&#34;2016-10-17T14:10:51+00:00&#34;&gt;There will be a deprecation of the endpoint in the following format.&lt;/del&gt;&lt;del datetime=&#34;2016-10-17T14:10:51+00:00&#34;&gt;&lt;br /&gt; &lt;a href=&#34;https://api.projectoxford.ai/luis2/v1/application?application?id=%7Bappid%7D&amp;amp;subscription-key=%7Bsubkey%7D&amp;amp;q=%7Butterance%7D&#34;&gt;https://api.projectoxford.ai/luis2/v1/application?application?id={appid}&amp;amp;subscription-key={subkey}&amp;amp;q={utterance}&lt;/a&gt; &lt;/del&gt;&lt;br&gt;&#xA;&lt;del datetime=&#34;2016-10-17T14:10:51+00:00&#34;&gt;If you are using SDK, you shouldn’t be affected as the SDK (updated ones) should be using header authentication.&lt;/del&gt;&lt;br&gt;&#xA;*Corrections as of 17th Oct&lt;/p&gt;</description>
    </item>
    <item>
      <title>Face-Tracking Camera with Stepper Motor Control</title>
      <link>https://www.tanchunsiong.com/2016/04/face-tracking-camera-with-stepper-motor-control/</link>
      <pubDate>Thu, 21 Apr 2016 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2016/04/face-tracking-camera-with-stepper-motor-control/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Automated face-tracking camera system built for DX Hackfest in April 2016. The system uses Windows IoT Core on Raspberry Pi to detect faces in real-time and automatically pan the camera using a stepper motor to keep the detected face centered in frame.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Face Detection Pipeline&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Windows.Media.FaceAnalysis API for real-time face detection&lt;/li&gt;&#xA;&lt;li&gt;MediaCapture API for camera stream acquisition&lt;/li&gt;&#xA;&lt;li&gt;SoftwareBitmap processing at 30 FPS&lt;/li&gt;&#xA;&lt;li&gt;Yellow bounding box overlay on detected faces&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Motor Control System&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>IOT Downloader: Azure Event Hub Consumer Pattern</title>
      <link>https://www.tanchunsiong.com/2016/02/iot-downloader-azure-event-hub-consumer-pattern/</link>
      <pubDate>Mon, 01 Feb 2016 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2016/02/iot-downloader-azure-event-hub-consumer-pattern/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Console application demonstrating Azure Event Hubs consumer pattern using EventProcessorHost. Receives and processes IoT telemetry messages from distributed devices with automatic partition management, checkpointing, and fault tolerance.&lt;/p&gt;&#xA;&lt;p&gt;Built as reference implementation for Azure IoT telemetry pipeline.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;EventProcessorHost Pattern&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Abstracts partition management and load balancing&lt;/li&gt;&#xA;&lt;li&gt;Automatically distributes partitions across consumer instances&lt;/li&gt;&#xA;&lt;li&gt;Handles partition ownership via Azure Storage leases&lt;/li&gt;&#xA;&lt;li&gt;Provides scalable, fault-tolerant message consumption&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;SimpleEventProcessor Implementation&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;OpenAsync: Initialize processor for assigned partition&lt;/li&gt;&#xA;&lt;li&gt;ProcessEventsAsync: Handle batch of messages from partition&lt;/li&gt;&#xA;&lt;li&gt;CloseAsync: Cleanup when partition revoked or shutdown&lt;/li&gt;&#xA;&lt;li&gt;CheckpointAsync: Persist current partition offset&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Checkpoint Strategy&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>IOT Uploader: Azure Event Hub Producer for Sensor Telemetry</title>
      <link>https://www.tanchunsiong.com/2016/02/iot-uploader-azure-event-hub-producer-for-sensor-telemetry/</link>
      <pubDate>Mon, 01 Feb 2016 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2016/02/iot-uploader-azure-event-hub-producer-for-sensor-telemetry/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Console application that generates and publishes simulated IoT sensor telemetry to Azure Event Hubs. Demonstrates Event Hub producer pattern for high-throughput data ingestion. Supports both simulated sensors (random data generation) and physical sensors via serial port communication.&lt;/p&gt;&#xA;&lt;p&gt;Built as companion project to IOT Downloader for end-to-end telemetry pipeline demonstration.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Telemetry Generation&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Random number generator for simulated sensor readings&lt;/li&gt;&#xA;&lt;li&gt;Heart rate: 70-190 BPM (normal to exercise range)&lt;/li&gt;&#xA;&lt;li&gt;Temperature: 20-40°C (room temperature to body temperature)&lt;/li&gt;&#xA;&lt;li&gt;2-second polling interval mimics real sensor behavior&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Message Construction&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>O365 Photo Crawler: Microsoft Graph API Demo App</title>
      <link>https://www.tanchunsiong.com/2016/01/o365-photo-crawler-microsoft-graph-api-demo-app/</link>
      <pubDate>Fri, 15 Jan 2016 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2016/01/o365-photo-crawler-microsoft-graph-api-demo-app/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Universal Windows Platform application developed for Microsoft DX (Developer Experience) Readiness initiative. Demonstrates Microsoft Graph API integration by crawling Office 365 organizational directory, retrieving user profiles and photos, and displaying them in an adaptive UWP interface.&lt;/p&gt;&#xA;&lt;p&gt;Served as reference implementation for enterprise developers learning Microsoft Graph API.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Authentication Layer&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Azure Active Directory authentication via ADAL (Active Directory Authentication Library)&lt;/li&gt;&#xA;&lt;li&gt;OAuth 2.0 authorization code flow&lt;/li&gt;&#xA;&lt;li&gt;Token caching with automatic refresh&lt;/li&gt;&#xA;&lt;li&gt;Multi-tenant support (configurable tenant ID)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Microsoft Graph Integration&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Arduino IoT Sensors: From Microsoft&#39;s Connect The Dots to Custom ESP32 Libraries (2015-2023)</title>
      <link>https://www.tanchunsiong.com/2015/04/arduino-iot-sensors-from-microsofts-connect-the-dots-to-custom-esp32-libraries-2015-2023/</link>
      <pubDate>Wed, 01 Apr 2015 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2015/04/arduino-iot-sensors-from-microsofts-connect-the-dots-to-custom-esp32-libraries-2015-2023/</guid>
      <description>&lt;h1 id=&#34;arduino-iot-sensors-from-microsofts-connect-the-dots-to-custom-esp32-libraries-2015-2023&#34;&gt;Arduino IoT Sensors: From Microsoft&amp;rsquo;s Connect The Dots to Custom ESP32 Libraries (2015-2023)&lt;/h1&gt;&#xA;&lt;p&gt;This repository archives nearly a decade of Arduino and MediaTek LinkIt IoT sensor development work, spanning from my time with the Microsoft Singapore Developer Experience Team in 2015 to custom ESP32 library development in 2023.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href=&#34;https://github.com/tanchunsiong/arduino-iot-sensors&#34;&gt;https://github.com/tanchunsiong/arduino-iot-sensors&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Timeline:&lt;/strong&gt; 2015-2023&lt;br&gt;&#xA;&lt;strong&gt;Organization:&lt;/strong&gt; Microsoft Singapore DX Team (2015), Personal Projects (2023)&lt;br&gt;&#xA;&lt;strong&gt;Location:&lt;/strong&gt; Singapore Microsoft Innovation Center (SG MIC)&lt;/p&gt;&#xA;&lt;h2 id=&#34;table-of-contents&#34;&gt;Table of Contents&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#project-overview&#34;&gt;Project Overview&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#historical-context&#34;&gt;Historical Context&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#the-connect-the-dots-framework&#34;&gt;The Connect The Dots Framework&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#sensor-exploration-projects&#34;&gt;Sensor Exploration Projects&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#mediatek-maracas-azure-iot-monitoring&#34;&gt;MediaTek Maracas: Azure IoT Monitoring&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#custom-esp32-libraries&#34;&gt;Custom ESP32 Libraries&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#technical-architecture&#34;&gt;Technical Architecture&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#hardware-specifications&#34;&gt;Hardware Specifications&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;#lessons-learned&#34;&gt;Lessons Learned&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;project-overview&#34;&gt;Project Overview&lt;/h2&gt;&#xA;&lt;p&gt;This collection represents three distinct phases of IoT development:&lt;/p&gt;</description>
    </item>
    <item>
      <title>OneDrive crashing on Windows 10 Threshold Fix</title>
      <link>https://www.tanchunsiong.com/onedrive-crashing-on-windows-10-threshold-fix/</link>
      <pubDate>Mon, 17 Nov 2014 09:39:02 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/onedrive-crashing-on-windows-10-threshold-fix/</guid>
      <description>&lt;p&gt;You might have recently tested the technical preview of Windows 10 and realised that the OneDrive/ Skydrive client fails to start running.&lt;br&gt;&#xA;Here’s the fix which might help solve the issue.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Delete the folder c:\users\yourusername\onedrive&lt;/li&gt;&#xA;&lt;li&gt;Delete your user OneDrive user profile at C:\Users\yourusername\AppData\Local\Microsoft\SkyDrive\settings\ They usually end with DAT format, delete the configuration file starting with the same OneDriveID too&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Reinstall the OneDrive Client on C:\Users\yourusername\AppData\Local\Microsoft\SkyDrive\17.3.4517.1031&lt;/ol&gt;&#xA;Your OneDrive should start working now 🙂&lt;br&gt;&#xA;Else, right click C:\Users\yourusername\AppData\Local\Microsoft\SkyDrive\SkyDrive.exe try running it in Windows 7 compatibility mode.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Azure Endpoint name ‘xxxx’, property ‘LoadBalancerDistribution’. The value ‘sourceIPProtocol’ does not match ‘ for LB set ‘xxxx’.</title>
      <link>https://www.tanchunsiong.com/azure-endpoint-name-xxxx-property-loadbalancerdistribution-the-value-sourceipprotocol-does-not-match-for-lb-set-xxxx-2/</link>
      <pubDate>Tue, 11 Nov 2014 03:41:18 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/azure-endpoint-name-xxxx-property-loadbalancerdistribution-the-value-sourceipprotocol-does-not-match-for-lb-set-xxxx-2/</guid>
      <description>&lt;p&gt;I refer to the new feature of sticky session on &lt;a href=&#34;http://azure.microsoft.com/blog/2014/10/30/azure-load-balancer-new-distribution-mode/&#34;&gt;this article here&lt;/a&gt; where you are able to set 2-tuple or 3-tuple affinity in addition to the previous version of endpoint load balancer on azure.&lt;/p&gt;&#xA;&lt;p&gt;After following the Azure cmdlet on the above blogpost, I’ve stumbled upon the error in the image/title whenever I try to add in new endpoints on the manage.windowsazure.com or portal.azure.com portal.&lt;br&gt;&#xA;&lt;a href=&#34;http://www.tanchunsiong.com/wp-content/uploads/2014/11/error-crop.jpg&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-full wp-image-385&#34; src=&#34;http://www.tanchunsiong.com/wp-content/uploads/2014/11/error-crop.jpg&#34; alt=&#34;error-crop&#34; width=&#34;800&#34; height=&#34;119&#34; srcset=&#34;http://www.tanchunsiong.com/wp-content/uploads/2014/11/error-crop.jpg 800w, http://www.tanchunsiong.com/wp-content/uploads/2014/11/error-crop-300x44.jpg 300w&#34; sizes=&#34;(max-width: 800px) 100vw, 800px&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Skydrive slow syncing solution and fixes</title>
      <link>https://www.tanchunsiong.com/skydrive-slow-syncing-solution-and-fixes/</link>
      <pubDate>Wed, 22 May 2013 07:18:06 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/skydrive-slow-syncing-solution-and-fixes/</guid>
      <description>&lt;p&gt;Recently, Skydrive users have complain on various sites and that the sync speed on their Skydrive client is slow, or taking too long to sync a large amount of data. Fortunately, there are a couple of tweaks/solution/fixes users can easily implement to speed up the sync speed of Skydrive client on Windows.&lt;/p&gt;&#xA;&lt;p&gt;There are 2 configuration files which users can play around with, but do note that you are going to proceed at your own risk!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pixaroll :  Get your instagram sized photos printed and delivered to you on Windows Phone</title>
      <link>https://www.tanchunsiong.com/pixaroll-get-your-instagram-sized-photos-printed-and-delivered-to-you-on-windows-phone/</link>
      <pubDate>Tue, 07 May 2013 08:43:25 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/pixaroll-get-your-instagram-sized-photos-printed-and-delivered-to-you-on-windows-phone/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://spiffy.sg/general/pixaroll-get-your-instagram-sized-photos-printed-and-delivered-to-you-on-windows-phone/attachment/msinstagram/&#34; rel=&#34;attachment wp-att-14169&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-medium wp-image-14169&#34; title=&#34;Instagram Windows Phone&#34; alt=&#34;Instagram Windows Phone&#34; src=&#34;http://spiffy.sg/wp-content/uploads/2013/04/MSinstagram-300x300.jpg&#34; width=&#34;300&#34; height=&#34;300&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;A startup based in Singapore, &lt;a href=&#34;http://pixaroll.com/Site/index.html&#34; title=&#34;http://pixaroll.com/Site/index.html&#34;&gt;Pixaroll&lt;/a&gt; is announcing that they are bringing photo printing/delivery service to Windows Phone platform!&lt;/p&gt;&#xA;&lt;p&gt;Unlike self-served printing from consumer photo printers, &lt;a href=&#34;http://pixaroll.com/Site/index.html&#34; title=&#34;http://pixaroll.com/Site/index.html&#34;&gt;Pixaroll&lt;/a&gt; delivers top quality prints with accurate color reproduction by using professional printing machines with papers equivalent to photo labs.&lt;/p&gt;&#xA;&lt;p&gt;Here are some comparison.&lt;/p&gt;&#xA;&lt;p&gt;*&lt;strong&gt;Do note that the final prints are matte finish and digitized with a mobile phone, hence the differences in grains, contrast and exposure from their digital copy. They look almost identical to the digital copy in real life, I promise you.&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>What to do when someone clones your app on Windows Phone Marketplace?</title>
      <link>https://www.tanchunsiong.com/what-to-do-when-someone-clones-your-app-on-windows-phone-marketplace/</link>
      <pubDate>Tue, 07 May 2013 08:25:15 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/what-to-do-when-someone-clones-your-app-on-windows-phone-marketplace/</guid>
      <description>&lt;p&gt;A Windows Phone developer of a popular application &lt;a href=&#34;http://www.windowsphone.com/en-us/store/app/skinery-tiles-pro/0c413983-24b5-42cb-8408-56f5b1422eed&#34;&gt;Skinery Tiles Pro&lt;/a&gt; realized that his application has been blatantly cloned by another developer &lt;a href=&#34;http://www.windowsphone.com/en-us/store/app/%e7%82%ab%e6%a1%8c%e9%9d%a2/ff8aca92-f19c-4910-bb5f-fc29a33468ee?appid=ff8aca92-f19c-4910-bb5f-fc29a33468ee&#34;&gt;炫桌面&lt;/a&gt;. While most of the time there is nothing much to stop others from copying ideas which are not copyrighted or patented, there are exceptions where you can tell that there is seemingly identical resemblance between the 2 applications, almost like a “xap dump” and resubmission under a different developer account.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unable to activate Windows Store App. This app failed to launch because of an issue with its license.</title>
      <link>https://www.tanchunsiong.com/unable-to-activate-windows-store-app-this-app-failed-to-launch-because-of-an-issue-with-its-license/</link>
      <pubDate>Mon, 26 Nov 2012 05:16:41 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/unable-to-activate-windows-store-app-this-app-failed-to-launch-because-of-an-issue-with-its-license/</guid>
      <description>&lt;p&gt;If you are writing a Window Store App on Windows 8, you might encounter a problem with Visual Studio where your license might be expired.&lt;/p&gt;&#xA;&lt;p&gt;The error message would go like this&lt;br&gt;&#xA;&lt;a href=&#34;http://localhost/wp-content/uploads/2012/11/Unable-to-activate-Windows-Store-app-Issue-with-its-license.jpg&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-medium wp-image-227&#34; title=&#34;Unable to activate Windows Store app. Issue with its license&#34; alt=&#34;Unable to activate Windows Store app. Issue with its license&#34; src=&#34;http://localhost/wp-content/uploads/2012/11/Unable-to-activate-Windows-Store-app-Issue-with-its-license-300x139.jpg&#34; width=&#34;300&#34; height=&#34;139&#34; srcset=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/11/Unable-to-activate-Windows-Store-app-Issue-with-its-license-300x139.jpg 300w, http://www.tanchunsiong.com/wp-content/uploads/2012/11/Unable-to-activate-Windows-Store-app-Issue-with-its-license.jpg 494w&#34; sizes=&#34;(max-width: 300px) 100vw, 300px&#34; /&gt;&lt;/a&gt;&lt;br&gt;&#xA;“Unable to active Windows Store app. The activation request failed with error. This app failed to launch because of an issue with its license. Please try again in a moment.&lt;br&gt;&#xA;See help for advice on troubleshooting the issue”&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing the Nokia Lumia 920, Nokia’s flagship device for Windows Phone 8</title>
      <link>https://www.tanchunsiong.com/introducing-the-nokia-lumia-920-nokias-flagship-device-for-windows-phone-8/</link>
      <pubDate>Wed, 05 Sep 2012 16:30:23 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/introducing-the-nokia-lumia-920-nokias-flagship-device-for-windows-phone-8/</guid>
      <description>&lt;p&gt;On the 5th Sep, at 10pm Singapore time, Nokia and Microsoft co-hosted a press release on for Nokia Devices and Windows Phone 8 Operating System.&lt;/p&gt;&#xA;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; title=&#34;Lumia 920&#34; alt=&#34;Lumia 920&#34; src=&#34;https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash4/240864_10151063061932476_1171836566_o.jpg&#34; width=&#34;640&#34; height=&#34;400&#34; /&gt; &#xA;&lt;p&gt;Making a debut in striking color, the opening video showcased the blow up schematic of the Lumia 920. With a huge 4.5 inch curved glass screen similar to Lumia 800, Qualcomm Snapdragon processor, Pureview Camera and a battery with great capability at 2000mAh.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Visual Studio 2012 | No template information found</title>
      <link>https://www.tanchunsiong.com/visual-studio-2012-no-template-information-found/</link>
      <pubDate>Tue, 03 Jul 2012 15:16:28 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/visual-studio-2012-no-template-information-found/</guid>
      <description>&lt;p&gt;After installing Windows Phone SDK 7.1.1 with Visual Studio 2012, I encountered an error when trying to “add a new item” in my Windows 8 Project.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/07/Capture.png&#34;&gt;&lt;br&gt;&#xA;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-medium wp-image-221&#34; title=&#34;Visual Studio 2012 No Template Information Found Error&#34; alt=&#34;Visual Studio 2012 No Template Information Found Error&#34; src=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/07/Capture-300x115.png&#34; width=&#34;300&#34; height=&#34;115&#34; /&gt;&lt;/a&gt;&lt;br&gt;&#xA;No Visual studio template information found. See application log in Event viewer for more details&lt;/p&gt;&#xA;&lt;p&gt;Solution:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;“devenv /installvstemplates”&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;“devenv /resetsettings”&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Dream Build Launch Hackathon Resources for Metro Design</title>
      <link>https://www.tanchunsiong.com/dream-build-launch-hackathon-resources-for-metro-design/</link>
      <pubDate>Fri, 15 Jun 2012 13:18:04 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/dream-build-launch-hackathon-resources-for-metro-design/</guid>
      <description>&lt;p&gt;**Facebook Group&lt;br&gt;&#xA;** &lt;a href=&#34;https://www.facebook.com/groups/235877546529769/&#34;&gt;https://www.facebook.com/groups/235877546529769/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Slides&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div id=&#34;__ss_13347113&#34; style=&#34;width: 425px;&#34;&gt;&#xA;  &lt;strong style=&#34;display: block; margin: 12px 0 4px;&#34;&gt;&lt;a title=&#34;Windows 8 developer with c sharp&#34; href=&#34;http://www.slideshare.net/tanchunsiong/windows-8-developer-with-c-sharp&#34;&gt;Windows 8 developer with c sharp&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &#xA;  &lt;div style=&#34;padding: 5px 0 12px;&#34;&gt;&#xA;    View more &lt;a href=&#34;http://www.slideshare.net/&#34;&gt;presentations&lt;/a&gt; from &lt;a href=&#34;http://www.slideshare.net/tanchunsiong&#34;&gt;tanchunsiong&lt;/a&gt;.&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div id=&#34;__ss_13347142&#34; style=&#34;width: 425px;&#34;&gt;&#xA;  &lt;strong style=&#34;display: block; margin: 12px 0 4px;&#34;&gt;&lt;a title=&#34;Metro app design&#34; href=&#34;http://www.slideshare.net/tanchunsiong/metro-app-design&#34; target=&#34;_blank&#34;&gt;Metro app design&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt; &#xA;  &lt;div style=&#34;padding: 5px 0 12px;&#34;&gt;&#xA;    View more &lt;a href=&#34;http://www.slideshare.net/thecroaker/death-by-powerpoint&#34; target=&#34;_blank&#34;&gt;PowerPoint&lt;/a&gt; from &lt;a href=&#34;http://www.slideshare.net/tanchunsiong&#34; target=&#34;_blank&#34;&gt;tanchunsiong&lt;/a&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;strong&gt;UX Guidance&lt;/strong&gt;&lt;br&gt;&#xA;&lt;a href=&#34;https://skydrive.live.com/redir?resid=17D8B0013C1B35A3!47549&amp;amp;authkey=!APUDDHXZl6Uk8uM&#34;&gt;Word Document on UX Guidance&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Resources Download&lt;/strong&gt;&lt;br&gt;&#xA;&lt;a href=&#34;https://skydrive.live.com/redir?resid=17D8B0013C1B35A3!47546&amp;amp;authkey=!AEb9Mykyd0UW1vU&#34;&gt;Fonts Download&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;https://skydrive.live.com/redir?resid=17D8B0013C1B35A3!47545&amp;amp;authkey=!AJyXzhJ8Vellm2E&#34; title=&#34;Metro Icons Download&#34;&gt;Icons Download&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Online Stock Photo Resources&lt;/strong&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://www.everystockphoto.com/&#34;&gt;http://www.everystockphoto.com/&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://www.smashingmagazine.com/2009/08/16/free-and-commercial-stock-photography-sites/&#34;&gt;Listing of free stock photography&lt;/a&gt;/&lt;br&gt;&#xA;&lt;a href=&#34;http://images.google.com/&#34;&gt;http://images.google.com/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Simple Image Manipulation Tool&lt;/strong&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://www.dotpdn.com/files/Paint.NET.3.5.10.Install.zip&#34;&gt;http://www.dotpdn.com/files/Paint.NET.3.5.10.Install.zip&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Color Scheme Generator&lt;/strong&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://www.cssdrive.com/imagepalette/index.php&#34;&gt;http://www.cssdrive.com/imagepalette/index.php&lt;br&gt;&#xA;&lt;/a&gt; &lt;a href=&#34;http://colorschemedesigner.com/&#34;&gt;http://colorschemedesigner.com/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Online Metro Icons Resources&lt;/strong&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://thenounproject.com/&#34;&gt;http://thenounproject.com/&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://www.thexamlproject.com/&#34;&gt;http://www.thexamlproject.com/&lt;/a&gt;&lt;br&gt;&#xA;&lt;a href=&#34;http://www.syncfusion.com/downloads/metrostudio/&#34;&gt;http://www.syncfusion.com/downloads/metrostudio/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows 8 Release Preview and AppleHFS.sys crash</title>
      <link>https://www.tanchunsiong.com/windows-8-release-preview-and-applehfs-sys-crash/</link>
      <pubDate>Thu, 14 Jun 2012 17:16:14 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/windows-8-release-preview-and-applehfs-sys-crash/</guid>
      <description>&lt;p&gt;If you are using a MacBook Air, MacBook Pro or related Apple products with Windows 8 and BootCamp, there might be instances where it may crash.&lt;/p&gt;&#xA;&lt;p&gt;The cause the crash would be BootCamp’s driver that allows you to access your MacOS partition. The quickest way to fix it would be to disable the drivers and take away your access to the MacOS partition in Windows 8. Here are the steps to do so.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Outlook stuck on loading profile in Windows 8</title>
      <link>https://www.tanchunsiong.com/outlook-stuck-on-loading-profile-in-windows-8/</link>
      <pubDate>Thu, 07 Jun 2012 04:57:03 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/outlook-stuck-on-loading-profile-in-windows-8/</guid>
      <description>&lt;p&gt;I have recently upgraded to Windows 8 Release preview and realized that there was some issue with my Outlook 2010 when loading up. After some searching online,  I’ve consolidated some of the list of fix for Outlook being stuck on the “loading profile” splash screen.&lt;/p&gt;&#xA;&lt;p&gt;These fix are sorted accordingly from least amount of effort, to most amount of effort (which might require you to rebuild and download your mails)&lt;/p&gt;</description>
    </item>
    <item>
      <title>WhatsApp push notification not working in Windows Phone 7</title>
      <link>https://www.tanchunsiong.com/whatsapp-push-notification-not-working-in-windows-phone-7/</link>
      <pubDate>Sun, 06 May 2012 13:36:18 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/whatsapp-push-notification-not-working-in-windows-phone-7/</guid>
      <description>&lt;p&gt;Recently I came back from a trip overseas without 3G connection.&lt;br&gt;&#xA;After a few days when I randomly checked my WhatsApp, I then realized that there was a lot of messages on WhatsApp that were not pushed to my inbox on my Samsung Omnia 7 since the overseas trip.&lt;/p&gt;&#xA;&lt;p&gt;After searching online, I came across many individuals who has identical problem of push notification not working on their Windows Phone 7 WhatsApp .&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blend for Visual Studio 11 error</title>
      <link>https://www.tanchunsiong.com/blend-for-visual-studio-11-error/</link>
      <pubDate>Fri, 04 May 2012 05:57:10 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/blend-for-visual-studio-11-error/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://stackoverflow.com/questions/9760643/blend-for-visual-studio-11-get-an-error&#34;&gt;http://stackoverflow.com/questions/9760643/blend-for-visual-studio-11-get-an-error&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bing Maps SDK for Windows 8</title>
      <link>https://www.tanchunsiong.com/bing-maps-sdk-for-windows-8/</link>
      <pubDate>Fri, 04 May 2012 03:54:05 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/bing-maps-sdk-for-windows-8/</guid>
      <description>&lt;p&gt;While working to develop Metro Application on Windows 8, I came across the fact that Bing Map Silverlight Control for Metro Application is not part of the Visual Studio 11 package, hence there is a need to install the SDK separately. Here is a step-by-step guide on how to do so.&lt;/p&gt;&#xA;&lt;p&gt;Firstly download and install the SDK plugin for visual studio.&lt;br&gt;&#xA;Link to download SDK plugin :&lt;a href=&#34;http://visualstudiogallery.msdn.microsoft.com/0c341dfb-4584-4738-949c-daf55b82df58&#34; title=&#34;Bing Maps SDK for Metro style apps (Beta)&#34;&gt;Bing Maps SDK for Metro style apps (Beta)&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to install Windows 8 Consumer Preview on Samsung Series 7 Slate</title>
      <link>https://www.tanchunsiong.com/how-to-install-windows-8-consumer-preview-on-samsung-series-7-slate/</link>
      <pubDate>Wed, 04 Apr 2012 05:45:11 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/how-to-install-windows-8-consumer-preview-on-samsung-series-7-slate/</guid>
      <description>&lt;p&gt;During last year’s //build event, developers who attended the event were given a special build (sorry for the pun) of Samsung Series 7 Slate (700T) loaded with Windows 8 Developer Preview.&lt;/p&gt;&#xA;&lt;p&gt;With the release of Windows 8 Consumer Preview on 29th Feb 2012, Samsung has decided to share the love with current existing Samsung Series 7 Slate owners!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/04/installing-windows-8-consumer-preview-on-samsung-series-7-slate.jpg&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-medium wp-image-74&#34; title=&#34;installing windows 8 consumer preview on samsung series 7 slate&#34; alt=&#34;installing windows 8 consumer preview on samsung series 7 slate&#34; src=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/04/installing-windows-8-consumer-preview-on-samsung-series-7-slate-300x150.jpg&#34; width=&#34;300&#34; height=&#34;150&#34; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microsoft April Fools | Windows Phone Pager, Zombie Apocalypse, Kinect Assassin Creed, Commandline Skydrive, Skype</title>
      <link>https://www.tanchunsiong.com/microsoft-aprils-fool-windows-phone-pager-kinect-assassin-creed/</link>
      <pubDate>Sun, 01 Apr 2012 18:57:43 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/microsoft-aprils-fool-windows-phone-pager-kinect-assassin-creed/</guid>
      <description>&lt;p&gt;Happy April Fools’ day. I was looking through some of the releases and thought maybe I could consolidate the list of Jokes from or related to Microsoft.&lt;/p&gt;&#xA;&lt;p&gt;Here are the list of Microsoft April Fools’ Jokes in 2012&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Windows Phone Pager&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/04/windows-phone-pager.jpg&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; title=&#34;windows phone pager&#34; alt=&#34;windows phone pager&#34; src=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/04/windows-phone-pager-230x300.jpg&#34; width=&#34;230&#34; height=&#34;300&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Quote from Windows Phone Fanpage__&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;“Introducing Windows Pager. Meet our newest mobile device. Coming 2014… give or take a few months.”&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Source: &lt;a href=&#34;https://www.facebook.com/photo.php?fbid=10150648715478772&amp;amp;set=a.107698418771.94817.8195378771&amp;amp;type=1&#34;&gt;Windows Phone Fanpage – Windows Phone Pager Photo&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Coke Hug Me Machine in NUS</title>
      <link>https://www.tanchunsiong.com/coke-hug-me-machine-in-nus/</link>
      <pubDate>Thu, 29 Mar 2012 09:16:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/coke-hug-me-machine-in-nus/</guid>
      <description>&lt;p&gt;Today something was stumbled upon in NUS at LT 15.&lt;/p&gt;&#xA;&lt;p&gt;Unlike the traditional vending machine, this one was surrounded by Photographers and Videographers with professional equipment.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/03/coke-hug-me-machine.jpg&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-medium wp-image-46&#34; title=&#34;coke hug me machine&#34; alt=&#34;coke hug me machine&#34; src=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/03/coke-hug-me-machine-224x300.jpg&#34; width=&#34;224&#34; height=&#34;300&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Yeap, thats right. Its a viral marketing campaign from Coca-Cola targeting the student audiences in Singapore. A simple machine it might look, but it draws pretty large amount of attention and crowd when someone is attempting to hug the machine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About Me</title>
      <link>https://www.tanchunsiong.com/about/</link>
      <pubDate>Thu, 29 Mar 2012 01:42:52 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/about/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/03/life-runs-on-code.jpg&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-medium wp-image-43&#34; title=&#34;life runs on code&#34; src=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/03/life-runs-on-code-300x198.jpg&#34; alt=&#34;life runs on code&#34; width=&#34;300&#34; height=&#34;198&#34; /&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Tan Chun Siong: Ex. Senior Technical Evangelist in Microsoft / Developer Advoate in Zoom, who has been evangelizing to early adopters on technologies since the days of Rich Internet applications with geospatial capabilities, rich client application controlled by Natural User Interface, and Mobile App development with near field communication capabilities. In the past 12 months, he has been focusing on Cloud Computing, IoT, Beacons, AI as a service, Chatbot and 3D Printing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Windows Phone 7 SDK on Windows 8 | Step by Step Guide</title>
      <link>https://www.tanchunsiong.com/installing-windows-phone-7-sdk-on-windows-8-step-by-step-guide/</link>
      <pubDate>Tue, 27 Mar 2012 13:38:41 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/installing-windows-phone-7-sdk-on-windows-8-step-by-step-guide/</guid>
      <description>&lt;p&gt;If you are one of those who are working in the Windows 8 Consumer Preview and Visual Studio 2010 environment, you might have encountered issues with the Windows Phone 7 SDK.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/03/Windows-Phone-SDK-7.1-ENU-installation-failed.png&#34;&gt;&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; class=&#34;alignnone size-medium wp-image-7&#34; title=&#34;Windows Phone SDK 7.1 - ENU installation failed&#34; alt=&#34;Windows Phone SDK 7.1 - ENU installation failed&#34; src=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/03/Windows-Phone-SDK-7.1-ENU-installation-failed-300x270.png&#34; width=&#34;300&#34; height=&#34;270&#34; /&gt;&lt;/a&gt; Microsoft released the &lt;a href=&#34;http://www.microsoft.com/download/en/details.aspx?id=29233&#34;&gt;Windows Phone SDK 7.1.1 Update&lt;/a&gt; today which fixes the issue of incompatibility on of Windows Phone development on Windows 8 Consumer Preview. *Note that this is an update for the previous version of Windows Phone SDK 7.1, and &lt;strong&gt;not&lt;/strong&gt; a complete updated release of the Windows Phone SDK. This guide will walk you thru on how to get the Windows Phone SDK working on your Windows 8 Consumer Preview machine. &lt;strong&gt;Step 1&lt;/strong&gt; Download the full version of &lt;a href=&#34;http://www.microsoft.com/download/en/details.aspx?id=27570&#34;&gt;Windows Phone 7.1 SDK&lt;/a&gt;. If you wish to download an offline install, you may do so &lt;a href=&#34;http://download.microsoft.com/download/6/E/7/6E795194-EE2D-4636-AEBD-D1C42D2E06E1/WPSDKv71_en1.iso&#34;&gt;here&lt;/a&gt;. After which, attempt to install the SDK and you would be prompted with this error message.&lt;img decoding=&#34;async&#34; loading=&#34;lazy&#34; title=&#34;Windows Phone SDK 7.1 - ENU installation failed&#34; alt=&#34;Windows Phone SDK 7.1 - ENU installation failed&#34; src=&#34;http://www.tanchunsiong.com/wp-content/uploads/2012/03/Windows-Phone-SDK-7.1-ENU-installation-failed-300x270.png&#34; width=&#34;300&#34; height=&#34;270&#34; /&gt; Do not worry about this, we will solve this now. &lt;strong&gt;Step 2&lt;/strong&gt; Referencing Aaron Stebner’s article &lt;a href=&#34;http://blogs.msdn.com/b/astebner/archive/2012/02/29/10274694.aspx&#34;&gt;How to work around a possible XNA Game Studio or Windows Phone SDK install failure on Windows 8&lt;/a&gt;, do the following steps.&lt;/p&gt;</description>
    </item>
    <item>
      <title>QuadTree Explorer: Understanding Bing Maps Tiling System</title>
      <link>https://www.tanchunsiong.com/2011/05/quadtree-explorer-understanding-bing-maps-tiling-system/</link>
      <pubDate>Sun, 01 May 2011 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2011/05/quadtree-explorer-understanding-bing-maps-tiling-system/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Windows Forms utility developed to explore and understand Bing Maps quadtree tiling system. Provides visualization and coordinate conversion for quadtree keys, helping developers understand how web mapping services structure and serve billions of map tiles efficiently.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Quadtree Tiling System&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Hierarchical spatial indexing structure&lt;/li&gt;&#xA;&lt;li&gt;Each zoom level divides tiles into 4 quadrants&lt;/li&gt;&#xA;&lt;li&gt;Quadkey encodes path through tree from root to leaf&lt;/li&gt;&#xA;&lt;li&gt;Base-4 numbering system (digits 0-3)&lt;/li&gt;&#xA;&lt;li&gt;Self-similar at all scales (fractal-like properties)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Coordinate Conversion Pipeline&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>MIC Administration: WiFi Wardriving and Location Services</title>
      <link>https://www.tanchunsiong.com/2011/03/mic-administration-wifi-wardriving-and-location-services/</link>
      <pubDate>Tue, 01 Mar 2011 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2011/03/mic-administration-wifi-wardriving-and-location-services/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Documentation and resources from Microsoft Innovation Center (MIC) administration period (2010-2011). Includes WiFi wardriving survey project for building location services database, Windows 7 gadget development, and community technology initiatives.&lt;/p&gt;&#xA;&lt;h2 id=&#34;wardriving-survey-project&#34;&gt;Wardriving Survey Project&lt;/h2&gt;&#xA;&lt;p&gt;Conducted WiFi access point mapping survey across Singapore to build location positioning database. Wardriving involves systematically driving routes while logging WiFi access points and GPS coordinates for triangulation-based positioning.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Survey Methodology&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;GPS receiver for accurate positioning (5-10 meter accuracy)&lt;/li&gt;&#xA;&lt;li&gt;WiFi adapter in monitor mode for AP detection&lt;/li&gt;&#xA;&lt;li&gt;Custom logging software recording: BSSID (MAC address), SSID, signal strength (RSSI), channel, encryption type, GPS coordinates, timestamp&lt;/li&gt;&#xA;&lt;li&gt;Driving routes covering major roads, residential areas, commercial districts&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Data Collection&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Blogtagg: Search Engine for Singapore Blogshops</title>
      <link>https://www.tanchunsiong.com/2011/01/blogtagg-search-engine-for-singapore-blogshops/</link>
      <pubDate>Sat, 15 Jan 2011 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2011/01/blogtagg-search-engine-for-singapore-blogshops/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Cloud-based search engine developed in 2011 for Singapore&amp;rsquo;s blogshop ecosystem. Aggregated RSS feeds from hundreds of independent fashion blogshops and provided centralized tag-based search, solving the problem of fragmented product discovery across dozens of individual blogs.&lt;/p&gt;&#xA;&lt;p&gt;Tagline: &amp;ldquo;Stop searching, start finding.&amp;rdquo;&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;RSS Aggregation Engine&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Automated crawler for blogshop RSS feeds&lt;/li&gt;&#xA;&lt;li&gt;Scheduled polling (hourly/daily based on update frequency)&lt;/li&gt;&#xA;&lt;li&gt;Feed parsing using SyndicationFeed API&lt;/li&gt;&#xA;&lt;li&gt;Duplicate detection and content normalization&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Tagging &amp;amp; Indexing System&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bing Maps and WiFi Indoor Positioning with Microsoft Technologies</title>
      <link>https://www.tanchunsiong.com/2010/03/bing-maps-and-wifi-indoor-positioning-with-microsoft-technologies/</link>
      <pubDate>Mon, 15 Mar 2010 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2010/03/bing-maps-and-wifi-indoor-positioning-with-microsoft-technologies/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Two related location-based projects developed using Microsoft mapping and positioning technologies:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;mapTraffic&lt;/strong&gt;: Silverlight application demonstrating Bing Maps (Virtual Earth) integration with custom map overlays and interactive visualization.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Scorer&lt;/strong&gt;: WiFi-based indoor positioning system using Microsoft Orion LocationInferenceService for triangulating device location from wireless access point signals.&lt;/p&gt;&#xA;&lt;h2 id=&#34;maptraffic-architecture&#34;&gt;mapTraffic Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Silverlight Map Control&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Microsoft Virtual Earth MapControl for Silverlight&lt;/li&gt;&#xA;&lt;li&gt;Hosted in ASP.NET web application&lt;/li&gt;&#xA;&lt;li&gt;Browser plugin required (Silverlight 3/4 runtime)&lt;/li&gt;&#xA;&lt;li&gt;XAML-based declarative map definition&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Custom Overlay System&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Imagine Cup 2009: Sensor-Based Conference Networking System</title>
      <link>https://www.tanchunsiong.com/2009/07/imagine-cup-2009-sensor-based-conference-networking-system/</link>
      <pubDate>Wed, 15 Jul 2009 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2009/07/imagine-cup-2009-sensor-based-conference-networking-system/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Competition entry for Microsoft Imagine Cup 2009 that developed a sensor-based conference networking system. The system used Bluetooth-enabled badges to detect attendee proximity and interactions, then visualized social networks and generated heatmaps of conference activity patterns.&lt;/p&gt;&#xA;&lt;p&gt;Developed as part of NUS coursework and competition participation in 2009.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;Multi-component system consisting of:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Badge Sensor System&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Custom Bluetooth sensors embedded in conference badges&lt;/li&gt;&#xA;&lt;li&gt;Proximity detection using RSSI (Received Signal Strength Indicator)&lt;/li&gt;&#xA;&lt;li&gt;Real-time data transmission to central controller&lt;/li&gt;&#xA;&lt;li&gt;Low-power operation for full-day conference use&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Data Processing Pipeline&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Confero: Building a Vehicle Telematics System for Eco-Driving</title>
      <link>https://www.tanchunsiong.com/2009/06/confero-building-a-vehicle-telematics-system-for-eco-driving/</link>
      <pubDate>Mon, 01 Jun 2009 10:00:00 +0800</pubDate>
      <guid>https://www.tanchunsiong.com/2009/06/confero-building-a-vehicle-telematics-system-for-eco-driving/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Final year project at Singapore Polytechnic. Built a comprehensive vehicle telematics system to monitor driving behavior and promote eco-friendly driving habits. The system combines hardware sensors, GPS tracking, real-time analytics, and multiple software components.&lt;/p&gt;&#xA;&lt;h2 id=&#34;system-architecture&#34;&gt;System Architecture&lt;/h2&gt;&#xA;&lt;h3 id=&#34;multi-component-design&#34;&gt;Multi-Component Design&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;Desktop Application:&lt;/strong&gt; WPF application for real-time monitoring&lt;br&gt;&#xA;&lt;strong&gt;Background Services:&lt;/strong&gt; Weather, traffic, SMS processing&lt;br&gt;&#xA;&lt;strong&gt;Web Interface:&lt;/strong&gt; Route visualization and historical data&lt;br&gt;&#xA;&lt;strong&gt;Hardware Integration:&lt;/strong&gt; GPS and Phidgets sensors&lt;/p&gt;&#xA;&lt;h3 id=&#34;components&#34;&gt;Components&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;Confero (Main App):&lt;/strong&gt; Core WPF application with custom XAML controls&lt;br&gt;&#xA;&lt;strong&gt;CWeatherWatch:&lt;/strong&gt; Weather data integration&lt;br&gt;&#xA;&lt;strong&gt;TrafficWatch:&lt;/strong&gt; Traffic information monitoring&lt;br&gt;&#xA;&lt;strong&gt;SMSGateway/SMSGatewayHBM:&lt;/strong&gt; SMS alert systems&lt;br&gt;&#xA;&lt;strong&gt;SMSAlertReader:&lt;/strong&gt; SMS processing service&lt;br&gt;&#xA;&lt;strong&gt;WebBrowser:&lt;/strong&gt; Map-based web interface&lt;br&gt;&#xA;&lt;strong&gt;Configuration:&lt;/strong&gt; System settings management&lt;/p&gt;</description>
    </item>
    <item>
      <title>VETester: Georeferenced Image Overlays on Bing Maps</title>
      <link>https://www.tanchunsiong.com/2008/11/vetester-georeferenced-image-overlays-on-bing-maps/</link>
      <pubDate>Sat, 01 Nov 2008 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2008/11/vetester-georeferenced-image-overlays-on-bing-maps/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Web application developed for Microsoft Popfly Competition in 2008. Demonstrates georeferenced image overlay technique on Bing Maps (Virtual Earth), allowing custom images to be displayed on map with proper geographic positioning and zoom-aware scaling.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Georeferencing System&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Image anchor point (upper-left corner) defined in lat/long coordinates&lt;/li&gt;&#xA;&lt;li&gt;Original image dimensions (3000×1800 pixels) specified&lt;/li&gt;&#xA;&lt;li&gt;Reference zoom level (7) for 1:1 pixel mapping&lt;/li&gt;&#xA;&lt;li&gt;Mathematical transformation from geographic to pixel space&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Zoom-Aware Scaling&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>SMS Gateway Utilities: Building Voting and Marketing Systems (2008)</title>
      <link>https://www.tanchunsiong.com/2008/07/sms-gateway-utilities-building-voting-and-marketing-systems-2008/</link>
      <pubDate>Mon, 14 Jul 2008 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2008/07/sms-gateway-utilities-building-voting-and-marketing-systems-2008/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Back in 2008, before smartphones dominated the mobile landscape, SMS (Short Message Service) was the primary channel for mobile communication and data exchange. During my Year 3 at Singapore Polytechnic, I developed a comprehensive collection of SMS gateway utilities that showcased the versatility of SMS as a platform for various applications including voting systems, marketing campaigns, and automated winner selection.&lt;/p&gt;&#xA;&lt;p&gt;This project, completed on July 14, 2008, demonstrates how SMS technology could be leveraged for interactive applications through a multi-component toolkit built with VB.NET, C#, and ASP.NET Web Services.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weather Radar Image Processing for Eco-Driving Navigation</title>
      <link>https://www.tanchunsiong.com/2008/04/weather-radar-image-processing-for-eco-driving-navigation/</link>
      <pubDate>Mon, 21 Apr 2008 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2008/04/weather-radar-image-processing-for-eco-driving-navigation/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Image processing component developed for the Confero eco-driving system during Imagine Cup Groove competition in 2008. Extracts rainfall intensity data from meteorological radar images and generates transparent overlays for real-time weather visualization on navigation maps.&lt;/p&gt;&#xA;&lt;p&gt;Enables the Confero system to route drivers around heavy rainfall zones, improving fuel efficiency and driving safety.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Image Acquisition&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Fetches weather radar images from Singapore meteorological service&lt;/li&gt;&#xA;&lt;li&gt;Processes GIF format radar images (256x256 or 512x512 pixels)&lt;/li&gt;&#xA;&lt;li&gt;Handles real-time updates every 5-15 minutes&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Pixel Analysis Engine&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>iAccelerate: Vehicle Performance Analyzer with USB Accelerometer</title>
      <link>https://www.tanchunsiong.com/2008/02/iaccelerate-vehicle-performance-analyzer-with-usb-accelerometer/</link>
      <pubDate>Fri, 15 Feb 2008 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/2008/02/iaccelerate-vehicle-performance-analyzer-with-usb-accelerometer/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;&#xA;&lt;p&gt;Windows Forms application developed for Microsoft Imagine Cup 2007-2008 competition. Uses Phidgets USB accelerometer to measure vehicle acceleration and calculate performance metrics including 0-60 time, quarter-mile runs, and horsepower estimates. Provides affordable alternative to professional automotive dynamometers for car enthusiasts.&lt;/p&gt;&#xA;&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Phidgets Hardware Integration&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Phidgets 3-axis accelerometer connected via USB&lt;/li&gt;&#xA;&lt;li&gt;AccelerationChange event handler for real-time data (100-200 Hz sampling)&lt;/li&gt;&#xA;&lt;li&gt;Forward axis aligned with vehicle longitudinal direction&lt;/li&gt;&#xA;&lt;li&gt;Measures acceleration in g-forces (-3g to +3g typical range)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Kinematic Calculator&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Search</title>
      <link>https://www.tanchunsiong.com/search/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.tanchunsiong.com/search/</guid>
      <description></description>
    </item>
  </channel>
</rss>
