<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>David Ballesteros</title>
        <link>https://reddavid.me/</link>
        <description>Recent content on David Ballesteros</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sat, 11 May 2024 18:41:28 +0800</lastBuildDate><atom:link href="https://reddavid.me/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>How to Use Both Output Jacks to Play a Single Audio Realtek</title>
        <link>https://reddavid.me/p/combine-front-and-rear-output-jacks-realtek/</link>
        <pubDate>Sat, 11 May 2024 18:41:28 +0800</pubDate>
        
        <guid>https://reddavid.me/p/combine-front-and-rear-output-jacks-realtek/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/combine-output-realtek.png" alt="Featured image of post How to Use Both Output Jacks to Play a Single Audio Realtek" /&gt;&lt;p&gt;On supported motherboards and having the Realtek Driver installed, the Realtek Audio Control should be pre-installed (on my case it has the MSI branding).&lt;/p&gt;
&lt;p&gt;Just set the settings as seen from the screenshot below:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/combine-front-and-rear-output-jacks-realtek/realtek-audio-control-setting.png&#34;
    alt=&#34;Realtek Audio Control Settings&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Realtek Audio Control Settings&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Now hopefully you can hear the same audio from two devices, otherwise check your device output settings.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>My Firsts While Reviewing for the A&#43; Core 1 Certification</title>
        <link>https://reddavid.me/p/my-firsts-while-reviewing-for-the-a-core-1-certification/</link>
        <pubDate>Tue, 02 Apr 2024 14:10:27 +0800</pubDate>
        
        <guid>https://reddavid.me/p/my-firsts-while-reviewing-for-the-a-core-1-certification/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/studying-a&#43;-core1.png" alt="Featured image of post My Firsts While Reviewing for the A&#43; Core 1 Certification" /&gt;&lt;p&gt;(This post will get updated from time to time adding new learning.)&lt;/p&gt;
&lt;p&gt;Welp, in a decade of handling computers - hardware and software, I never really took any professional certifications of proving my tech skills. And this year hopefully, I can get into at least one.&lt;/p&gt;
&lt;p&gt;First, I was never really surrounded by tech people, personally or in the workplace, so the &lt;em&gt;pressure&lt;/em&gt; or &lt;em&gt;need&lt;/em&gt; to have one never really occurred to me despite knowing their existence and importance.&lt;/p&gt;
&lt;p&gt;Second, I already had an Engineer license and felt that’s enough.&lt;/p&gt;
&lt;p&gt;Lastly, I can’t afford the exams. 🫣&lt;/p&gt;
&lt;p&gt;This blog post will contain any &lt;em&gt;new&lt;/em&gt; learning and other things I am yet to put my hands on (for a quick glance to help remembering).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There’s actually &lt;em&gt;numbered&lt;/em&gt; steps in IT troubleshooting.
&lt;ul&gt;
&lt;li&gt;I am pretty much comfortable in troubleshooting and basically do the steps unknowingly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Bit/Bytes measurement follows the International System (SI). 1Kbps = 1,000 bps.&lt;/li&gt;
&lt;li&gt;A half byte is a nibble.&lt;/li&gt;
&lt;li&gt;Understood Multi-channel Memory.&lt;/li&gt;
&lt;li&gt;Newer motherboards still call it BIOS despite being UEFI.&lt;/li&gt;
&lt;li&gt;RAID disks (never got to practice this).&lt;/li&gt;
&lt;li&gt;Containerization.&lt;/li&gt;
&lt;li&gt;Further Cloud Computing.&lt;/li&gt;
&lt;li&gt;There’s a word APIPA.&lt;/li&gt;
&lt;li&gt;VLAN-ing.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;📸: Photo by &lt;a href=&#34;https://unsplash.com/@jeshoots?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash&#34;&gt;JESHOOTS.COM&lt;/a&gt; on &lt;a href=&#34;https://unsplash.com/photos/an-open-empty-notebook-on-a-white-desk-next-to-an-iphone-and-a-macbook-pUAM5hPaCRI?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash&#34;&gt;Unsplash&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>How To Add Hyper-V Virtual Machine Shortcut on Windows 11 (and Stream Deck)</title>
        <link>https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/</link>
        <pubDate>Mon, 25 Mar 2024 17:56:45 +0800</pubDate>
        
        <guid>https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/vm-shortcut-og.png" alt="Featured image of post How To Add Hyper-V Virtual Machine Shortcut on Windows 11 (and Stream Deck)" /&gt;&lt;h3 id=&#34;update-326-adding-a-guide-for-openingconnecting-to-vm-using-stream-deck&#34;&gt;Update 3/26: Adding a guide for opening/connecting to VM using Stream Deck.
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;#using-stream-deck-to-open-vm-connection&#34; &gt;&lt;strong&gt;Jump to guide&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;shortcut-for-windows-11&#34;&gt;Shortcut for Windows 11
&lt;/h2&gt;&lt;p&gt;Ever want to launch a VM directly without opening the main Hyper-V app first?
Follow this steps to create a Virtual Machine connection shortcut.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In your selected directory, right-click on an empty space to open the context menu. Within &lt;strong&gt;New&lt;/strong&gt;, select &lt;strong&gt;Shortcut&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/add-new-shortcut-context-menu.png&#34;
    alt=&#34;Create New Shortcut&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Create New Shortcut&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;In the &lt;em&gt;Create Shortcut&lt;/em&gt; window, enter the target settings shown below:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    vmconnect.exe &amp;lt;Hyper-V Server IP Address&amp;gt; &amp;#34;&amp;lt;Name of VM&amp;gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/shortcut-target-settings.png&#34;
    alt=&#34;Shortcut Target Settings&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Shortcut Target Settings&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;where &amp;lt;&lt;strong&gt;Hyper-V Server IP Address&lt;/strong&gt;&amp;gt; is the host IP address of the Hyper-V server. And &amp;ldquo;&amp;lt;&lt;strong&gt;Name of VM&lt;/strong&gt;&amp;gt;&amp;rdquo; is the actual VM name as seen in Hyper-V window.&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt;, and give your shortcut a name:&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/shortcut-name.png&#34;
    alt=&#34;Giving the shortcut a name&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Giving the shortcut a name&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Below is an example of a shortcut for my Pop!_OS VM in my local machine (Shortcut Properties), where &lt;em&gt;&lt;strong&gt;Pop!&lt;/strong&gt;&lt;/em&gt; is the name of my Virtual Machine.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/shortcut-properties.png&#34;
    alt=&#34;Sample of my VM&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Sample of my VM&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Before opening the shortcut though, we need to make it to &lt;strong&gt;Run as administrator&lt;/strong&gt;. Instead of right-clicking and manually running as admin each time, let&amp;rsquo;s change the shortcut&amp;rsquo;s &lt;strong&gt;Advanced&lt;/strong&gt; properties:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/shortcut-advanced-properties.png&#34; width=&#34;60%&#34;&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/shortcut-to-run-as-admin.png&#34;
    alt=&#34;Changing Advanced properties&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Changing Advanced properties&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;And that&amp;rsquo;s it for your shortcut to run your VM.&lt;/p&gt;
&lt;p&gt;You can change the shortcut icon and/or you can move or copy the shortcut to show in your Start Menu (either one of the paths below).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    C:\Users\&amp;lt;user&amp;gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    C:\ProgramData\Microsoft\Windows\Start Menu\Programs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;using-stream-deck-to-open-vm-connection&#34;&gt;Using Stream Deck to open VM Connection
&lt;/h2&gt;&lt;p&gt;The shortcut created above can be used as the &lt;strong&gt;App/File&lt;/strong&gt; for the &lt;strong&gt;Open&lt;/strong&gt; function of the bundled &lt;strong&gt;System&lt;/strong&gt; plugin for StreamDeck. As seen below:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/open-shortcut-streamdeck.png&#34;
    alt=&#34;VM Shortcut in Stream Deck&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;VM Shortcut in Stream Deck&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;using-barraiders-advanced-launcher&#34;&gt;Using BarRaider&amp;rsquo;s Advanced Launcher
&lt;/h3&gt;&lt;p&gt;This requires installing the above-mentioned plugin, found here: &lt;a class=&#34;link&#34; href=&#34;https://marketplace.elgato.com/product/advanced-launcher-d9a289e4-9f61-4613-9f86-0069f5897125&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Marketplace&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;https://apps.elgato.com/plugins/com.barraider.advancedlauncher&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Old Plugins Page&lt;/a&gt; (note: both are version 1.8 as of this writing).&lt;/p&gt;
&lt;p&gt;Once installed, add an &lt;strong&gt;Advanced Launcher&lt;/strong&gt; button into your Stream Deck and do the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Customize your button icon and give your button a Title. Or not.&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Application&lt;/strong&gt; &amp;gt; &lt;strong&gt;Choose file&amp;hellip;&lt;/strong&gt;*, you need to navigate to &lt;code&gt;C:/Windows/System32/&lt;/code&gt; and choose &lt;code&gt;vmconnect.exe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;In &lt;strong&gt;Arguments&lt;/strong&gt;, type in &lt;br&gt; &lt;code&gt;&amp;lt;Hyper-V Server IP Address&amp;gt; &amp;quot;&amp;lt;Name of VM&amp;gt;&amp;quot;&lt;/code&gt;, &lt;br&gt; where &lt;code&gt;&amp;lt;Hyper-V Server IP Address&amp;gt;&lt;/code&gt; is the host IP address of the Hyper-V server. And &lt;code&gt;&amp;quot;&amp;lt;Name of VM&amp;gt;&amp;quot;&lt;/code&gt; is the actual VM name as seen in your Hyper-V server. &lt;br&gt;&lt;br&gt; (Note: Stream Deck might remove the double-quotes in cases where the VM name has no spaces)&lt;/li&gt;
&lt;li&gt;Check the &lt;strong&gt;Run as Administrator&lt;/strong&gt; checkbox.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In my case, as seen below, I customized my button properties further:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instances: Checked&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Max Instances: 1&lt;/strong&gt; (since launching it will force disconnect previous instances)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bring to front: Checked&lt;/strong&gt; (Stream Deck will try to make the VM window to front - or flash the taskbar icon)&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/how-to-add-hyper-v-virtual-machine-shortcut-on-windows-11-and-stream-deck/advanced-launcher-vm-streamdeck.png&#34;
    alt=&#34;VM launcher using Advanced Launcher&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;VM launcher using Advanced Launcher&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;That&amp;rsquo;s it for adding a Stream Deck button to open your Virtual machine!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>9 and Over</title>
        <link>https://reddavid.me/p/9-and-over/</link>
        <pubDate>Sat, 16 Mar 2024 04:41:29 +0800</pubDate>
        
        <guid>https://reddavid.me/p/9-and-over/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/glhf.png" alt="Featured image of post 9 and Over" /&gt;&lt;p&gt;&lt;strong&gt;Cheers for the 9 years!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I just quit my job of 9 years to shift careers. I wanted to pursue a career in programming (or deeper in IT). As writing this post, I am taking at least a month-long break to accomplish personal things.&lt;/p&gt;
&lt;p&gt;Some of these things include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Finally getting a license to drive&lt;/li&gt;
&lt;li&gt;Updating my IDs from &lt;em&gt;single&lt;/em&gt; to being &lt;em&gt;married&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Visit some places&lt;/li&gt;
&lt;li&gt;And play some video games 😄&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I won&amp;rsquo;t detail much about the reason, and process leaving my job, but it ended well (I think, hopefully, maybe). And I honestly look forward to their continuous success.&lt;/p&gt;
&lt;h3 id=&#34;hit-me-up&#34;&gt;Hit me up
&lt;/h3&gt;&lt;p&gt;Know anyone who can &lt;em&gt;risk&lt;/em&gt; or take the chance hiring a 30+ year old guy doing .NET/C# Desktop/Mobile software development since 2013? Hit me up on my &lt;a class=&#34;link&#34; href=&#34;https://linkedin.com/in/reddvid/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GLHF!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(Also sorry for not posting for such a long time!)&lt;/p&gt;
&lt;hr&gt;
&lt;small&gt;
Featured Image: Photo by &lt;a href=&#34;https://unsplash.com/@wilstewart3?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash&#34;&gt;Wil Stewart&lt;/a&gt; on &lt;a href=&#34;https://unsplash.com/photos/photography-of-person-holding-glass-bottles-during-sunset-UErWoQEoMrc?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash&#34;&gt;Unsplash&lt;/a&gt;
&lt;/small&gt;</description>
        </item>
        <item>
        <title>I Am Here</title>
        <link>https://reddavid.me/p/i-am-here/</link>
        <pubDate>Sun, 23 Jul 2023 22:33:34 +0800</pubDate>
        
        <guid>https://reddavid.me/p/i-am-here/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/new-post.png" alt="Featured image of post I Am Here" /&gt;&lt;p&gt;Well, how about that? I think I just had the longest time without posting anything here. Maybe I just posted thrice within February just to escape the next ones. 🥲&lt;/p&gt;
&lt;p&gt;Okay, so what alibis do I have to tell you this time? Hmm 🤔&lt;/p&gt;
&lt;h2 id=&#34;i-learned-a-new-thing-about-computer-hardware&#34;&gt;I Learned a New Thing about Computer Hardware
&lt;/h2&gt;&lt;p&gt;I have this &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/fix-nvidia-game-crashing-black-screen-on-windows-11-nvlddmkm-error/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;post&lt;/a&gt; about my Nvidia GPU issue on games crashing and black screens and &lt;em&gt;somehow&lt;/em&gt; fixing it? It might have been because my motherboard is &lt;strong&gt;NOT&lt;/strong&gt; compatible with my RAM.&lt;/p&gt;
&lt;p&gt;Apparently, PC hardware in 2022-2023 is not at all just buy the &lt;em&gt;right&lt;/em&gt; parts you can afford and just build as I assumed it to be. My last PC build I did was waaaaay back 2012-ish, no fancy RGBs, heavy metal cases, no flashy cable-management, and they somehow work.&lt;/p&gt;
&lt;div class=&#34;tenor-gif-embed&#34; data-postid=&#34;7555951312549958006&#34; data-share-method=&#34;host&#34; data-aspect-ratio=&#34;1.33333&#34; data-width=&#34;100%&#34;&gt;&lt;a href=&#34;https://tenor.com/view/tv-family-guy-pepperidge-farm-remember-gif-7555951312549958006&#34;&gt;Tv Family Guy GIF&lt;/a&gt;from &lt;a href=&#34;https://tenor.com/search/tv-gifs&#34;&gt;Tv GIFs&lt;/a&gt;&lt;/div&gt; &lt;script type=&#34;text/javascript&#34; async src=&#34;https://tenor.com/embed.js&#34;&gt;&lt;/script&gt;
&lt;p&gt;The &lt;em&gt;workaround&lt;/em&gt; worked for a while until I felt the need to play newer games, especially the day-one releases on my &lt;a class=&#34;link&#34; href=&#34;https://www.xbox.com/en-US/xbox-game-pass&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Xbox Game Pass for PC&lt;/a&gt; subscription.&lt;/p&gt;
&lt;h3 id=&#34;i-jumped-shipped-to-amd&#34;&gt;I jumped shipped to AMD
&lt;/h3&gt;&lt;p&gt;After a month of checking out some GPUs (which I can afford) to replace the current one, it only seemed that I can only get an AMD card. I chose to end with an ASUS 6700XT which seems powerful enough for the games&lt;/p&gt;
&lt;p&gt;It has 12GB of VRAM which I am yet to &lt;em&gt;fully&lt;/em&gt; utilize. More detailed specs can be seen from the product page &lt;a class=&#34;link&#34; href=&#34;https://www.asus.com/motherboards-components/graphics-cards/dual/dual-rx6700xt-12g/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I got into trouble installing the card as it is actually huge and no margin for the tower case I have, but managed to fit it - very very fit.&lt;/p&gt;
&lt;p&gt;Remember the issues I had months prior to upgrading? Well, it was much worse, and I once again assumed that “AMD still has some driver issues these days, huh?”, since driver &lt;em&gt;workaround&lt;/em&gt; does not seem to fix whatever is happening.&lt;/p&gt;
&lt;p&gt;Besides games crashing, I also began getting random black screens, and even total PC shutdown. I also thought of losing the “silicon lottery” or even my PSU is not enough for the system.&lt;/p&gt;
&lt;p&gt;Not until I &lt;em&gt;finally&lt;/em&gt; bothered myself checking my motherboard’s support website for Memory Compatibility. And guess what, I did find my RAMs’ brand and model from the list but what was NOT compatible was putting four sticks in - which I recently did to get 32gigs of memory.&lt;/p&gt;
&lt;h3 id=&#34;going-64gb-for-games&#34;&gt;Going 64GB for Games?
&lt;/h3&gt;&lt;p&gt;Spent weeks not gaming just to avoid the issues until I found some RAM deals online that I got myself 64GB of, ehem, &lt;em&gt;compatible&lt;/em&gt; memory sticks for my motherboard. Well, I hoped.&lt;/p&gt;
&lt;p&gt;After my order arrived, I spent no time installing the new RAM sticks and fingers-crossed on launching a game where I definitely faced a crash. Tested on more games to finally tell that there were no more problems.&lt;/p&gt;
&lt;p&gt;I played High on Life and Atomic Heart just to name a few. And they are on my YouTube gaming channel.&lt;/p&gt;
&lt;p&gt;I went over to get 64GB not just for games but for &lt;a class=&#34;link&#34; href=&#34;https://support.microsoft.com/en-us/windows/enable-virtualization-on-windows-11-pcs-c5578302-6e43-4b4b-a449-8ced115f58e1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;hardware virtualization&lt;/a&gt; like Virtual Machines, Android emulators, etc.&lt;/p&gt;
&lt;h2 id=&#34;good-rest&#34;&gt;Good Rest
&lt;/h2&gt;&lt;p&gt;I and the wife also took some time off work to unwind somewhere south. We went to a private resort and go for night swim, eat good food, and relaxed a bit with a super mediocre massage (which is, OMG, I wish to erase this memory on just being a crappy service 😂).&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/i-am-here/fish-and-veggies-laong-laan.png&#34;
    alt=&#34;Dinner at Laong Laan Restaurant&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Dinner at Laong Laan Restaurant&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Fast forward a month, we visited Batangas for a day to celebrate Barangay &lt;em&gt;fiesta&lt;/em&gt; with the family, which means cheat day (in food, of course). We got to watch a very late night but fun Gay pageant. (Sorry, I can&amp;rsquo;t upload some pictures or videos because &amp;ldquo;lewd&amp;rdquo; 😂)&lt;/p&gt;
&lt;p&gt;And just days later, I got to visit Intramuros, finally, together with the wife, my sister, and my mother. I always wanted to visit the place and never got to do it for a very long time. We got to see the “Walled City”, go inside Manila Cathedral, and visit Fort Santiago.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/i-am-here/inside-fort-santiago.png&#34;
    alt=&#34;Inside Fort Santiago, Manila&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Inside Fort Santiago, Manila&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;After walking around Intramuros, we went ahead to Luneta Park to chill back until sunset.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/i-am-here/neth-in-rizal-park.png&#34;
    alt=&#34;Me wife in Rizal Park&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Me wife in Rizal Park&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;keep-learning&#34;&gt;Keep Learning
&lt;/h2&gt;&lt;p&gt;I recently bought &lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/c/EposVox&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EposVox&lt;/a&gt;’s &lt;a class=&#34;link&#34; href=&#34;https://eposvox.gumroad.com/l/obs-definitive-guide-2023-eposvox&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OBS Masterclass&lt;/a&gt; which might help me learn more about the capabilities of &lt;a class=&#34;link&#34; href=&#34;https://obsproject.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OBS Studio&lt;/a&gt;, in streaming and recording, and other video stuff. I haven’t finished it all yet since I found it hard to track the course in &lt;a class=&#34;link&#34; href=&#34;https://gumroad.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gumroad&lt;/a&gt; so I coded a simple website that has a jumplist to the chapters.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/i-am-here/custom-website.png&#34;
    alt=&#34;Custom website for EposVox masterclass videos&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Custom website for EposVox masterclass videos&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I also completed courses in &lt;a class=&#34;link&#34; href=&#34;https://www.udemy.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Udemy&lt;/a&gt; in IT Management where I learned some insightful tips if I ever go further in this IT journey and career. Also found some $1 video courses on HumbleBundle about Cybersecurity, which I plan to watch and learn from soon.&lt;/p&gt;
&lt;p&gt;There are a couple more sources and materials I tend to read and watch from time-to-time for me to not &lt;em&gt;waste time&lt;/em&gt; of just consuming content but actually learning. Which point to lesser time on…&lt;/p&gt;
&lt;h2 id=&#34;games&#34;&gt;Games
&lt;/h2&gt;&lt;p&gt;After upgrading my GPU, I actually finished playing Atomic Heart and found myself tired so I went to playing shorter games as I browse Xbox Game Pass. I played short games (~3 or ~4 hours) which I enjoyed playing on &lt;em&gt;free&lt;/em&gt; time. Also played a bit online with my friend overseas.&lt;/p&gt;
&lt;p&gt;And one night, while drunk (and while Steam Summer Sale is on-going), I purchased &lt;a class=&#34;link&#34; href=&#34;https://store.steampowered.com/app/546560/HalfLife_Alyx/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Half-Life: Alyx&lt;/a&gt; knowing that it is a VR game and I HAVE NO VR headset (sorry for the caps). I just thought of adding it to my “backlog” of games until I have a VR kit, but checking the &lt;a class=&#34;link&#34; href=&#34;https://github.com/bfeber/HLA-NoVR&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;HLA-NoVR mod on GitHub&lt;/a&gt;, I gave it a try.&lt;/p&gt;
&lt;p&gt;That same night, I downloaded both HL:A and the mod, ran it and WOW. It…kinda…works.&lt;/p&gt;
&lt;p&gt;I know the game on mouse and keyboard is not as immersive as &lt;em&gt;in-your-face&lt;/em&gt; VR but WOW, I am playing a new Half-Life game after how many years.&lt;/p&gt;
&lt;p&gt;I faced a few bugs and missed out on some things and &lt;em&gt;innovations&lt;/em&gt; I saw circulating online back then but overall I am amazed how they actually did it. The full playthrough is on YouTube.&lt;/p&gt;
&lt;iframe width=&#34;100%&#34; height=&#34;315&#34; src=&#34;https://www.youtube.com/embed/videoseries?list=PLwC47NQhSu5xDoW5kwv0Pc5-x71Dvmj2Y&#34; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;coding&#34;&gt;Coding
&lt;/h2&gt;&lt;p&gt;With the lack of energy to play games, I spent more time on coding being inspired by new modern design by Microsoft for Windows apps. Which I recently updated two of my apps I use mostly to help we “work”.&lt;/p&gt;
&lt;p&gt;Both apps got some code improvements and their UI were updated from &lt;a class=&#34;link&#34; href=&#34;https://github.com/Kinnara/ModernWpf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ModernWPF&lt;/a&gt; to &lt;a class=&#34;link&#34; href=&#34;https://wpfui.lepo.co/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WPF-UI&lt;/a&gt;. The latter lacks most controls but overshadowed by the use of the Mica effect for my WPF apps but I got the most out of it. Hopefully the package gets updated with more controls.&lt;/p&gt;
&lt;p&gt;Here’s a GIF of the changes the apps went:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/i-am-here/digiman-update.gif&#34;
    alt=&#34;Digital Manager UI changes&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Digital Manager UI changes&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/i-am-here/id-maker-update.gif&#34;
    alt=&#34;ID Maker UI changes&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;ID Maker UI changes&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;I also updated both to .NET Core.&lt;/p&gt;
&lt;p&gt;—&lt;/p&gt;
&lt;p&gt;Thanks for reading this life update blog post, I wonder if I could make this blog more “news-like” or devlog? I could promise but thank you again for coming!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Console App to Automate Stream with AltaCast, VLC, VB Virtual Cable</title>
        <link>https://reddavid.me/p/console-app-to-automate-stream-with-altacast-vlc-vb-virtual-cable/</link>
        <pubDate>Mon, 20 Feb 2023 17:03:47 +0800</pubDate>
        
        <guid>https://reddavid.me/p/console-app-to-automate-stream-with-altacast-vlc-vb-virtual-cable/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/stream.png" alt="Featured image of post Console App to Automate Stream with AltaCast, VLC, VB Virtual Cable" /&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;#programming-a-console-app&#34; &gt;02/22 Updated Code to Fix Timer&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What happens when radio station’s go offline - or after their broadcast hours end? Dead air. Well, I am not sure if it is also the term being used in 24/7 audio servers.&lt;/p&gt;
&lt;p&gt;This “dead air” not only affects the usability of streaming apps but also prevents users who differ in time zones. These users will be deprived of any content thus affecting possible audiences for the station.&lt;/p&gt;
&lt;p&gt;I recently brought up to the team by letting our stations utilize the audio servers 24/7 by adding program replays during off-air hours. The servers, which use CentovaOS, allow uploading audio files to be played during “off-stream” called AutoDJ. The stations can also let their PCs run 24/7 but the cost, manpower, and effort to implement such system seem to be a struggle as operations differ from each station.&lt;/p&gt;
&lt;p&gt;Since I have been letting my work PC “on” all of the time, I proceeded to make it as a client to stream filler programs at times all stations are off-the-air.&lt;/p&gt;
&lt;h2 id=&#34;multi-port-stream-with-altacast&#34;&gt;Multi-port Stream with AltaCast
&lt;/h2&gt;&lt;p&gt;We’ve been using &lt;a class=&#34;link&#34; href=&#34;https://sourceforge.net/projects/butt/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;butt (broadcast using this tool)&lt;/a&gt;  and/or &lt;a class=&#34;link&#34; href=&#34;https://directory.shoutcast.com/Winamp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WinAmp Shoutcast DSP&lt;/a&gt; to upload a single stream to the servers (each station) - and running 12 instances of it is highly unrecommended.&lt;/p&gt;
&lt;p&gt;My internet search led me to a program called &lt;a class=&#34;link&#34; href=&#34;http://www.altacast.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AltaCast&lt;/a&gt; - which supports multiple streams. The standalone app initially supports OGG encoded streams but downloading &lt;a class=&#34;link&#34; href=&#34;https://lame.sourceforge.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MP3Lame&lt;/a&gt; encoders now supports MP3 (duh).&lt;/p&gt;
&lt;p&gt;I started off streaming one port, and it works well. Then 3, then all 12. But the app crashes. Further troubleshooting let me conclude that it might be limited to 6 simultaneous streams.&lt;/p&gt;
&lt;p&gt;Now with that limitation, this thing would be impossible. Then I tried to “copy” the standalone app on another location and reconfigured the remaining 6 streams, and it worked!&lt;/p&gt;
&lt;p&gt;The only problem is that there is no way to rename the configurations as to which is which.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/console-app-to-automate-stream-with-altacast-vlc-vb-virtual-cable/img/altacast.png&#34; width=&#34;427&#34;  height=&#34;513&#34;  srcset=&#34;https://reddavid.me/p/console-app-to-automate-stream-with-altacast-vlc-vb-virtual-cable/img/altacast_hu_eead32b77be072d1.png 480w, https://reddavid.me/p/console-app-to-automate-stream-with-altacast-vlc-vb-virtual-cable/img/altacast_hu_48b7cfc12a2ab550.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;AltaCast&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;83&#34;
	data-flex-basis=&#34;199px&#34; &gt;&lt;/p&gt;
&lt;h2 id=&#34;virtual-cable&#34;&gt;Virtual Cable
&lt;/h2&gt;&lt;p&gt;There should be nothing wrong to use the desktop audio to stream, but to avoid any unwanted noise/audio, I installed &lt;a class=&#34;link&#34; href=&#34;https://vb-audio.com/Cable/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VB Virtual Audio Cable&lt;/a&gt; which installed a virtual audio I/O on Windows to re-route certain apps’ audio.&lt;/p&gt;
&lt;p&gt;I used the VB Cable Output as the input for two instances of AltaCast.&lt;/p&gt;
&lt;h2 id=&#34;media-playback&#34;&gt;Media Playback
&lt;/h2&gt;&lt;p&gt;I will be using &lt;a class=&#34;link&#34; href=&#34;https://www.videolan.org/vlc/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VLC&lt;/a&gt; as the media player since it supports network streams. Right now, I will be “hooking-up” to &lt;a class=&#34;link&#34; href=&#34;https://www.dwiz882am.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DWIZ 882&lt;/a&gt; (one of our affiliate station) programs upto 12 midnight. Then use &lt;a class=&#34;link&#34; href=&#34;https://cnnphilippines.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CNN Philippines&lt;/a&gt; programs 12-3am.&lt;/p&gt;
&lt;h2 id=&#34;programming-a-console-app&#34;&gt;Programming a Console App
&lt;/h2&gt;&lt;p&gt;This app will be a timer to check set times:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;10PM - Start Client Stream&lt;/li&gt;
&lt;li&gt;12MN - Change Media Source&lt;/li&gt;
&lt;li&gt;3AM - Stop/Quit Stream&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed various bugs (time check)&lt;/li&gt;
&lt;li&gt;Changed every second tick to every minute&lt;/li&gt;
&lt;li&gt;Adjusted Trim Extension to remove seconds&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Below is the full code:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;96
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;System.Diagnostics&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;System.Threading&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Program&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Timer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_timer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isActive&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Welcome to Stream Control!&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;--------------------------&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;App Version: 0.1-beta&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Starting timer...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// Changed timer tick to 60_000 ms | 60 secs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;_timer&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Timer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TimerCallback&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;60_000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TimerCallback&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Object&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;o&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;22:10&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;shift&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;23:59&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stop&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;02:55&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;now&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DateTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Now&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TimeOfDay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;now&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;now&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;StripSeconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Console&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;$&amp;#34;Now: {now} | Start: {start} | Shift: {shift} | Stop: {stop}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;now&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;start&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;isActive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;StartLocalStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;isActive&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;now&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;shift&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isActive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;c1&#34;&gt;// Change Media Playback&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;ChangeMediaPlayback&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;now&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stop&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isActive&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;c1&#34;&gt;// Stop apps&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;KillProcesses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;vlc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;KillProcesses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;altacastStandalone&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;isActive&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;   
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ChangeMediaPlayback&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// Get media playing for max 3 hours&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c1&#34;&gt;// Kill any initial VLC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vlc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;C:\Program Files\VideoLAN\VLC\vlc.exe&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;KillProcesses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;vlc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;CreateAndRunProcess&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;C:\Program Files\VideoLan\VLC&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vlc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;https://streaming.cnnphilippines.com/live/myStream/playlist.m3u8&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StartLocalStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vlc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;C:\Program Files\VideoLAN\VLC\vlc.exe&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;altaCast1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;D:\altacast\altacastStandalone.exe&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;altaCast2&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;D:\altacast2\altacastStandalone.exe&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;CreateAndRunProcess&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;C:\Program Files\VideoLan\VLC&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;vlc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;http://149.56.147.197:9079/stream&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;CreateAndRunProcess&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;D:\altacast\&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;altaCast1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isShell&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;verb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;runas&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;CreateAndRunProcess&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;D:\altacast2\&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;altaCast2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isShell&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;verb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;runas&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CreateAndRunProcess&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;bool&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isShell&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;verb&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;ProcessStartInfo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;procInfo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ProcessStartInfo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;WorkingDirectory&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;directory&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;FileName&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fileName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;UseShellExecute&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isShell&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Verb&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;verb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Arguments&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;args&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;procInfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;void&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;KillProcesses&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;processName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;foreach&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;process&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetProcessesByName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;processName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;process&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Kill&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// https://stackoverflow.com/a/35750677&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;TimeExtensions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StripMilliseconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;this&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TimeSpan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Days&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Hours&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Minutes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Seconds&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/console-app-to-automate-stream-with-altacast-vlc-vb-virtual-cable/img/console-app-running.png&#34; width=&#34;1115&#34;  height=&#34;628&#34;  srcset=&#34;https://reddavid.me/p/console-app-to-automate-stream-with-altacast-vlc-vb-virtual-cable/img/console-app-running_hu_62dab6a344e3e8e4.png 480w, https://reddavid.me/p/console-app-to-automate-stream-with-altacast-vlc-vb-virtual-cable/img/console-app-running_hu_e5af151a94f6f3f.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Console App&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34;
	data-flex-basis=&#34;426px&#34; &gt;&lt;/p&gt;
&lt;p&gt;I’ve only tested it for a day and made some fixes to continue the app running.&lt;/p&gt;
&lt;p&gt;You can tune in at &lt;a class=&#34;link&#34; href=&#34;https://tunein.rpnradio.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://tunein.rpnradio.com/&lt;/a&gt; and we’ll debug any errors. 😀&lt;/p&gt;
&lt;h2 id=&#34;future-plans&#34;&gt;Future Plans
&lt;/h2&gt;&lt;p&gt;As of now, stations’ broadcast hours differ (sign on and sign off) and I want the app to be dynamic. Some plans for the app:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Detect actual “dead air” time&lt;/li&gt;
&lt;li&gt;Detect actual “on air” time&lt;/li&gt;
&lt;li&gt;Custom playlist in VLC (not relying on “hook ups”)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks for reading the blog post.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Fix NVIDIA Game Crashing &amp; Black Screen on Windows 11 (nvlddmkm Error)</title>
        <link>https://reddavid.me/p/fix-nvidia-game-crashing-black-screen-on-windows-11-nvlddmkm-error/</link>
        <pubDate>Fri, 10 Feb 2023 04:30:05 +0800</pubDate>
        
        <guid>https://reddavid.me/p/fix-nvidia-game-crashing-black-screen-on-windows-11-nvlddmkm-error/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/nvidia-error.png" alt="Featured image of post Fix NVIDIA Game Crashing &amp; Black Screen on Windows 11 (nvlddmkm Error)" /&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;#solution-for-me-at-least&#34; &gt;Skip the bullsh*t, just show me your solution! (please)&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;some-background-first&#34;&gt;Some Background First
&lt;/h2&gt;&lt;p&gt;I couldn’t play (mid-tier) games long enough without them crashing after 30-minutes, or worse is just about 10-minutes - which happens when I am just casually playing Dota 2 AI scripts to waste some time. I thought there was just a problem (again) with my RAM sticks but two memory checker programs reported no errors on them. Then I just went and accepted the crashes so I could use my time doing more important things.&lt;/p&gt;
&lt;p&gt;But the crashes happened with other games like High on Life, Control, and CODMW. And after trying to watch some Dota 2 match in-game, the crash happened - and I am fed up.&lt;/p&gt;
&lt;p&gt;(But thankfully, I am not getting any bug checks or BSODs)&lt;/p&gt;
&lt;h2 id=&#34;the-problem&#34;&gt;The Problem
&lt;/h2&gt;&lt;p&gt;I checked Windows Event Viewer for any logs and there it is!&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/fix-nvidia-game-crashing-black-screen-on-windows-11-nvlddmkm-error/nvlddmkm-error-event.png&#34;
    alt=&#34;nvlddmkm Error in Windows Event Viewer&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;nvlddmkm Error in Windows Event Viewer&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/fix-nvidia-game-crashing-black-screen-on-windows-11-nvlddmkm-error/event-error-details.png&#34;
    alt=&#34;Error Details&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Error Details&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;Event&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://schemas.microsoft.com/win/2004/08/events/event&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;System&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Provider&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;Name=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;nvlddmkm&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;EventID&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;Qualifiers=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/EventID&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Version&amp;gt;&lt;/span&gt;0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Version&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Level&amp;gt;&lt;/span&gt;2&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Level&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Task&amp;gt;&lt;/span&gt;0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Task&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Opcode&amp;gt;&lt;/span&gt;0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Opcode&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Keywords&amp;gt;&lt;/span&gt;0x80000000000000&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Keywords&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;TimeCreated&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;SystemTime=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;2023-02-09T15:15:31.3464479Z&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;EventRecordID&amp;gt;&lt;/span&gt;138086&lt;span class=&#34;nt&#34;&gt;&amp;lt;/EventRecordID&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Correlation&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Execution&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ProcessID=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;4&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;ThreadID=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;4588&amp;#34;&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Channel&amp;gt;&lt;/span&gt;System&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Channel&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Computer&amp;gt;&lt;/span&gt;David-PC&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Computer&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Security&lt;/span&gt; &lt;span class=&#34;nt&#34;&gt;/&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/System&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;nt&#34;&gt;&amp;lt;EventData&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;\Device\Video3&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Data&amp;gt;&lt;/span&gt;Error occurred on GPUID: 2b00&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Data&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	  &lt;span class=&#34;nt&#34;&gt;&amp;lt;Binary&amp;gt;&lt;/span&gt;00000000020030000000000000000000000000000000000000000000000000000000000000000000&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Binary&amp;gt;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/EventData&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Event&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;solutions-from-the-web&#34;&gt;Solutions from the Web
&lt;/h2&gt;&lt;p&gt;There are a BUUUNNCH of users experiencing this issue, and some solutions vary from re-installing GPU drivers, cleaning the GPU from dust, putting heat sink to RAM sticks, changing the PSU, replacing the GPU, and even not mixing AMD CPU and NVIDIA GPU on the same system.&lt;/p&gt;
&lt;p&gt;As of my situation, I can’t do most of the above advised solutions, though I tried re-installing my graphics driver using &lt;a class=&#34;link&#34; href=&#34;https://www.guru3d.com/files-details/display-driver-uninstaller-download.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DDU&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But there was one reply among them which they tried rolling back their driver and fixed their issue.&lt;/p&gt;
&lt;h2 id=&#34;solution-for-me-at-least&#34;&gt;Solution (for me, at least)
&lt;/h2&gt;&lt;p&gt;I rolled back/re-installed my graphics drivers to the last known working one - which is NVIDIA’s December 8 Game Ready Driver 527.56 update.&lt;/p&gt;
&lt;p&gt;You can try to roll back yours by downloading your last working driver &lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/Download/Find.aspx?lang=en-us&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This was the driver where I played Assassin’s Creed Odyssey without a hiccup and I’ve tested it by watching an hour-long Dota 2 game.&lt;/p&gt;
&lt;p&gt;I will update this post after testing with the other games mentioned above.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Maybe this was a move to force me to replace my weak RTX 2060 huh&lt;/small&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>More Work Automation by Building a WPF App</title>
        <link>https://reddavid.me/p/more-work-automation-by-building-a-wpf-app/</link>
        <pubDate>Thu, 02 Feb 2023 19:30:40 +0800</pubDate>
        
        <guid>https://reddavid.me/p/more-work-automation-by-building-a-wpf-app/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/work-automation.png" alt="Featured image of post More Work Automation by Building a WPF App" /&gt;&lt;p&gt;As I mentioned in my previous blog post, I do some online broadcasting/content duties which include posting on the website, monitoring and logging 12 stations’ social media and audio servers, and any particular aspect of it.&lt;/p&gt;
&lt;p&gt;Having to monitor the 12 stations’ analytics and statistics, one will always come to the point where they would need to automate their workflow. And that’s what I did.&lt;/p&gt;
&lt;h2 id=&#34;counting-wordpress-posts&#34;&gt;Counting WordPress Posts
&lt;/h2&gt;&lt;p&gt;First up is to check which stations have posted content on the news website. Since I also have the access to cPanel, thus I can whitelist the office’s IP address in phpMyAdmin to access the MySQL database then.&lt;/p&gt;
&lt;p&gt;The app connects to the WordPress database, checks if a station has any existing posts on a specific date, then builds a &lt;em&gt;calendar-like&lt;/em&gt; layout, as shown below:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/more-work-automation-by-building-a-wpf-app/posts-activity-page.png&#34;&gt;
&lt;/figure&gt;

&lt;p&gt;I know a little bit of SQL querying but with how WordPress database works, it took me a while to learn about &lt;em&gt;joining&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I wish I could simplify the query below:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;SELECT p.ID, p.post_date, p.post_title, t.term_id &amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;FROM wpku_posts p &amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;LEFT JOIN wpku_term_relationships rel ON rel.object_id = p.ID &amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;LEFT JOIN wpku_term_taxonomy tax ON tax.term_taxonomy_id = rel.term_taxonomy_id &amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;LEFT JOIN wpku_terms t ON t.term_id = tax.term_id &amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;WHERE p.post_type = &amp;#39;post&amp;#39; &amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;AND p.post_status = &amp;#39;publish&amp;#39; &amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;AND t.term_id NOT LIKE &amp;#39;14&amp;#39; &amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;AND (p.post_date LIKE &amp;#39;%&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NOW_YEAR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;%&amp;#39; OR p.post_date LIKE &amp;#39;%&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LAST_YEAR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;%&amp;#39;) &amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;ORDER BY `p`.`post_date` DESC&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The query will then be created into a PostActivity object which requires the StationName, Month, Day, and Year properties.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dataReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Read&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;PostActivityData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PostActivity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;StationName&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Convert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToInt32&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dataReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;term_id&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Month&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DateTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dataReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;post_date&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Month&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Day&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DateTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dataReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;post_date&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Day&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Year&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DateTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dataReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;post_date&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Year&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Finally, it is now time to display the data into a Calendar for viewing. The view will depend on the selected station from a dropdown (key).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;74
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Task&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DisplayActivityCalendar&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;year&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;layoutBuilder&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NewLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;week&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PostsActivityData&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PostsActivityData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;_&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ContentDialog&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;Title&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;Error Displaying Posts Activity&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;Content&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;SQL data not loaded properly&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;CloseButtonText&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;OK&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ShowAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stationData&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PostsActivityData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Where&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;StationName&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;panelOne&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StackPanel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Orientation&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Orientation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Horizontal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Margin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Thickness&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;panelTwo&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StackPanel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Orientation&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Orientation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Horizontal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Margin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Thickness&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;panelThree&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StackPanel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Orientation&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Orientation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Horizontal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Margin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Thickness&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;month&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;month&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;month&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;++)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;layoutBuilder&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Empty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;layoutBuilder&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;$&amp;#34;{StringHelper.ShowMonthName(month)} ({stationData.Where(x =&amp;gt; x.Month == month &amp;amp;&amp;amp; x.Year == year).Count()} posts) {Environment.NewLine}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;n&#34;&gt;week&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;day&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;day&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;DateTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DaysInMonth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;year&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;month&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;day&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;++)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;space&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DateTime&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;$&amp;#34;{year} {month} {day}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DayOfWeek&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;week&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;++;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;space&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;day&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;n&#34;&gt;week&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;space&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;n&#34;&gt;layoutBuilder&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StringHelper&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GenerateSpaces&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;space&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;layoutBuilder&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stationData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Any&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;x&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Month&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;month&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Day&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;day&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Year&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;year&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;✅&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;✖️&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;week&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;%&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;7&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;				&lt;span class=&#34;n&#34;&gt;layoutBuilder&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Environment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NewLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tb&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TextBlock&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;Text&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;layoutBuilder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;Margin&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Thickness&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;28&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;FontFamily&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FontFamily&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Segoe UI&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;month&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;panelOne&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Children&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;month&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;panelTwo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Children&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;month&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;&amp;lt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			&lt;span class=&#34;n&#34;&gt;panelThree&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Children&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tb&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;ContentRoot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Children&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;panelOne&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;ContentRoot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Children&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;panelTwo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;ContentRoot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Children&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;panelThree&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The &lt;em&gt;layoutBuilder&lt;/em&gt; is a cheeky code I played around to craft a calendar with a check or “x” mark whether a post exists on that date.&lt;/p&gt;
&lt;p&gt;The ContentRoot is a StackPanel in XAML and will hold the three new StackPanels created from the code above.&lt;/p&gt;
&lt;h2 id=&#34;social-media-numbers&#34;&gt;Social Media Numbers
&lt;/h2&gt;&lt;p&gt;This next one really needs an automation tool. This tool will log the 12 stations’ Facebook Pages, Twitter, and YouTube numbers (likes, followers, and channel subscribers).&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/more-work-automation-by-building-a-wpf-app/social-media-page.png&#34;&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;facebook&#34;&gt;Facebook
&lt;/h3&gt;&lt;p&gt;Too bad I can’t get around an API for Facebook Pages to get the number of likes and followers so I ended up with web scraping, which I posted &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/scraping-facebook-pages-to-get-number-of-likes-and-followers/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;twitter&#34;&gt;Twitter
&lt;/h3&gt;&lt;p&gt;I used Twitter’s API to get the accounts’ number of followers, although there is a step which I still have to get the account’s ID from the username:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;jsonData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HttpClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DefaultRequestHeaders&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Authorization&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AuthenticationHeaderValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Bearer&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TwitterBearerToken&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;$&amp;#34;https://api.twitter.com/2/users/by/username/{twitterUsername}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responseContent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// Convert username (Screen Name) to Twitter Id First&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// since the API for getting followers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;cs&#34;&gt;/// requires the Id instead of the username&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dataReader&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StreamReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responseContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadAsStreamAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dataReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadToEndAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;data&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JsonConvert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DeserializeObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TwitterData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;$&amp;#34;https://api.twitter.com/2/users/{data.Id}/followers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;responseContent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datumReader&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StreamReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responseContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadAsStreamAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;jsonData&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datumReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadToEndAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jsonData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Contains&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Too Many&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;API Request too many requests&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;followers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JsonConvert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DeserializeObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;TwitterDatum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;jsonData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Meta&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Result_count&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;followers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;catch&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;I used json2csharp to convert Twitter response to TwitterData object.&lt;/p&gt;
&lt;h3 id=&#34;youtube&#34;&gt;YouTube
&lt;/h3&gt;&lt;p&gt;As for YouTube, we also get to use an API which will require an API key from Google. And I simply scraped off the response to get the number of subscribers instead of using an object.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;uri&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;$&amp;#34;https://www.googleapis.com/youtube/v3/channels?part=statistics&amp;amp;id={channelId}&amp;amp;key={Settings.Default.YouTubeApiKey}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HttpWebRequest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WebRequest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;uri&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HttpWebResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responseStream&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetResponseStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;subscribers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StreamReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;responseStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;content&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadToEndAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;subscribers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;subscriberCount&amp;#34;&amp;#34;:.&amp;#34;&amp;#34;(\d+)&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Groups&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// Format to add thousands separator&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;{0:n0}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;subscribers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;catch&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;-&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then the numbers are placed into an object to then be &lt;em&gt;databound&lt;/em&gt; and listed into a DataGrid in XAML.&lt;/p&gt;
&lt;h2 id=&#34;centovacast-audio-streams&#34;&gt;CentovaCast Audio Streams
&lt;/h2&gt;&lt;p&gt;This third tool lists the stations’ current status of their audio server whether it is off or on, their stream status - online or offline, and current listeners.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/more-work-automation-by-building-a-wpf-app/servers-page.png&#34;&gt;
&lt;/figure&gt;

&lt;p&gt;Getting the server data using CentovaCast API and cast to an object and can be easily &lt;em&gt;databound&lt;/em&gt; to a DataGrid.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;			
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HttpClient&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/api.php?xm=server.getstatus&amp;amp;f=json&amp;amp;a[username]=&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;amp;a[password]=&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CentovaPassword&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Don&amp;#39;t add port, instead change the username to stations&amp;#39; username (eg. dxdx)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responseContent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Content&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StreamReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;responseContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadAsStreamAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ReadToEndAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stats&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;JsonConvert&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DeserializeObject&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;StationStat&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;stats&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Listenercount&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;stats&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Serverstate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;stats&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Bitrate&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34; kbps&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;s&#34;&gt;&amp;#34;Source IP: &amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;stats&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sourceip&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;n&#34;&gt;stats&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Status&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Sourceconnected&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToString&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The DataGrid also includes a context menu to quickly control the selected station’s server.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;client&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/api.php?xm=server.&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;command&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;amp;f=json&amp;amp;a[username]=&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;radioStation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CallSign&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ToLower&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;amp;a[password]=&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CentovaPassword&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;em&gt;Commands: restart, reload, stop. The Stream menu item will navigate to the stream page.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;text-case-changer&#34;&gt;Text Case Changer
&lt;/h2&gt;&lt;p&gt;We now go back to WordPress content. I sometimes post news content to the website, and some news write-ups don’t follow the standards - like the title in all-caps, in Unicode characters, etc.&lt;/p&gt;
&lt;p&gt;Prior to this, I tried writing my own logic but I was not satisfied until I used DevToys code.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/more-work-automation-by-building-a-wpf-app/text-case-changer-page.png&#34;&gt;
&lt;/figure&gt;

&lt;p&gt;Prior to this, my logic includes a list of exception words - which will ignore any case change or follow a certain case - like proper nouns.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/veler/DevToys&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DevToys is open source in GitHub.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;url-shortener&#34;&gt;URL Shortener
&lt;/h2&gt;&lt;p&gt;There was this Yourls app in cPanel/Softaculous that allows me to create short URLs but it stopped working one day. And WordPress already has one.&lt;/p&gt;
&lt;p&gt;This tool should be renamed as URL Styler, which just styles &lt;em&gt;accepted&lt;/em&gt; URL input into a custom Viber &lt;em&gt;message&lt;/em&gt; - we repost news to our Viber community members.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/more-work-automation-by-building-a-wpf-app/url-shortener-page.png&#34;&gt;
&lt;/figure&gt;

&lt;p&gt;The Customize button is enabled/disabled through ViewModel if the URL is a vaild rpnradio.com or wp.me shortlink.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;IsMatch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_inputUrl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;^http(s)?://([rpnradio|wp]+.)+[com|me-]+(/[\w- ./?%&amp;amp;=]+)?(/)?$&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Next is we’ll use the HtmlDecode and RegEx capturing to get the details from the link’s page source (e.g. title, featured image URL, and shortlink if the input is not one).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetContentAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HttpUtility&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HtmlDecode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;&amp;lt;title&amp;gt;(.+)&amp;lt;/title&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Groups&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Replace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;- Radio Philippines Network&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Empty&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Trim&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;shortLink&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;&amp;lt;link rel=&amp;#34;&amp;#34;shortlink&amp;#34;&amp;#34; href=&amp;#34;&amp;#34;(https\:\/\/wp\.me\/.+)&amp;#34;&amp;#34;&amp;gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Groups&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;imagePath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;og:image&amp;#34;&amp;#34; content=&amp;#34;&amp;#34;(.+)&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Groups&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The tool will finally create a custom text to the Clipboard and ready to be pasted in Viber.&lt;/p&gt;
&lt;h2 id=&#34;wip-shortcuts&#34;&gt;(WIP) Shortcuts
&lt;/h2&gt;&lt;p&gt;I used an Elgato Stream Deck before to launch most-used URLs and I am currently working to integrate this to the app.&lt;/p&gt;
&lt;p&gt;Unfortunately, the code repo is not publicly available but will try to “hide” some confidential details before making it public.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Automating OBS Recording With WinForms App</title>
        <link>https://reddavid.me/p/automating-obs-recording-with-winforms-app/</link>
        <pubDate>Sun, 29 Jan 2023 18:07:22 +0800</pubDate>
        
        <guid>https://reddavid.me/p/automating-obs-recording-with-winforms-app/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/automate-obs.png" alt="Featured image of post Automating OBS Recording With WinForms App" /&gt;&lt;p&gt;There was a requirement at work (not mine) that requires to record the 12 radio stations’ broadcast traffic to be monitored later for any discrepancies and whatnot.&lt;/p&gt;
&lt;p&gt;I was asked if this was possible, and I said &lt;em&gt;yes&lt;/em&gt;, there’s a solution for the current setup we have onsite. With the knowledge that OBS can record 6 separate audio tracks at once, I suggested allocating two desktop PCs to record each 6 “online audio streams” - we cater online live streaming, and since the audio service DOES NOT record hence save backups.&lt;/p&gt;
&lt;h2 id=&#34;obs-layout&#34;&gt;OBS Layout
&lt;/h2&gt;&lt;p&gt;So I began setting up the layout that will help distinguish the date and time of the streams being recorded:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add a Text source and Used a datetime.lua script:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;  1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;  9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 56
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 57
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 58
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 59
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 60
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 61
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 62
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 63
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 64
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 65
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 66
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 67
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 68
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 69
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 70
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 71
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 72
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 73
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 74
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 75
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 76
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 77
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 78
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 79
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 80
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 81
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 82
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 83
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 84
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 85
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 86
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 87
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 88
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 89
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 90
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 91
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 92
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 93
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 94
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 95
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 96
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 97
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 98
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 99
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;100
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;101
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;102
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;103
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;104
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;105
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;106
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;107
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;108
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;109
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;110
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;111
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;112
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;113
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;114
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;115
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;116
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;117
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;118
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;119
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;120
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;121
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;122
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;123
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;124
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;125
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;126
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;127
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;128
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;129
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;130
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;131
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;132
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;133
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;134
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;135
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;136
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;137
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;138
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;139
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-lua&#34; data-lang=&#34;lua&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;--[[ OBS Studio datetime script
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;This script transforms a text source into a digital clock. The datetime format
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;is configurable and uses the same syntax than the Lua os.date() call.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;obs&lt;/span&gt;             &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obslua&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;source_name&lt;/span&gt;     &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;datetime_format&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;activated&lt;/span&gt;       &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Function to set the time text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;set_datetime_text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;os.date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_data_create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;obs.obs_data_set_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;obs.obs_source_update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;obs.obs_data_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;timer_callback&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_get_source_by_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;set_datetime_text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;datetime_format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;obs.obs_source_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;activate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;activating&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;activated&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;activating&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;activated&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;activating&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;activating&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;obs.timer_add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timer_callback&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;obs.timer_remove&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;timer_callback&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;-- Called when a source is activated/deactivated&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;activate_signal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;activating&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.calldata_source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;source&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_source_get_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;activate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;activating&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;source_activated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;activate_signal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;source_deactivated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;activate_signal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;reset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;activate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_get_source_by_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;active&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_source_showing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;obs.obs_source_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;activate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;active&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;----------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;script_description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Sets a text source to act as a clock when the source is active.&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;The datetime format can use the following tags:&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %a	abbreviated weekday name (e.g., Wed)&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %A	full weekday name (e.g., Wednesday)&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %b	abbreviated month name (e.g., Sep)&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %B	full month name (e.g., September)&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %c	date and time (e.g., 09/16/98 23:48:10)&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %d	day of the month (16) [01-31]&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %H	hour, using a 24-hour clock (23) [00-23]&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %I	hour, using a 12-hour clock (11) [01-12]&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %M	minute (48) [00-59]&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %m	month (09) [01-12]&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %p	either &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;am&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; or &lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;pm&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\&amp;#34;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; (pm)&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %S	second (10) [00-61]&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %w	weekday (3) [0-6 = Sunday-Saturday]&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %x	date (e.g., 09/16/98)&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %X	time (e.g., 23:48:10)&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %Y	full year (1998)&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %y	two-digit year (98) [00-99]&lt;/span&gt;&lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;    %%	the character `%ยด&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;script_properties&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;props&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_properties_create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;obs.obs_properties_add_text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;props&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Datetime format&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.OBS_TEXT_DEFAULT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;p&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_properties_add_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;props&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;source&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Text Source&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.OBS_COMBO_TYPE_EDITABLE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.OBS_COMBO_FORMAT_STRING&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sources&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_enum_sources&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sources&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ipairs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sources&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;source_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_source_get_id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kr&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;text_gdiplus&amp;#34;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;or&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source_id&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;text_ft2_source&amp;#34;&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_source_get_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;obs.obs_property_list_add_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;p&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;obs.source_list_release&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sources&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;props&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;script_defaults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;obs.obs_data_set_default_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;%X&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;script_update&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;activate&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;source_name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_data_get_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;source&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;datetime_format&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_data_get_string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;reset&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;script_load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;settings&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sh&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs.obs_get_signal_handler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;obs.signal_handler_connect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;source_show&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source_activated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;obs.signal_handler_connect&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;source_hide&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;source_deactivated&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Add 6 Browser sources arranged in a grid and each navigates to a station’s &lt;a class=&#34;link&#34; href=&#34;https://tunein.rpnradio.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;stream URL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add another Text source for the track number overlay spaced properly to match the browser source grid&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Below is the final scenes list and output layout:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/automating-obs-recording-with-winforms-app/scenes.png&#34;
    alt=&#34;OBS Scenes&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;OBS Scenes&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/automating-obs-recording-with-winforms-app/output-layout.png&#34;
    alt=&#34;OBS Scene Output Preview&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;OBS Scene Output Preview&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;obs-recording-settings&#34;&gt;OBS Recording Settings
&lt;/h2&gt;&lt;p&gt;After arranging the tracks to determine their order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set Advanced Audio Properties to separate audio to each track&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/automating-obs-recording-with-winforms-app/advanced-audio-properties.png&#34;
    alt=&#34;OBS Advanced Audio Properties&#34; width=&#34;70%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;OBS Advanced Audio Properties&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;Check all tracks in Recording settings&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/automating-obs-recording-with-winforms-app/recording-settings.png&#34;
    alt=&#34;Check Box - Recording Advanced Settings&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Check Box - Recording Advanced Settings&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;Rename tracks in Audio settings&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/automating-obs-recording-with-winforms-app/output-audio-settings.png&#34;
    alt=&#34;Naming Audio Tracks in Audio Settings&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Naming Audio Tracks in Audio Settings&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;Finally, I set the settings to record at just 10kbps to decrease the output filesize.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;automation&#34;&gt;Automation
&lt;/h2&gt;&lt;p&gt;After setting up the recording system, it is now a challenge on how to run OBS and start recording at the required times: 3:00am to 10:00pm.&lt;/p&gt;
&lt;p&gt;Turning off the system at 10:00pm is not a problem but starting it at 3:00am is a challenge. And it is also not an option to run the system 24/7 since we need &lt;em&gt;daily&lt;/em&gt; &lt;em&gt;traffic&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&#34;task-scheduler-and-powershell-script&#34;&gt;Task Scheduler and PowerShell Script
&lt;/h3&gt;&lt;p&gt;I first chose this method since I know that most programs use this as well to run at a specific setting (e.g. Startup, definite time). So I get to code two files: an XML for the task to be imported, and a PowerShell script which the task will run:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;obs-launch-record.ps1&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;$obs&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Get-Process&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs64&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-ErrorAction&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SilentlyContinue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$obs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c&#34;&gt;# try gracefully first&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$obs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;CloseMainWindow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c&#34;&gt;# kill after 1 second&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;Sleep &lt;/span&gt;&lt;span class=&#34;mf&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(!&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$obs&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HasExited&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;$obs&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Stop-Process&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Force&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Remove-Variable&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;obs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Write-Host&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Get-Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; Launching OBS Studio...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Write-Host&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;Get-Date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; Recording...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Set-Location&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Path&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\Program Files\obs-studio\bin\64bit\&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Start-Process&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\obs64.exe&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;-startrecording&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Write-Host&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Remember to set and start your Output Timer in Tools&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Write-Host&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;or you can just manually stop the recording&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#Write-Host &amp;#34;Press any key to continue...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;#$Host.UI.RawUI.ReadKey(&amp;#34;NoEcho,IncludeKeyDown&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;Read-Host&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-Prompt&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Press Enter to exit&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;script-launch-task.xml&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;53
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;54
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;55
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;56
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-16&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;Task&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;version=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;1.4&amp;#34;&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://schemas.microsoft.com/windows/2004/02/mit/task&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;RegistrationInfo&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Date&amp;gt;&lt;/span&gt;2020-10-29T16:14:25.6856808&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Date&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Author&amp;gt;&lt;/span&gt;DAVID-WORKPC\david&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Author&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Description&amp;gt;&lt;/span&gt;This task runs a powershell script that launches OBS Studio with a parameter to start recording automatically.&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Description&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;URI&amp;gt;&lt;/span&gt;\Run OBS Studio and Record&lt;span class=&#34;nt&#34;&gt;&amp;lt;/URI&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/RegistrationInfo&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Triggers&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;CalendarTrigger&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;StartBoundary&amp;gt;&lt;/span&gt;2020-10-29T02:59:59+08:00&lt;span class=&#34;nt&#34;&gt;&amp;lt;/StartBoundary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;Enabled&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Enabled&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;ScheduleByDay&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;DaysInterval&amp;gt;&lt;/span&gt;1&lt;span class=&#34;nt&#34;&gt;&amp;lt;/DaysInterval&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;/ScheduleByDay&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/CalendarTrigger&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/Triggers&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Principals&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Principal&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;id=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Author&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;UserId&amp;gt;&lt;/span&gt;S-1-5-21-2031556638-4226476305-1743380608-1001&lt;span class=&#34;nt&#34;&gt;&amp;lt;/UserId&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;LogonType&amp;gt;&lt;/span&gt;InteractiveToken&lt;span class=&#34;nt&#34;&gt;&amp;lt;/LogonType&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;RunLevel&amp;gt;&lt;/span&gt;HighestAvailable&lt;span class=&#34;nt&#34;&gt;&amp;lt;/RunLevel&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/Principal&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/Principals&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Settings&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;MultipleInstancesPolicy&amp;gt;&lt;/span&gt;IgnoreNew&lt;span class=&#34;nt&#34;&gt;&amp;lt;/MultipleInstancesPolicy&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;DisallowStartIfOnBatteries&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/DisallowStartIfOnBatteries&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;StopIfGoingOnBatteries&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/StopIfGoingOnBatteries&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;AllowHardTerminate&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/AllowHardTerminate&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;StartWhenAvailable&amp;gt;&lt;/span&gt;false&lt;span class=&#34;nt&#34;&gt;&amp;lt;/StartWhenAvailable&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;RunOnlyIfNetworkAvailable&amp;gt;&lt;/span&gt;false&lt;span class=&#34;nt&#34;&gt;&amp;lt;/RunOnlyIfNetworkAvailable&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;IdleSettings&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;StopOnIdleEnd&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/StopOnIdleEnd&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;RestartOnIdle&amp;gt;&lt;/span&gt;false&lt;span class=&#34;nt&#34;&gt;&amp;lt;/RestartOnIdle&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/IdleSettings&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;AllowStartOnDemand&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/AllowStartOnDemand&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Enabled&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Enabled&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Hidden&amp;gt;&lt;/span&gt;false&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Hidden&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;RunOnlyIfIdle&amp;gt;&lt;/span&gt;false&lt;span class=&#34;nt&#34;&gt;&amp;lt;/RunOnlyIfIdle&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;DisallowStartOnRemoteAppSession&amp;gt;&lt;/span&gt;false&lt;span class=&#34;nt&#34;&gt;&amp;lt;/DisallowStartOnRemoteAppSession&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;UseUnifiedSchedulingEngine&amp;gt;&lt;/span&gt;true&lt;span class=&#34;nt&#34;&gt;&amp;lt;/UseUnifiedSchedulingEngine&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;WakeToRun&amp;gt;&lt;/span&gt;false&lt;span class=&#34;nt&#34;&gt;&amp;lt;/WakeToRun&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;ExecutionTimeLimit&amp;gt;&lt;/span&gt;PT72H&lt;span class=&#34;nt&#34;&gt;&amp;lt;/ExecutionTimeLimit&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Priority&amp;gt;&lt;/span&gt;7&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Priority&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;RestartOnFailure&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;Interval&amp;gt;&lt;/span&gt;PT1M&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Interval&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;Count&amp;gt;&lt;/span&gt;5&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Count&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/RestartOnFailure&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/Settings&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Actions&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;Context=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Author&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;Exec&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;Command&amp;gt;&lt;/span&gt;powershell&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Command&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;Arguments&amp;gt;&lt;/span&gt;-File D:\start-obs-record.ps1&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Arguments&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/Exec&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/Actions&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/Task&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;These two files works but despite the users being technical, this method seems daunting by using an uncommon app, Task Scheduler, and it is inefficient when changing the xml code or script (when changing time, obs.exe location, etc.)&lt;/p&gt;
&lt;h3 id=&#34;building-a-winforms-app&#34;&gt;Building a WinForms App
&lt;/h3&gt;&lt;p&gt;To simplify and solve some major problems of the Task Scheduler method, I decided to use a GUI by developing a System Tray app using WinForms.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/automating-obs-recording-with-winforms-app/app-gui.png&#34;
    alt=&#34;App GUI&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;App GUI&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The GUI now allows to freely change the start recording in OBS with the argument (also used in PowerShell script above):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.\obs64.exe --startrecording
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The app basically runs 24/7 on the system and checks if it is time to start or stop the executable. An option to auto-run it at startup, and an executable file browser to ensure OBS exists.&lt;/p&gt;
&lt;h2 id=&#34;monitor-recordings-in-vlc&#34;&gt;Monitor Recordings in VLC
&lt;/h2&gt;&lt;p&gt;Now that everything is automated and works as intended, assigned personnel can now review recorded files on VLC - we tried other players but they can NOT handle the filesize (over 13GB each).&lt;/p&gt;
&lt;p&gt;VLC can easily read .MKV files which includes the 6 audio tracks and can be selected in VLC audio track (which shows the track name we did when setting up OBS Audio settings):&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/automating-obs-recording-with-winforms-app/vlc-audio-tracks.png&#34;
    alt=&#34;Changing Named Tracks in VLC&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Changing Named Tracks in VLC&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;final-thoughts&#34;&gt;Final Thoughts
&lt;/h2&gt;&lt;p&gt;It has been working since 2020-ish? See the full code of this app, &lt;a class=&#34;link&#34; href=&#34;https://github.com/reddvid/rpn-traffic-control&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;repo&lt;/a&gt; is available on my GitHub.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Feeling Fresh</title>
        <link>https://reddavid.me/projects/feeling-fresh/</link>
        <pubDate>Fri, 27 Jan 2023 05:58:49 +0800</pubDate>
        
        <guid>https://reddavid.me/projects/feeling-fresh/</guid>
        <description>&lt;img src="https://reddavid.me/projects/feeling-fresh/feelingfresh-og.png" alt="Featured image of post Feeling Fresh" /&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/projects/feeling-fresh/feelingfresh-og.png&#34;&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;feeling-fresh&#34;&gt;Feeling Fresh
&lt;/h2&gt;&lt;p&gt;&lt;em&gt;Slightly&lt;/em&gt; fast forward installing softwares on new Windows installation&lt;/p&gt;

&lt;div class=&#34;tagCloud-tags ff&#34;&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Adobe%20Acrobat%20Reader%20DC&#34;&gt;Adobe Acrobat Reader DC&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Adobe%20Creative%20Cloud&#34;&gt;Adobe Creative Cloud&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+AMD%20Radeon%20Software&#34;&gt;AMD Radeon Software&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Android%20Studio&#34;&gt;Android Studio&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+AnyDesk&#34;&gt;AnyDesk&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Audacity&#34;&gt;Audacity&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Avast%20Driver%20Updater&#34;&gt;Avast Driver Updater&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Battlenet%20App&#34;&gt;Battlenet App&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Bitwarden&#34;&gt;Bitwarden&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Bluestacks&#34;&gt;Bluestacks&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Brave%20Browser&#34;&gt;Brave Browser&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Clip%20Studio%20Paint&#34;&gt;Clip Studio Paint&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+DaVinci%20Resolve&#34;&gt;DaVinci Resolve&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Discord&#34;&gt;Discord&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Dropbox&#34;&gt;Dropbox&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+EA%20Games%20App&#34;&gt;EA Games App&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Epic%20Games%20Launcher&#34;&gt;Epic Games Launcher&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+f.lux&#34;&gt;f.lux&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Facebook%20Messenger&#34;&gt;Facebook Messenger&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Figma%20Desktop%20App&#34;&gt;Figma Desktop App&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+FileZilla&#34;&gt;FileZilla&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Flutter&#34;&gt;Flutter&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+GeForce%20Experience&#34;&gt;GeForce Experience&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Git%20for%20Windows&#34;&gt;Git for Windows&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+GitHub%20Desktop&#34;&gt;GitHub Desktop&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Google%20Chrome&#34;&gt;Google Chrome&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+hugo.io&#34;&gt;hugo.io&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Huion%20Software&#34;&gt;Huion Software&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+iCloud%20for%20Windows&#34;&gt;iCloud for Windows&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Internet%20Download%20Manager&#34;&gt;Internet Download Manager&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+iTunes&#34;&gt;iTunes&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Logitech%20G%20GitHub&#34;&gt;Logitech G GitHub&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Malwarebytes&#34;&gt;Malwarebytes&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+MedalTV&#34;&gt;MedalTV&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Microsoft%20Teams&#34;&gt;Microsoft Teams&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Mozilla%20Firefox&#34;&gt;Mozilla Firefox&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+MSSQL%20Server%20Management%20Studio&#34;&gt;MSSQL Server Management Studio&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+MySQL%20Workbench&#34;&gt;MySQL Workbench&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Notepad%2b%2b&#34;&gt;Notepad&amp;#43;&amp;#43;&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Notion%20Desktop%20App&#34;&gt;Notion Desktop App&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+OBS%20Studio&#34;&gt;OBS Studio&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Office%20365&#34;&gt;Office 365&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+PatchMyPC&#34;&gt;PatchMyPC&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Postman&#34;&gt;Postman&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+PowerToys&#34;&gt;PowerToys&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+qBittorrent&#34;&gt;qBittorrent&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Rufus&#34;&gt;Rufus&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Skype&#34;&gt;Skype&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Slack&#34;&gt;Slack&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Snappy%20Driver%20Installer%20Origin&#34;&gt;Snappy Driver Installer Origin&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Spotify&#34;&gt;Spotify&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Steam&#34;&gt;Steam&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Stream%20Deck%20Software&#34;&gt;Stream Deck Software&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Streamlabs%20OBS&#34;&gt;Streamlabs OBS&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Sumatra%20PDF&#34;&gt;Sumatra PDF&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+TeamViewer&#34;&gt;TeamViewer&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+TreeSize%20Free&#34;&gt;TreeSize Free&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Trello&#34;&gt;Trello&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Ubisoft%20Connect&#34;&gt;Ubisoft Connect&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Unity%20Hub&#34;&gt;Unity Hub&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+VB%20Virtual%20Cable&#34;&gt;VB Virtual Cable&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Viber&#34;&gt;Viber&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Visual%20Studio&#34;&gt;Visual Studio&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+VLC%20Media%20Player&#34;&gt;VLC Media Player&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Voicemeeter%20Banana&#34;&gt;Voicemeeter Banana&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+VS%20Code&#34;&gt;VS Code&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Vysor&#34;&gt;Vysor&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+WhatsApp%20Desktop&#34;&gt;WhatsApp Desktop&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+WinAmp&#34;&gt;WinAmp&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+WinRAR&#34;&gt;WinRAR&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+XSplit%20Broadcaster&#34;&gt;XSplit Broadcaster&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+XSplit%20VCam&#34;&gt;XSplit VCam&lt;/a&gt;
  
  &lt;a class=&#34;cardlink&#34; rel=&#34;nofollow noopener noreferrer&#34; target=&#34;_blank&#34;
    href=&#34;https://duckduckgo.com/?q=!ducky+Zoom&#34;&gt;Zoom&lt;/a&gt;
  
&lt;/div&gt;

&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;small&gt;📷 Black Dell Laptop on White Desk by Adam Sondel on Pexels.com&lt;/small&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Scraping Facebook Pages to Get Number of Likes and Followers</title>
        <link>https://reddavid.me/p/scraping-facebook-pages-to-get-number-of-likes-and-followers/</link>
        <pubDate>Mon, 23 Jan 2023 02:58:40 +0800</pubDate>
        
        <guid>https://reddavid.me/p/scraping-facebook-pages-to-get-number-of-likes-and-followers/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/scraping.png" alt="Featured image of post Scraping Facebook Pages to Get Number of Likes and Followers" /&gt;&lt;p&gt;Ever since Facebook’s New Page Experience update, my app that logs several Facebook pages’ number of likes and followers have been broken.&lt;/p&gt;
&lt;p&gt;Prior to that, I was using a simple HttpClient to receive a page response content and scrape off content (HTML element) that holds the values for the likes and followers, respectively, using Nodes() from HtmlDocument().&lt;/p&gt;
&lt;p&gt;Everything works just fine then the update happened.&lt;/p&gt;
&lt;h2 id=&#34;old-way&#34;&gt;Old Way
&lt;/h2&gt;&lt;p&gt;Before getting into my &lt;em&gt;working&lt;/em&gt; method, let me show you the old code (redacted as much as possible):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;HttpWebRequest&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;request&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HttpWebRequest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WebRequest&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Create&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;https://facebook.com/pg/&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;fbId&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;/community&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;HtmlDocument&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;htmlDoc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HtmlDocument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;HttpWebResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;request&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetResponse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;HttpStatusCode&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;code&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;StatusCode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;code&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HttpStatusCode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OK&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;StreamReader&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sr&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;StreamReader&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetResponseStream&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Encoding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UTF8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;htmlDoc&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;HtmlDocument&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;htmlDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;OptionFixNestedTags&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;htmlDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Load&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sr&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;likesXPath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;followersXPath&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// This XPath code changes without prior notice&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// so manually updating the code... everytime it shows empty&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// and sometimes it&amp;#39;s not unique. So...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;likes&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;htmlDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DocumentNode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SelectNodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;//div[@class=&amp;#39;_59k _2rgt _1j-f _2rgt&amp;#39;]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InnerText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;followers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;htmlDoc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DocumentNode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SelectNodes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;//div[@class=&amp;#39;_59k _2rgt _1j-f _2rgt&amp;#39;]&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;InnerText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;As seen on the comment above, the HTML XPath code changes sometimes, and I also faced where the XPath isn’t unique for the twelve pages I log - for monthly statistics.&lt;/p&gt;
&lt;p&gt;And besides the New Page Experience update, not all 12 pages got it. So I scoured thru &lt;em&gt;source-inspecting&lt;/em&gt; and debugging on what differs from the NPE and Classic Pages (as of this writing):&lt;/p&gt;
&lt;h2 id=&#34;new-response-source-code&#34;&gt;New Response Source Code
&lt;/h2&gt;&lt;p&gt;Upon &lt;em&gt;inspecting&lt;/em&gt; the http response, I saw particular lines from the Classic page:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Number of likes&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;global_likers_count&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:XXX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;then number of followers&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;follower_count&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:XXX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;And lines from the New Page Experience:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Number of likes&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;XXX likes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;and number of followers&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;text&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;XXX followers&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;regular-expressions&#34;&gt;Regular Expressions
&lt;/h2&gt;&lt;p&gt;With these unique lines, it is now time to scrape the values out from them. And what a wonderful way to &lt;em&gt;capture&lt;/em&gt; them? &lt;strong&gt;Regex&lt;/strong&gt;, everyone’s favorite! (Sarcasm)&lt;/p&gt;
&lt;p&gt;I tested the regex using &lt;a class=&#34;link&#34; href=&#34;https://devtoys.app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;DevToys&lt;/strong&gt; on Windows 11&lt;/a&gt;, and the pattern is as literal &lt;del&gt;simple&lt;/del&gt; as possible (it just works!):&lt;/p&gt;
&lt;p&gt;Regex Pattern for Classic Pages:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;@&amp;#34;global_likers_count\&amp;#34;&amp;#34;\:(\d+)&amp;#34;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// For Likes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;@&amp;#34;follower_count\&amp;#34;&amp;#34;\:(\d+)&amp;#34;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// For Followers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;and for the New Page Experience:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;@&amp;#34;&amp;#34;&amp;#34;text&amp;#34;&amp;#34;:&amp;#34;&amp;#34;(\d+\.?\d*[K]|\d+) likes&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;@&amp;#34;&amp;#34;&amp;#34;text&amp;#34;&amp;#34;:&amp;#34;&amp;#34;(\d+\.?\d*[K]|\d+) followers&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;em&gt;Edit: Actually added literal &amp;ldquo;text&amp;rdquo; so it avoids inconsistent code and text from page source&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The regex pattern for the NPE was a little bit tricky since it changed how the numbers are shown - instead of the full numerical amount (e.g. 48,321), Facebook shortened it to 48.3K.&lt;/p&gt;
&lt;h2 id=&#34;full-scraping-code&#34;&gt;Full Scraping Code
&lt;/h2&gt;&lt;p&gt;I also changed how I get the response code, using &lt;strong&gt;PuppeteerSharp&lt;/strong&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;46
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;47
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;48
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;49
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;50
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;51
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;52
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; &lt;span class=&#34;cs&#34;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cs&#34;&gt;/// Scrape Facebook Page to get the number of Likes and Followers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cs&#34;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cs&#34;&gt;/// &amp;lt;param name=&amp;#34;facebookId&amp;#34;&amp;gt;The Facebook Page Id&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cs&#34;&gt;/// &amp;lt;returns&amp;gt;An array of string with the number of likes and followers&amp;lt;/returns&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;static&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Task&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;GetFacebookStats&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;facebookId&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;likes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;followers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;try&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;options&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;LaunchOptions&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Headless&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;ExecutablePath&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Puppeteer&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LaunchAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;options&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;null&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;var&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;page&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;browser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NewPageAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GoToAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;$&amp;#34;https://www.facebook.com/{facebookId}/about&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// Get the Page HTML content&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// and check for specific text whether the Page&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// is still using Classic or New Page Experience&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// Classic pages content: {&amp;#34;global_likers_count&amp;#34;:XXX},&amp;#34;follower_count&amp;#34;:XXX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// New Page Experience: &amp;#34;text&amp;#34;:&amp;#34;XXX likes&amp;#34; &amp;#34;text:&amp;#34;XXX followers&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;cs&#34;&gt;/// And use Regex to capture the numbers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;page&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GetContentAsync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Contains&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;follower_count&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;likes&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;global_likers_count\&amp;#34;&amp;#34;\:(\d+)&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Groups&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;followers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;follower_count\&amp;#34;&amp;#34;\:(\d+)&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Groups&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;likes&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;{0:n0}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;likes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;followers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Format&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;{0:n0}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;double&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;followers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;likes&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;&amp;#34;&amp;#34;text&amp;#34;&amp;#34;:&amp;#34;&amp;#34;(\d+\.?\d*[K]|\d+) likes&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Groups&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;followers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Regex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Match&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pageContent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;@&amp;#34;&amp;#34;&amp;#34;text&amp;#34;&amp;#34;:&amp;#34;&amp;#34;(\d+\.?\d*[K]|\d+) followers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Groups&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;likes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;followers&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;catch&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Exception&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Debug&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;WriteLine&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Message&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;default&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Overall, it’s a fun way to do regex and finally get the scraping (logging) to work again.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>A Look Back on 2022</title>
        <link>https://reddavid.me/p/a-look-back-on-2022/</link>
        <pubDate>Sat, 31 Dec 2022 20:03:45 +0800</pubDate>
        
        <guid>https://reddavid.me/p/a-look-back-on-2022/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/look-back.png" alt="Featured image of post A Look Back on 2022" /&gt;&lt;p&gt;Here we are, the last day of 2022, still felt weird with what happened with the world and to me.&lt;/p&gt;
&lt;p&gt;I started the year with a fresh start by taking a vacation (as usual) to celebrate the previous year ending in the province. But something really bad, I caught - Covid. Yes, I knew it was it when I felt it because my body went from 💯 to kaput in a couple of hours. I detailed most of it here &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/new-in-2022/#i-got-the-bad-v&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;in this post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That took me three weeks to rest up because of “weird” instructions before I went back to work again.&lt;/p&gt;
&lt;p&gt;It was also a good thing since I picked up playing &lt;a class=&#34;link&#34; href=&#34;https://store.steampowered.com/app/367520/Hollow_Knight/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hollow Knight&lt;/a&gt; during my isolation and quarantine weeks - and it was really good!&lt;/p&gt;
&lt;p&gt;I finished through the game at 112% in the coming weeks (or months? thanks Godhome!).&lt;/p&gt;
&lt;p&gt;I also resumed coding - &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/updating-rpnradio-mobile-app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;updating some apps&lt;/a&gt; and personal projects here and there.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/a-look-back-on-2022/github-contributions-graph.png&#34;
    alt=&#34;GitHub contributions graph&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;GitHub contributions graph&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I also got myself an &lt;a class=&#34;link&#34; href=&#34;https://www.elgato.com/en/stream-deck-mk2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Elgato Stream Deck MK.2&lt;/a&gt; (which I detailed &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/elgato-streamdeck/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;) to ease some workflows and which I mostly learned about &lt;a class=&#34;link&#34; href=&#34;https://www.figma.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Figma&lt;/a&gt;’s Auto layout feature to manage &lt;a class=&#34;link&#34; href=&#34;https://github.com/reddvid/mnml-strmdck-icns&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;my own custom icons for the Stream Deck&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As you can see my &lt;a class=&#34;link&#34; href=&#34;https://github.com/reddvid/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub&lt;/a&gt; contributions graph above, I barely did anything past April since I went and did some online course/s and read some books.&lt;/p&gt;
&lt;p&gt;In the Philippines, April/May is summertime and finally we had an “outing” - more details on this post &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/life-updates/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;. We also got to celebrate my mom&amp;rsquo;s 50th birthday.&lt;/p&gt;
&lt;p&gt;That last linked post above was my last one to prepare for our wedding on October. I didn’t think much of how it went well but it was a long time coming after 8 years being together.&lt;/p&gt;
&lt;p&gt;We went to Roheim in San Fabian, Pangasinan for our honeymoon and the place was empty (besides the workers). I don’t know if we were lucky to spend time alone but it was worthwhile. We actually vlogged the place below:&lt;/p&gt;
&lt;div class=&#34;video-wrapper&#34;&gt;
    &lt;iframe loading=&#34;lazy&#34; 
            src=&#34;https://www.youtube.com/embed/kBeX_ON3Pf4&#34; 
            allowfullscreen 
            title=&#34;YouTube Video&#34;
    &gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;November was still kinda busy setting up our own place we can call home, opening gifts, moving some things, and actually buying furniture and whatever.&lt;/p&gt;
&lt;p&gt;I also got myself a PC (finally!) before the year ends. I ended up sourcing the parts at &lt;a class=&#34;link&#34; href=&#34;https://pcx.com.ph/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PC Express&lt;/a&gt; after comparing to 5 stores. I also built it myself - took 3.5 hours and sadly no vlog or documentation - which I intend to change in 2023 (gotta love myself more!). &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/gaming#pc-specs&#34; &gt;See PC Specs&lt;/a&gt;&lt;/p&gt;
&lt;center&gt;
&lt;blockquote class=&#34;instagram-media&#34; data-instgrm-captioned data-instgrm-permalink=&#34;https://www.instagram.com/p/CmuP94gB4_5/?utm_source=ig_embed&amp;amp;utm_campaign=loading&#34; data-instgrm-version=&#34;14&#34; style=&#34; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&#34;&gt;&lt;div style=&#34;padding:16px;&#34;&gt; &lt;a href=&#34;https://www.instagram.com/p/CmuP94gB4_5/?utm_source=ig_embed&amp;amp;utm_campaign=loading&#34; style=&#34; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&#34; target=&#34;_blank&#34;&gt; &lt;div style=&#34; display: flex; flex-direction: row; align-items: center;&#34;&gt; &lt;div style=&#34;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&#34;&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;padding: 19% 0;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;display:block; height:50px; margin:0 auto 12px; width:50px;&#34;&gt;&lt;svg width=&#34;50px&#34; height=&#34;50px&#34; viewBox=&#34;0 0 60 60&#34; version=&#34;1.1&#34; xmlns=&#34;https://www.w3.org/2000/svg&#34; xmlns:xlink=&#34;https://www.w3.org/1999/xlink&#34;&gt;&lt;g stroke=&#34;none&#34; stroke-width=&#34;1&#34; fill=&#34;none&#34; fill-rule=&#34;evenodd&#34;&gt;&lt;g transform=&#34;translate(-511.000000, -20.000000)&#34; fill=&#34;#000000&#34;&gt;&lt;g&gt;&lt;path d=&#34;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&#34;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&#34;padding-top: 8px;&#34;&gt; &lt;div style=&#34; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&#34;&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;padding: 12.5% 0;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&#34;&gt;&lt;div&gt; &lt;div style=&#34;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&#34;&gt;&lt;/div&gt; &lt;div style=&#34;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;margin-left: 8px;&#34;&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;margin-left: auto;&#34;&gt; &lt;div style=&#34; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&#34;&gt;&lt;/div&gt; &lt;div style=&#34; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&#34;&gt;&lt;/div&gt; &lt;div style=&#34; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style=&#34;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&#34;&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=&#34; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&#34;&gt;&lt;a href=&#34;https://www.instagram.com/p/CmuP94gB4_5/?utm_source=ig_embed&amp;amp;utm_campaign=loading&#34; style=&#34; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;&#34; target=&#34;_blank&#34;&gt;A post shared by David Ballesteros (@reddvid)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async src=&#34;//www.instagram.com/embed.js&#34;&gt;&lt;/script&gt;
&lt;/center&gt;
&lt;p&gt;That’s it for my 2022, how did your end go? Wish you a good new year ahead!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>SIM Registration starts tomorrow (Dec 27)</title>
        <link>https://reddavid.me/p/sim-registration-starts-tomorrow-dec-27/</link>
        <pubDate>Mon, 26 Dec 2022 02:27:52 +0800</pubDate>
        
        <guid>https://reddavid.me/p/sim-registration-starts-tomorrow-dec-27/</guid>
        <description>&lt;p&gt;There&amp;rsquo;s a new law signed last October requiring to register Subscriber Identity Module (SIM) - the SIM Card Registration Act or &lt;a class=&#34;link&#34; href=&#34;https://www.officialgazette.gov.ph/2022/10/10/republic-act-no-11934/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Republic Act 11934&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;when&#34;&gt;When
&lt;/h2&gt;&lt;p&gt;Starting tomorrow, December 27 (15 days after &lt;a class=&#34;link&#34; href=&#34;https://lawphil.net/statutes/repacts/ra2022/irr_11934_2022.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IRR&lt;/a&gt; publication), the registration websites from each telco networks will be live for all existing and new subscribers.&lt;/p&gt;
&lt;h2 id=&#34;where&#34;&gt;Where
&lt;/h2&gt;&lt;p&gt;Here are the websites for networks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Smart/TNT/Sun&lt;/strong&gt;
&lt;a class=&#34;link&#34; href=&#34;https://smart.com.ph/simreg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://smart.com.ph/simreg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Globe/TM/GOMO&lt;/strong&gt;
&lt;a class=&#34;link&#34; href=&#34;https://new.globe.com.ph/simreg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://new.globe.com.ph/simreg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DITO&lt;/strong&gt;
&lt;a class=&#34;link&#34; href=&#34;https://dito.ph/sim-registration&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://dito.ph/sim-registration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;mailto://hi@reddavid.me?subject=BrokenLink&#34; &gt;Report broken link&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;who&#34;&gt;Who
&lt;/h2&gt;&lt;p&gt;All SIM card users - prepaid or postpaid, local and foreign citizens (living in the country), SIM-based internet (Globe at Home, Smart Bro). Businesses and corporate entities.&lt;/p&gt;
&lt;h2 id=&#34;what-requirements&#34;&gt;What (Requirements)
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Users/subscribers are required to provide the following:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Full Name&lt;/li&gt;
&lt;li&gt;Date of Birth&lt;/li&gt;
&lt;li&gt;Gender&lt;/li&gt;
&lt;li&gt;Address of residency&lt;/li&gt;
&lt;li&gt;Government-issued ID:
&lt;ul&gt;
&lt;li&gt;Passport&lt;/li&gt;
&lt;li&gt;SSS ID&lt;/li&gt;
&lt;li&gt;Driver&amp;rsquo;s License&lt;/li&gt;
&lt;li&gt;National ID&lt;/li&gt;
&lt;li&gt;GSIS e-Card&lt;/li&gt;
&lt;li&gt;Firearm&amp;rsquo;s LTOP ID&lt;/li&gt;
&lt;li&gt;PRC ID&lt;/li&gt;
&lt;li&gt;IBP ID&lt;/li&gt;
&lt;li&gt;OWWA ID&lt;/li&gt;
&lt;li&gt;BIR ID&lt;/li&gt;
&lt;li&gt;Voter&amp;rsquo;s ID&lt;/li&gt;
&lt;li&gt;Senior Citizen&amp;rsquo;s Card&lt;/li&gt;
&lt;li&gt;PWDs card&lt;/li&gt;
&lt;li&gt;Others*&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For minor (ages below 18) users&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The SIM card will be registered under the parent/guardian&amp;rsquo;s name with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Consent of Guardian/Parent&lt;/li&gt;
&lt;li&gt;Government-issued ID of Guardian/Parent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For Businesses&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SEC/DTI Certificate of Registration&lt;/li&gt;
&lt;li&gt;Board Resolution designating the authorized representative or a Special Power of Attorney (SPA)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For tourists&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Passport&lt;/li&gt;
&lt;li&gt;Proof of address in the Philippines&lt;/li&gt;
&lt;li&gt;Return ticket to own country showing date/time of departure from the Philippines&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;For foreigners with non-tourist visa&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Passport&lt;/li&gt;
&lt;li&gt;Proof of address in the Philippines&lt;/li&gt;
&lt;li&gt;Other pertinent documents such as:
&lt;ul&gt;
&lt;li&gt;Alien Employment Permit issued by DOLE&lt;/li&gt;
&lt;li&gt;ACRI Card by Bureau of Immigration or other official ID issued by other visa-issuing agency&lt;/li&gt;
&lt;li&gt;School registration and ID for students&lt;/li&gt;
&lt;li&gt;For Persons of Concern or POCs - travel or admission document issued by DoJ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;other-useful-links-faqs&#34;&gt;Other Useful Links (FAQs)
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://smart.com.ph/About/newsroom/full-news/2022/12/19/smart-releases-sim-registration-faqs-for-all-smart-and-tnt-customers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Smart&lt;/strong&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://www.globe.com.ph/register-sim-card.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Globe&lt;/strong&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://dito.ph/sim-registration&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;DITO&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>And... it&#39;s December</title>
        <link>https://reddavid.me/p/and...-its-december/</link>
        <pubDate>Thu, 01 Dec 2022 01:21:59 +0800</pubDate>
        
        <guid>https://reddavid.me/p/and...-its-december/</guid>
        <description>&lt;p&gt;How many times have I apologized for not posting on my blog? 😅&lt;/p&gt;
&lt;p&gt;Let’s just recap, shall we?&lt;/p&gt;
&lt;h2 id=&#34;i-got-married&#34;&gt;I Got Married
&lt;/h2&gt;&lt;p&gt;Yes, people still marry despite the hardships in this f-ing country, and I am one of them last October. We both felt it is time after 8 years of being together.&lt;/p&gt;
&lt;p&gt;The prior months were not all wedding-preparations as I read and took some online courses and learning programs - more about &lt;a class=&#34;link&#34; href=&#34;https://flutter.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Flutter&lt;/a&gt;, and leadership/project management.&lt;/p&gt;
&lt;h2 id=&#34;learning-in-depth-flutter&#34;&gt;Learning In-Depth Flutter
&lt;/h2&gt;&lt;p&gt;The infamous Angela Yu’s Flutter bootcamp course on &lt;a class=&#34;link&#34; href=&#34;https://www.udemy.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Udemy&lt;/a&gt; has been sitting on my learning for a few months and I finally decided to take it on since I really really have to update and improve my Flutter/Dart coding - and to update some apps.&lt;/p&gt;
&lt;p&gt;I faced some problems with the course since it was outdated to the current Flutter version but it all went good, thanks for the updated documentation of Flutter and &lt;a class=&#34;link&#34; href=&#34;http://pub.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pub.dev&lt;/a&gt; packages.&lt;/p&gt;
&lt;p&gt;I learned DRY (&lt;strong&gt;d&lt;/strong&gt;on’t &lt;strong&gt;r&lt;/strong&gt;epeat &lt;strong&gt;y&lt;/strong&gt;ourself) - again - especially with Flutter’s all code UI. So, learning to convert most reusable Widgets to “components” is fun.&lt;/p&gt;
&lt;p&gt;I also learned a few techniques and best practices.&lt;/p&gt;
&lt;h2 id=&#34;updating-rpn-radio-app&#34;&gt;Updating RPN Radio App
&lt;/h2&gt;&lt;p&gt;After my “wedding” break from the office, I came back with the motivation to update this app. Before updating, there was a “downgrade” with the app logic which disabled viewing stations’ &lt;em&gt;live&lt;/em&gt; and &lt;em&gt;offline&lt;/em&gt; status.&lt;/p&gt;
&lt;p&gt;And the app needed a UI/UX refresh - well at least for the player part.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/12-22/rpnradio.png&#34;
    alt=&#34;RPN Radio App UI before and after&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;RPN Radio App UI before and after (Note: After image was taken when stations were offline)&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The app is now available to download for free on &lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=com.rpnradio.radiov1&amp;amp;hl=en&amp;amp;gl=US&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Play Store&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://apps.apple.com/us/app/rpn-radio/id1571699396&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Apple App Store&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;next&#34;&gt;Next?
&lt;/h2&gt;&lt;p&gt;I also tested Flutter’s web app by building a working web version of my simple app, &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/zipcodeph-app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ZIP Code PH&lt;/a&gt;. It’s really really simple as of this moment.&lt;/p&gt;
&lt;p&gt;I will be also going in-depth with Firebase and Firebase Auth to improve the mobile apps.&lt;/p&gt;
&lt;h2 id=&#34;gaming-and-streaming&#34;&gt;Gaming and Streaming
&lt;/h2&gt;&lt;p&gt;Sadly, after coming back from the break, I felt no energy to play games - continue playing Assassin’s Creed: Odyssey or any other games on my Xbox PC game pass. And whenever I start a new game, I feel bored can’t motivate myself to continue playing.&lt;/p&gt;
&lt;p&gt;I tried to play Dead Space, Battlefield 4, and VALORANT this November but also felt nothing.&lt;/p&gt;
&lt;p&gt;But there is this game called 7 Days to Die on Steam that I am currently playing (not regularly, though) and I’ll see if it’s worth playing through.&lt;/p&gt;
&lt;p&gt;Catch me on &lt;a class=&#34;link&#34; href=&#34;https://www.facebook.com/RedDavidGG&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Facebook Gaming&lt;/a&gt; when I go live, or on my &lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/@reddavidgg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube gaming channel&lt;/a&gt; for uploads.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Life Updates</title>
        <link>https://reddavid.me/p/life-updates/</link>
        <pubDate>Wed, 08 Jun 2022 03:12:03 +0800</pubDate>
        
        <guid>https://reddavid.me/p/life-updates/</guid>
        <description>&lt;img src="https://reddavid.me/p/life-updates/life-update.png" alt="Featured image of post Life Updates" /&gt;&lt;p&gt;As you might have noticed, I haven&amp;rsquo;t blogged in more than a month (since April 27th). So here are some highlights and what has happened:&lt;/p&gt;
&lt;h2 id=&#34;outing-before-may&#34;&gt;Outing before May
&lt;/h2&gt;&lt;p&gt;First week I got to join an outing to a private pool to unwind. The travel is quite a pain since it was on a Friday night. It was a simple company get-together but so glad I came.&lt;/p&gt;
&lt;h2 id=&#34;election-season&#34;&gt;Election Season
&lt;/h2&gt;&lt;p&gt;We are yet again elect the two of the highest positions of the government and I got a week off from work (too bad they won&amp;rsquo;t let me have a laptop - so I could at least check back when needed). I got to spend my mom&amp;rsquo;s 50th birthday (again on a location with a pool) where I emcee&amp;rsquo;d for a bit.&lt;/p&gt;
&lt;p&gt;Going home also means I got to eat better and healthier. So sad I spent most inside since it was extremely hot on our place - so I got to continue reading some books.&lt;/p&gt;
&lt;h2 id=&#34;reading-books&#34;&gt;Reading Books
&lt;/h2&gt;&lt;p&gt;As said on a &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/new-in-2022/&#34; &gt;previous blog post&lt;/a&gt;, I finished Atomic Habits and finished another two books: Outliers and Essentialism. Reading this three books made me make some changes in my life especially with Essentialism which particularly affected my focus - in work, play, and life.&lt;/p&gt;
&lt;p&gt;I began journaling daily activities, avoid doing &amp;ldquo;unessential&amp;rdquo; things, and take and &amp;ldquo;think&amp;rdquo; things slow.&lt;/p&gt;
&lt;p&gt;My reading list as of now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Subtle Art of Not Giving a F*ck&lt;/li&gt;
&lt;li&gt;Everything is F*cked&lt;/li&gt;
&lt;li&gt;Zero to One&lt;/li&gt;
&lt;li&gt;Designing for Work&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My reading is on and off to &amp;ldquo;accommodate&amp;rdquo; other things like taking short online courses on Udemy, doing some coding courses, and of course doing essential work.&lt;/p&gt;
&lt;h2 id=&#34;plans&#34;&gt;Plans?
&lt;/h2&gt;&lt;p&gt;I&amp;rsquo;ll go ahead and say I might not be posting again anytime soon (or maybe if motivation comes) since I am keeping my self busy with work, and &amp;ldquo;essential&amp;rdquo; activities. I also stopped playing video games which is sad but it also means I get to read books or code.&lt;/p&gt;
&lt;h3 id=&#34;mastering-dotnet&#34;&gt;Mastering dotnet
&lt;/h3&gt;&lt;p&gt;Took so long but I think I really get to at least master .NET and C#.&lt;/p&gt;
&lt;h3 id=&#34;manage-myself&#34;&gt;Manage Myself
&lt;/h3&gt;&lt;p&gt;Just think about it yourself.&lt;/p&gt;
&lt;h3 id=&#34;tie-the-knot&#34;&gt;Tie the Knot
&lt;/h3&gt;&lt;p&gt;Getting closer to October for a new chapter.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;That&amp;rsquo;s it for me, May went by so fast and it&amp;rsquo;s now June, I&amp;rsquo;m getting older in a few days.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Building My Own Discord Bot</title>
        <link>https://reddavid.me/p/building-my-own-discord-bot/</link>
        <pubDate>Wed, 27 Apr 2022 02:03:51 +0800</pubDate>
        
        <guid>https://reddavid.me/p/building-my-own-discord-bot/</guid>
        <description>&lt;img src="https://reddavid.me/p/building-my-own-discord-bot/alfred-bot.png" alt="Featured image of post Building My Own Discord Bot" /&gt;&lt;p&gt;A new coding adventure begins! I always wanted to get deep with JavaScript specifically NodeJS to build apps and I never got into it due to confusion into what it is, what it can do, what UI framework to use. Though in this phase of learning NodeJS, I skipped building the UI since the bot is all code.&lt;/p&gt;
&lt;p&gt;Let’s get into it!&lt;/p&gt;
&lt;h2 id=&#34;intro&#34;&gt;Intro
&lt;/h2&gt;&lt;p&gt;Why build a bot from scratch? Most free Discord bots out there does a wide-range of tasks from automessaging, ping/share Twitch links, play music, XP level system, but the features are somehow pay-to-use and managing more than 2 bots is somehow distracting for my small server.&lt;/p&gt;
&lt;p&gt;I also was encouraged after building a very simple NodeJS app that changes my custom status on Discord with a single button using Flutter and Discord user token.&lt;/p&gt;
&lt;h2 id=&#34;building-with-discordjs&#34;&gt;Building with DiscordJS
&lt;/h2&gt;&lt;p&gt;Before doing the actual code, I got overwhelmed with more coding jargons like OAuth, tokens, intents, etc. - since I haven’t really used them in my personal projects. And ever since coding with C# and/or Flutter/Dart, building apps with their respective documentation, examples, and &lt;em&gt;playground&lt;/em&gt; makes it easier, which then means that getting started with &lt;a class=&#34;link&#34; href=&#34;https://discord.js.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DiscordJS&lt;/a&gt; somewhat confused me at first.&lt;/p&gt;
&lt;h3 id=&#34;create-a-bot-and-get-its-token&#34;&gt;Create a Bot and Get It’s Token
&lt;/h3&gt;&lt;p&gt;This should be fairly easy to get, head over to &lt;a class=&#34;link&#34; href=&#34;https://discord.com/developers/applications&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord Developer Portal&lt;/a&gt; and build an application/bot. Note: The tutorials online might be a little outdated from what the settings.&lt;/p&gt;
&lt;h3 id=&#34;install-nodejs&#34;&gt;Install NodeJS
&lt;/h3&gt;&lt;p&gt;This should be included in Windows installation really but they have &lt;a class=&#34;link&#34; href=&#34;https://nodejs.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;guide online&lt;/a&gt;. Be careful, installing node may produce errors on terminal due to a bug in setting environment path.&lt;/p&gt;
&lt;h3 id=&#34;use-vscode&#34;&gt;Use VSCode
&lt;/h3&gt;&lt;p&gt;Please.&lt;/p&gt;
&lt;h3 id=&#34;bot-capabilities&#34;&gt;Bot Capabilities
&lt;/h3&gt;&lt;p&gt;As of this writing, here are a few capabilities I put on my Discord bot:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Welcome message to new members&lt;/li&gt;
&lt;li&gt;Farewell message to tell who left&lt;/li&gt;
&lt;li&gt;Twitch Ping - sends a message when I go live&lt;/li&gt;
&lt;li&gt;YouTube Ping - sends a message when I post a new video on my gaming channel&lt;/li&gt;
&lt;li&gt;Roles selection via emojis&lt;/li&gt;
&lt;li&gt;Few slash commands&lt;/li&gt;
&lt;li&gt;XP and Level system&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;heroku-deployment&#34;&gt;Heroku Deployment
&lt;/h2&gt;&lt;p&gt;Running the app locally works but it’s not good practice so I once learned a new platform/service with &lt;a class=&#34;link&#34; href=&#34;https://www.heroku.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Heroku&lt;/a&gt;, it hosts and deploys NodeJS apps for free which allows my bot to run online.&lt;/p&gt;
&lt;h2 id=&#34;codes&#34;&gt;Codes?
&lt;/h2&gt;&lt;p&gt;I will share the codes/tutorial soon but this post will just serve as an announcement or invitation to share what I have been doing lately.&lt;/p&gt;
&lt;h2 id=&#34;try-it-out&#34;&gt;Try It Out
&lt;/h2&gt;&lt;p&gt;Shamelessly, you can join our Discord community, it now houses people who watches my gaming streams, likes my coding, and just a place to hangout for friends and family.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/5dNqkjcTxZ&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Join our Discord Community, Bahay ni Kuya&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Tech News April</title>
        <link>https://reddavid.me/p/tech-news-april/</link>
        <pubDate>Wed, 06 Apr 2022 01:30:32 +0800</pubDate>
        
        <guid>https://reddavid.me/p/tech-news-april/</guid>
        <description>&lt;img src="https://reddavid.me/p/tech-news-april/technews.png" alt="Featured image of post Tech News April" /&gt;&lt;h2 id=&#34;windows-live-recorded-event&#34;&gt;Windows Live Recorded Event
&lt;/h2&gt;&lt;p&gt;I was just anticipating a single event at 11PM and it was Microsoft&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/windows/business/event&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Windows Powers the Future of Hybrid Work&lt;/strong&gt;&lt;/a&gt; live (recorded) event.&lt;/p&gt;
&lt;p&gt;They announced security improvements and new features coming later this year focused first on businesses. Here are some I got from the stream:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Security for accessing organization in personal computers&lt;/li&gt;
&lt;li&gt;Windows Cloud PC with new security features and provisioning for IT Admins&lt;/li&gt;
&lt;li&gt;Voice Clarity for meetings&lt;/li&gt;
&lt;li&gt;Improved accessibility/inclusivity features in voice recognition&lt;/li&gt;
&lt;li&gt;User productivity&lt;/li&gt;
&lt;li&gt;New and improved Windows 11 Security&lt;/li&gt;
&lt;li&gt;File Explorer tabs&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;video-wrapper&#34;&gt;
    &lt;iframe loading=&#34;lazy&#34; 
            src=&#34;https://www.youtube.com/embed/0vsh1KZ1yws&#34; 
            allowfullscreen 
            title=&#34;YouTube Video&#34;
    &gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;And checking Twitter after the stream, there were a lot more announced that time apparently.&lt;/p&gt;
&lt;h2 id=&#34;firefox-100&#34;&gt;Firefox 100
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.mozilla.org/en-US/firefox/new/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Mozilla Firefox&lt;/strong&gt;&lt;/a&gt; is now releasing their 100th version, quoting there first 3-digit Firefox on their Beta channel.&lt;/p&gt;
&lt;div style=&#34;display: flex;
justify-content: center;&#34;&gt;
&lt;/div&gt;
&lt;h2 id=&#34;unreal-engine-5&#34;&gt;Unreal Engine 5
&lt;/h2&gt;&lt;p&gt;Can we even differentiate reality to &lt;a class=&#34;link&#34; href=&#34;https://www.unrealengine.com/en-US/unreal-engine-5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Unreal Engine 5&lt;/strong&gt;&lt;/a&gt; graphics anymore?&lt;/p&gt;
&lt;figure&gt;
   &lt;video class=&#34;video-shortcode&#34; preload=&#34;auto&#34; controls width=&#34;90%&#34;&gt;
      &lt;source src=&#34;ue5.mp4&#34; type=&#34;video/mp4&#34;&gt;
      There should have been a video here but your browser does not seem
      to support it.
   &lt;/video&gt;
   &lt;figcaption&gt;Unreal Engine 5 City Sample&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;apple-ios-155-developer-beta&#34;&gt;Apple iOS 15.5 Developer Beta
&lt;/h2&gt;&lt;p&gt;After a long break of not releasing a new beta build, the wait is now over. The download size is 5.66GB on an iPhone 11 15.4.1.&lt;/p&gt;
&lt;p&gt;This beta&amp;rsquo;s release notes are just SDK updates and includes some small Universal Control issues.
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/tech-news-april/ios15.5beta.png&#34; width=&#34;60%&#34;&gt;
&lt;/figure&gt;
&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Clipchamp 1080p Exports is Now FREE</title>
        <link>https://reddavid.me/p/clipchamp-1080p-exports-is-now-free/</link>
        <pubDate>Mon, 04 Apr 2022 14:51:56 +0800</pubDate>
        
        <guid>https://reddavid.me/p/clipchamp-1080p-exports-is-now-free/</guid>
        <description>&lt;img src="https://reddavid.me/p/clipchamp-1080p-exports-is-now-free/clipchamp.png" alt="Featured image of post Clipchamp 1080p Exports is Now FREE" /&gt;&lt;p&gt;In case you missed it, Microsoft acquired a web-based video editing app known as &lt;a class=&#34;link&#34; href=&#34;clipchamp.com&#34; &gt;Clipchamp&lt;/a&gt; back in Q4 2021. And after they finally put the app into Windows to become a slightly better editing tool (also on Xbox?), but all it gave to users are disappointment because of features locked behind &lt;a class=&#34;link&#34; href=&#34;https://www.windowscentral.com/microsofts-clipchamp-video-editing-tools-are-underbaked&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;overpriced subscription&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/clipchamp-1080p-exports-is-now-free/img/clipchamp-editor.png&#34;
    alt=&#34;Clipchamp Editor&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Clipchamp Editor&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;who-exports-at-480p-give-us-1080p-please&#34;&gt;Who Exports at 480p? Give us 1080p, Please!
&lt;/h2&gt;&lt;p&gt;Yes, who does? And surprisingly, Clichamp offers free users to ONLY export their video projects into 480p.&lt;/p&gt;
&lt;div style=&#34;display: flex;
justify-content: center;&#34;&gt;
&lt;/div&gt;
&lt;h3 id=&#34;good-news&#34;&gt;Good News!
&lt;/h3&gt;&lt;p&gt;What a shame, but as of this writing I got an email from Clipchamp that 1080p exports is now available for everyone.&lt;/p&gt;
&lt;p&gt;1080p exports is now the base resolution for all tiers of plans:
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/clipchamp-1080p-exports-is-now-free/img/clipchamp-plans.png&#34;
    alt=&#34;Clipchamp plans&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Clipchamp Plans&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Though I am yet to use this app, I&amp;rsquo;ve read online that it&amp;rsquo;s somehow intuitive by the online-based resources: templates, music &amp;amp; SFX, stock images, graphics, filters, effects, etc. that are suitable for quick and effortless video creations.&lt;/p&gt;
&lt;p&gt;Check the app online at &lt;a class=&#34;link&#34; href=&#34;app.clipchamp.com&#34; &gt;&lt;strong&gt;app.clipchamp.com&lt;/strong&gt;&lt;/a&gt; or download from &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/store/productId/9P1J8S7CCWWT&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Store&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Finishing this MS Office Course on Udemy. (Or Am I?)</title>
        <link>https://reddavid.me/p/finishing-msoffice-udemy-course/</link>
        <pubDate>Mon, 04 Apr 2022 02:21:21 +0800</pubDate>
        
        <guid>https://reddavid.me/p/finishing-msoffice-udemy-course/</guid>
        <description>&lt;img src="https://reddavid.me/p/finishing-msoffice-udemy-course/udemy-og.png" alt="Featured image of post Finishing this MS Office Course on Udemy. (Or Am I?)" /&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.udemy.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Udemy&lt;/a&gt; is a website catering online courses for everyone who wants to learn something new, continue learning, and to expand the current knowledge of a particular topic. And this time I wanted to advance my knowledge with Microsoft Office.&lt;/p&gt;
&lt;p&gt;Udemy offers vast courses by frequently promoting sales. I actually got this complete course way back 2020 and I have been on and off the course by selecting the lecture topics to focus on. And also when I got other current shorter courses more appropriate on that time.&lt;/p&gt;
&lt;h2 id=&#34;advancing-my-ms-office-knowledge&#34;&gt;Advancing my MS Office Knowledge
&lt;/h2&gt;&lt;p&gt;The course is entitled, &lt;a class=&#34;link&#34; href=&#34;https://www.udemy.com/course/microsoft-office-excel-word-access-powerpoint/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ultimate Microsoft Office; Excel, Word, PowerPoint &amp;amp; Access&lt;/a&gt; - though they added and updated it to include the 2019 and 365 updates and other Office products. I got it for around 700PHP, and I was overwhelmed with how many lectures were there for all Office products:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Excel&lt;/li&gt;
&lt;li&gt;Word&lt;/li&gt;
&lt;li&gt;PowerPoint&lt;/li&gt;
&lt;li&gt;Outlook&lt;/li&gt;
&lt;li&gt;Access&lt;/li&gt;
&lt;li&gt;OneNote&lt;/li&gt;
&lt;li&gt;Teams&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, there are 625 lectures with the videos totaling 68.5 hours. The topics start with an Office program explaining from the basics into advanced. And as stated on the course page, this is What I Will Learn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Learn the essential and advanced Microsoft Office&lt;/li&gt;
&lt;li&gt;Skills in Excel, Word, PowerPoint, Outlook, Teams and Access&lt;/li&gt;
&lt;li&gt;Learn practical methods to backup and recover your&lt;/li&gt;
&lt;li&gt;Excel spreadsheets and never lose data&lt;/li&gt;
&lt;li&gt;Discover the essentials of using formulas and functions in Excel&lt;/li&gt;
&lt;li&gt;Learn practical methods to sort and filter your data in Excel&lt;/li&gt;
&lt;li&gt;Learn how to insert shapes, graphics and pictures to add some &amp;ldquo;zing&amp;rdquo; to your PowerPoint&lt;/li&gt;
&lt;li&gt;Wow your audience by adding animations, audio and video to PowerPoint&lt;/li&gt;
&lt;li&gt;Learn time saving techniques including how to copy slides, and exporting your presentation&lt;/li&gt;
&lt;li&gt;Learn Word tools including using columns, indents, footers, borders and watermarks.&lt;/li&gt;
&lt;li&gt;Learn how to correctly Print envelopes and labels in Word&lt;/li&gt;
&lt;li&gt;Insert professional pictures and graphics in your Word document&lt;/li&gt;
&lt;li&gt;Sorting information and running queries in Access&lt;/li&gt;
&lt;li&gt;Discover how to into import data from Excel in Access&lt;/li&gt;
&lt;li&gt;How to compact, repair and backup your Access database&lt;/li&gt;
&lt;li&gt;How to get set up in Outlook&lt;/li&gt;
&lt;li&gt;How to customize your mailbox and view&lt;/li&gt;
&lt;li&gt;How to organize and manage your mail including ignoring, flagging and conditional formatting&lt;/li&gt;
&lt;li&gt;How to use signatures and voting buttons&lt;/li&gt;
&lt;li&gt;Working with the Outlook Calendar, including creating meetings and appointments&lt;/li&gt;
&lt;li&gt;and more!!!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I started with Word even though it&amp;rsquo;s the most app I used and most familiar with. Then Outlook, OneNote, Excel, Teams, and now currently into PowerPoint. I actually watched the basics videos with 1.5x-1.75x speed since I already have a good understanding with it since I have been using a computer back 2006-ish.&lt;/p&gt;
&lt;p&gt;Now, can I finish it this April? Or do I still have to stop for the MS Access lectures (does anyone ever use Access)?&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Elgato Stream Deck MK.2 (Must Have Tech)</title>
        <link>https://reddavid.me/p/elgato-streamdeck/</link>
        <pubDate>Sun, 03 Apr 2022 02:14:42 +0800</pubDate>
        
        <guid>https://reddavid.me/p/elgato-streamdeck/</guid>
        <description>&lt;img src="https://reddavid.me/p/elgato-streamdeck/streamdeck-og.png" alt="Featured image of post Elgato Stream Deck MK.2 (Must Have Tech)" /&gt;&lt;p&gt;I recently bought an Elgato Stream Deck MK.2 which I should&amp;rsquo;ve made long ago. It&amp;rsquo;s an expensive piece of a great tech which I never thought I needed.&lt;/p&gt;
&lt;p&gt;I hesitated to get one before because of the price but until I knew that the deck can be used just fine without the &amp;ldquo;unchangeable&amp;rdquo; height stand. And also, the time-save it can bring definitely helps in daily tasks.&lt;/p&gt;
&lt;h2 id=&#34;unboxing-where&#34;&gt;Unboxing, where?
&lt;/h2&gt;&lt;p&gt;Unfortunately, I never got to take a video or even photos of the unboxing. The box contains the device, the detachable USB-C cable, and the stand. Sadly, it does not include a free faceplate to interchange the default black plain plate.&lt;/p&gt;
&lt;h2 id=&#34;setting-up&#34;&gt;Setting Up
&lt;/h2&gt;&lt;p&gt;The device requires the &lt;a class=&#34;link&#34; href=&#34;https://www.elgato.com/en/downloads&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Stream Deck application&lt;/a&gt; to actually setup what actions the buttons will do.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/elgato-streamdeck/img/streamdeck-app.png&#34;
    alt=&#34;Stream Deck Software&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Stream Deck Software&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;There are also lots of useful community-made plugins inside the Stream Deck&amp;rsquo;s Store that you will find very useful.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/elgato-streamdeck/img/streamdeck-plugins-store.png&#34;
    alt=&#34;Plugins Store&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Plugins Store&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Setting the device is technically easy but I felt that some icon designs (the ones I needed) are very basic and were not standard.&lt;/p&gt;
&lt;p&gt;So I try to make my own minimal but on-context (for me) icons.&lt;/p&gt;
&lt;h2 id=&#34;making-custom-icons&#34;&gt;Making Custom Icons
&lt;/h2&gt;&lt;p&gt;After reading Elgato&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://developer.elgato.com/documentation/stream-deck/sdk/style-guide/#asset-sizes-and-colors&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Style Guide Documentation&lt;/a&gt; for making Stream Deck Icons, I decided to start doing my key icons.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Icon&lt;/th&gt;
          &lt;th&gt;Size&lt;/th&gt;
          &lt;th&gt;@2x&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Key Icon&lt;/td&gt;
          &lt;td&gt;72x72 px&lt;/td&gt;
          &lt;td&gt;144x144 px&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;figcaption&gt;Elgato&#39;s Key Icon standard size&lt;/figcaption&gt;
&lt;p&gt;Thankfully, I use &lt;a class=&#34;link&#34; href=&#34;figma.com&#34; &gt;Figma&lt;/a&gt; for wireframing/designing graphics so it is the best tool to create these icons. Plus, it has an export button that upscale the design @2x.&lt;/p&gt;
&lt;h3 id=&#34;previews&#34;&gt;Previews
&lt;/h3&gt;&lt;p&gt;Here are some of the icons in action (Stream Deck mockup).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/elgato-streamdeck/img/profile-default.png&#34; width=&#34;764&#34;  height=&#34;594&#34;  srcset=&#34;https://reddavid.me/p/elgato-streamdeck/img/profile-default_hu_3a5430ccdc75501d.png 480w, https://reddavid.me/p/elgato-streamdeck/img/profile-default_hu_e149c394be234cca.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Default Profile&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;128&#34;
	data-flex-basis=&#34;308px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/elgato-streamdeck/img/profile-figma.png&#34; width=&#34;764&#34;  height=&#34;594&#34;  srcset=&#34;https://reddavid.me/p/elgato-streamdeck/img/profile-figma_hu_67703aecb12d71de.png 480w, https://reddavid.me/p/elgato-streamdeck/img/profile-figma_hu_cd9365f2c024870f.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Figma Profile&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;128&#34;
	data-flex-basis=&#34;308px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/elgato-streamdeck/img/folder-websites.png&#34; width=&#34;764&#34;  height=&#34;594&#34;  srcset=&#34;https://reddavid.me/p/elgato-streamdeck/img/folder-websites_hu_18ee3549a500b059.png 480w, https://reddavid.me/p/elgato-streamdeck/img/folder-websites_hu_9f4e2d5c489e234c.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Websites Folder&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;128&#34;
	data-flex-basis=&#34;308px&#34; &gt;&lt;/p&gt;
&lt;p&gt;The icons are available in my Github repo: &lt;a class=&#34;link&#34; href=&#34;https://github.com/reddvid/mnml-strmdck-icns&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mnml-strmdck-icns&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I will soon share the Figma file.&lt;/p&gt;
&lt;h3 id=&#34;tools-and-resources&#34;&gt;Tools and Resources
&lt;/h3&gt;&lt;p&gt;Big thanks for the free &amp;amp; open tools and resources I used:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Figma (and it&amp;rsquo;s Community)&lt;/li&gt;
&lt;li&gt;PowerToys&lt;/li&gt;
&lt;li&gt;Wikimedia Commons&lt;/li&gt;
&lt;li&gt;SVG Export Chrome Extension&lt;/li&gt;
&lt;li&gt;Character Map UWP&lt;/li&gt;
&lt;li&gt;Bootstrap Icons&lt;/li&gt;
&lt;li&gt;Coffee&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tips-and-tricks&#34;&gt;Tips and Tricks
&lt;/h2&gt;&lt;p&gt;There are a lot of things the Stream Deck can do, like me, I scour the internet (mostly YouTube) for any tips and tricks.&lt;/p&gt;
&lt;div class=&#34;video-wrapper&#34;&gt;
    &lt;iframe loading=&#34;lazy&#34; 
            src=&#34;https://www.youtube.com/embed/POt4-8b0iPE&#34; 
            allowfullscreen 
            title=&#34;YouTube Video&#34;
    &gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;Other helpful videos for streamers (and not) from this awesome dude, nutty:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.youtube.com/results?search_query=nutty&amp;#43;stream&amp;#43;deck&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nutty videos about Elgato Stream Deck&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Updating RPN Radio Mobile App</title>
        <link>https://reddavid.me/p/updating-rpnradio-mobile-app/</link>
        <pubDate>Thu, 31 Mar 2022 00:44:04 +0800</pubDate>
        
        <guid>https://reddavid.me/p/updating-rpnradio-mobile-app/</guid>
        <description>&lt;img src="https://reddavid.me/p/updating-rpnradio-mobile-app/rpnradio-updates-feat.png" alt="Featured image of post Updating RPN Radio Mobile App" /&gt;&lt;h2 id=&#34;update-1&#34;&gt;Update 1
&lt;/h2&gt;&lt;p&gt;&lt;small&gt;2022-03-31&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;I just refactored the FutureBuilder by separating the future tasks to where they are actually used in the UI - to prevent long startup and show the main UI at launch instead of a loading screen.&lt;/p&gt;
&lt;p&gt;Version 2.0.1 is now on open testing for Android on Google Play Store.&lt;/p&gt;
&lt;p&gt;Download link: &lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=com.rpnradio.radiov1&amp;amp;hl=en&amp;amp;gl=US&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RPN Radio for Android (Beta)&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;It&amp;rsquo;s been a while since I coded and updated my apps, it just somehow began again when I felt the urge to refresh my website&amp;rsquo;s looks. Now I am aiming to light up every Github contribution grid block whenever I can.&lt;/p&gt;
&lt;h2 id=&#34;updating-flutter-packages&#34;&gt;Updating Flutter Packages
&lt;/h2&gt;&lt;p&gt;The first thing I did was to check for updated packages from pub.dev by using &lt;code&gt;flutter pub upgrade&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then most are already outdated and forced some to major versions with&lt;code&gt;flutter pub upgrade &amp;ndash;major-versions&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Also, I tried to use Android Studio for Flutter programming and it took a little while again to get used to keyboard shortcuts coming from VS Code.&lt;/p&gt;
&lt;p&gt;Like the usual &lt;code&gt;Alt + Shift + F&lt;/code&gt; to format code, now I have to use two hands for &lt;code&gt;Ctrl + Shift + L&lt;/code&gt;. Also the shortcut for navigating to implementations &lt;code&gt;F12&lt;/code&gt; on VS Code, it&amp;rsquo;s now &lt;code&gt;Ctrl + Alt + B&lt;/code&gt;. Heck, I can&amp;rsquo;t be bothered wasting time to remap those shortcut keys&amp;hellip;&lt;/p&gt;
&lt;p&gt;Despite the hassle above, Flutter coding in Android Studio also has awesome perks like: better debugging, better error checking by highlighting files with errors, faster navigation to files, assets manager and Intellisense. Though Android SDK management is still a pain in the a**. Change my mind.&lt;/p&gt;
&lt;h2 id=&#34;new-code&#34;&gt;New Code
&lt;/h2&gt;&lt;p&gt;My project files were all over the place, so I finally bothered to refactor some files to proper folders like putting model classes to a &lt;code&gt;model&lt;/code&gt; folder, services to &lt;code&gt;services&lt;/code&gt; folder, etc.
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/updating-rpnradio-mobile-app/img/refactoring-files.png&#34;
    alt=&#34;Refactoring files to folders&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Refactoring files to folders&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Upgrading packages with at least 3 versions above since the app&amp;rsquo;s last update brought so much changes. Honestly I followed this open source project &lt;strong&gt;(&lt;a class=&#34;link&#34; href=&#34;https://github.com/suragch/flutter_audio_service_demo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Flutter Audio Service Demo&lt;/a&gt;)&lt;/strong&gt; from GitHub and slightly modified/refactor the codes to minimize and actually use the code my app will only use.&lt;/p&gt;
&lt;h3 id=&#34;futures&#34;&gt;Futures
&lt;/h3&gt;&lt;p&gt;I also updated the app with a new feature to fetch sponsors&amp;rsquo; ad placement images from a URL then view them when they are actually &lt;em&gt;present&lt;/em&gt; in the contract - I used &lt;a class=&#34;link&#34; href=&#34;https://www.json.org/json-en.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;JSON&lt;/a&gt; to fetch the data. I faced a problem decoding it when I faced this unfamiliar type &lt;code&gt;Map&amp;lt;String, dynamic&amp;gt;&lt;/code&gt; coming from a C# perspective.&lt;/p&gt;
&lt;p&gt;I managed to get it to work but a new issue appeared, two tasks are being awaited even the UI is now visible which made two variables &lt;code&gt;null&lt;/code&gt; when they are still being done, making some unwanted behaviors.&lt;/p&gt;
&lt;p&gt;Then I finally used a &lt;strong&gt;&lt;em&gt;Future Builder,&lt;/em&gt;&lt;/strong&gt; it basically waits my tasks to finish fetching data before showing the main UI preventing further actions that require the variables.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-dart&#34; data-lang=&#34;dart&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FutureBuilder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nl&#34;&gt;future:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Future&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;wait&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;([&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;isLiveList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getImages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()]),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nl&#34;&gt;builder:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AsyncSnapshot&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;List&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;dynamic&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;snapshot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;snapshot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hasData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;final&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;liveList&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;snapshot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kd&#34;&gt;final&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;adsList&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;snapshot&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MainUI&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Omitted for brevity
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;loadingScreen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// Omitted for brevity
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;expansionlist-and-swiper&#34;&gt;ExpansionList and Swiper
&lt;/h3&gt;&lt;p&gt;Now I need to add a feature for the app to show a carousel/auto-scrolling of images after being checked if it&amp;rsquo;s on the database - now it&amp;rsquo;s based off a .json file.&lt;/p&gt;
&lt;p&gt;As stated above, I don&amp;rsquo;t know if Flutter/Dart preferred indexing a &lt;code&gt;List&lt;/code&gt; by using a &lt;code&gt;Map&lt;/code&gt; and not a number-index. So I poorly crammed the codes online to fetch the json, decode to objects, index, and list the image names.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-dart&#34; data-lang=&#34;dart&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Future&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Map&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;dynamic&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;getImages&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;async&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;Map&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;dynamic&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;final&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;response&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kd&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;http&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Uri&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;parse&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://...ads.json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;statusCode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// If the call to the server was successful, parse the JSON
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;    &lt;span class=&#34;n&#34;&gt;values&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;json&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;decode&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Before adding the view though, I thought heavily on where to put it avoiding the user to a second page. Somehow this is what I went for:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/updating-rpnradio-mobile-app/img/sponsors-control.png&#34;
    alt=&#34;Sponsors View using ExpansionTile and Swiper&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Sponsors View using ExpansionTile and Swiper&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Sponsors View using ExpansionTile and Swiper&lt;/p&gt;
&lt;p&gt;I used &lt;code&gt;ExpansionTile&lt;/code&gt; to allow the users to collapse/expand the view and &lt;code&gt;Swiper&lt;/code&gt; to show an auto-scroll of the images.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the code for the Sponsors UI:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-dart&#34; data-lang=&#34;dart&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;ExpansionTile&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nl&#34;&gt;title:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;s1&#34;&gt;&amp;#39;Sponsors&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nl&#34;&gt;textColor:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Colors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;white&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nl&#34;&gt;collapsedTextColor:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Colors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;white&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nl&#34;&gt;iconColor:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Colors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;white&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nl&#34;&gt;children:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;Padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nl&#34;&gt;padding:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;EdgeInsets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;only&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nl&#34;&gt;bottom:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;20.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          &lt;span class=&#34;nl&#34;&gt;child:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;ConstrainedBox&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nl&#34;&gt;constraints:&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BoxConstraints&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;loose&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                   &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MediaQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;280.0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nl&#34;&gt;child:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Swiper&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  &lt;span class=&#34;nl&#34;&gt;autoplay:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  &lt;span class=&#34;nl&#34;&gt;autoplayDelay:&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;10000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  &lt;span class=&#34;nl&#34;&gt;itemBuilder:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;BuildContext&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;index&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;CachedNetworkImage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                      &lt;span class=&#34;nl&#34;&gt;imageUrl:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;imageUrl&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                      &lt;span class=&#34;nl&#34;&gt;fit:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BoxFit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fitHeight&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                      &lt;span class=&#34;nl&#34;&gt;width:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;MediaQuery&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;width&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;*&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0.60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  &lt;span class=&#34;nl&#34;&gt;itemCount:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;adsList&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;stationNames&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;_nowPlayingIndex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]].&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  &lt;span class=&#34;nl&#34;&gt;pagination:&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SwiperPagination&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;))),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;to-do&#34;&gt;To-Do
&lt;/h2&gt;&lt;p&gt;It&amp;rsquo;s hard work but I would look to further clean and optimize the code.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not use Swiper when image list is only 1&lt;/li&gt;
&lt;li&gt;Improve loading screen during FutureBuilder&lt;/li&gt;
&lt;li&gt;Handle “offline” connection&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Digital Spring Cleaning</title>
        <link>https://reddavid.me/p/digital-spring-cleaning/</link>
        <pubDate>Tue, 29 Mar 2022 01:53:46 +0800</pubDate>
        
        <guid>https://reddavid.me/p/digital-spring-cleaning/</guid>
        <description>&lt;img src="https://reddavid.me/p/digital-spring-cleaning/spring-cleaning.png" alt="Featured image of post Digital Spring Cleaning" /&gt;&lt;p&gt;Despite the fact that we do not have spring season in the Philippines, it is just good to clean and/or organize (this time) our digital life.&lt;/p&gt;
&lt;p&gt;Honestly, I am lazy af to clean things on a regular basis since I really suck at scheduling. This happens often when I get caught doing things that require a pretty good amount of focus (or am I just giving reasons for my laziness?)&lt;/p&gt;
&lt;h2 id=&#34;bit-of-my-digital-history&#34;&gt;Bit of My Digital History
&lt;/h2&gt;&lt;p&gt;If you didn&amp;rsquo;t know, I started my computer life at the early age of 9/10? I just remember I was in grade 5, 1997-ish, when I fell in love with computers. But with the lack of internet, I only grew up into video games and not programming. I just picked up programming during college days when I was actually bought a laptop by my parents.&lt;/p&gt;
&lt;p&gt;We tackled a bunch of languages even being an Electronics Engineering student, like C++, Turbo C, and Java. But I didn&amp;rsquo;t felt good about those languages until our thesis days where I got help with a friend, an IT student, using VB.Net. I slightly understood it better than the latter ones. It was also the start of programming in &lt;a class=&#34;link&#34; href=&#34;[http://C#.Net]%28https://docs.microsoft.com/en-us/dotnet/csharp/%29&#34; &gt;C#.Net&lt;/a&gt; for my Windows Phone to make apps.&lt;/p&gt;
&lt;h2 id=&#34;files&#34;&gt;Files
&lt;/h2&gt;&lt;p&gt;Being into the Windows environment, files did matter and I actually had free 15GB of SkyDrive (OneDrive now) where I put my files in. While working, I actually preferred to use my laptop since it got more power than what they provide.&lt;/p&gt;
&lt;p&gt;Now with more than 8 years, my cloud is cluttered and having to use extensive apps, software, and services means there are alot more files scattered everywhere.&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s go organizing.&lt;/p&gt;
&lt;h2 id=&#34;organizing&#34;&gt;Organizing
&lt;/h2&gt;&lt;h3 id=&#34;personal-files&#34;&gt;Personal Files
&lt;/h3&gt;&lt;p&gt;I suck at organizing back in the day that I actually did not create folders to group similar files.&lt;/p&gt;
&lt;p&gt;Now I slowly group and organize files and folders properly. Starting with the Documents and Pictures folder. Although my Documents folder still sucks since Windows games create their own &lt;em&gt;saves&lt;/em&gt; folder which makes the list longer and hard to group.&lt;/p&gt;
&lt;p&gt;In the Pictures folder, I began grouping photos and videos based on Year &amp;gt; Month, while other non-sense images went into an Archives folder or Others folder.&lt;/p&gt;
&lt;p&gt;For my &lt;strong&gt;&lt;em&gt;Personal&lt;/em&gt;&lt;/strong&gt; folder, I grouped files by type and use:&lt;/p&gt;
&lt;small&gt;
|--Ebooks&lt;br&gt;
|--Archive&lt;br&gt;
|--Graphics&lt;br&gt;
|--Family&lt;br&gt;
|--Art&lt;br&gt;
|--Stream Assets&lt;br&gt;
&lt;/small&gt;
&lt;p&gt;Then the files go into further folders like inside Stream Assets:&lt;/p&gt;
&lt;small&gt;
|--Stream Assets&lt;br&gt;
&amp;emsp;|--Game Wallpapers&lt;br&gt;
&amp;emsp;|--Media&lt;br&gt;
&amp;emsp;|--Stingers&lt;br&gt;
&amp;emsp;|--Emotes&lt;br&gt;
&lt;/small&gt;
&lt;h3 id=&#34;work-files&#34;&gt;Work Files
&lt;/h3&gt;&lt;p&gt;This seems easier to organize by grouping files based on the responsibility/project, so I just went into choosing a better way to name work files. Continue reading below.&lt;/p&gt;
&lt;h2 id=&#34;file-naming&#34;&gt;File Naming
&lt;/h2&gt;&lt;p&gt;I started renaming work files since collaboration and sharing may require some context on the date and file versions:&lt;/p&gt;
&lt;h3 id=&#34;documents-docx-pdf-pptx-xlsx-etc&#34;&gt;Documents (docx, pdf, pptx, xlsx, etc)
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;YYYY-MM-DD_TYPE_File_Name_Version#.extension&lt;br&gt;
2022-03-29_REPORT_Some_Incident_With_The_Clock.docx&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;graphicsmedia-files-jpg-png-psd-mp3-mp4-etc&#34;&gt;Graphics/Media Files (jpg, png, psd, mp3, mp4 etc)
&lt;/h3&gt;&lt;p&gt;I use the dash and underscore interchangeably but I am more inclined to use underscore for consistency:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;file_name_tags.extension or tags_file_name.extension or both&lt;br&gt;
ad_magic_stylus_square_720x720.png &lt;br&gt; open_graph_styled_frame_template.ai&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&#34;codes&#34;&gt;Codes
&lt;/h3&gt;&lt;p&gt;Depending on the programming language, I strictly use their naming conventions/standard for clarity and consistency. But with other types like json, txt, and other asset files:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;file_name.extension&lt;br&gt;
products_list.json&lt;br&gt;
secret_codes.txt&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;cloud&#34;&gt;Cloud
&lt;/h2&gt;&lt;p&gt;All these files now live in the cloud, OneDrive specifically, and reformatting or changing machine makes it easier to get the files again. Less hassle and worries especially when a big part of my life depends on some important files.&lt;/p&gt;
&lt;p&gt;I am subscribed to Microsoft 365 Personal which offers 1TB of cloud storage and as of now I use around 48%.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://onedrive.live.com?invref=fe92ac3ae0420178&amp;amp;invscr=90&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sign up to OneDrive and get 500MB additional storage space.&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;share-your-way&#34;&gt;Share Your Way
&lt;/h2&gt;&lt;p&gt;So that&amp;rsquo;s about my file naming and folder organization and it is still on-going as of this writing. How do you organize your digital life? Share it on the comments below.&lt;/p&gt;
&lt;br&gt;
&lt;small&gt;&lt;a class=&#34;link&#34; rel=&#34;noopener&#34; href=&#39;https://pngtree.com/so/cleaning&#39;&gt;cleaning png from pngtree.com/&lt;/a&gt;&lt;/small&gt;
</description>
        </item>
        <item>
        <title>A Poem From the Past</title>
        <link>https://reddavid.me/p/a-poem-from-the-past/</link>
        <pubDate>Fri, 25 Mar 2022 00:49:09 +0800</pubDate>
        
        <guid>https://reddavid.me/p/a-poem-from-the-past/</guid>
        <description>&lt;img src="https://reddavid.me/p/a-poem-from-the-past/hug-someone.png" alt="Featured image of post A Poem From the Past" /&gt;&lt;p&gt;Decluttering some files and found this little sad poem saved in a text file, and I just thought of sharing it.&lt;/p&gt;
&lt;div id=&#34;poem&#34;&gt;
&lt;style&gt;
div#poem {
   line-height: 1.5rem !important; text-align: center; background: rgba(125,130,130,0.1); width: 60%; margin: 0 auto; border-radius: 20px;
}

@media(max-width:768px){
   div#poem {width: 100%; line-height: 1.8rem !important; }
}
   &lt;/style&gt;
&lt;br&gt;
&lt;h2 style=&#34;::before: none;border-inline-start: none; margin-left: 0;&#34;&gt;My Heart Misses You&lt;/h2&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;My heart misses you&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Like the drought misses a rainshower&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Like a winter waiting for the summer&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;And like a dream I&amp;rsquo;d always remember&lt;/em&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;My heart misses you&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Like the sun always there ready to shine&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To wake up weary hearts sleeping fine&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Like lovers looking for a valentine&lt;/em&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;My heart misses you&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A warm feeling that embraces me&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A happiness inside that you can set free&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A love that you give unconditionally&lt;/em&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;My heart misses you&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Every night i try to sleep&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Every night I try not to weep&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;But this pain I feel&amp;rsquo;s just too hard to keep&lt;/em&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;My heart misses you&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;That I cannot seem to live alone&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;after all this love you have shown&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;We could&amp;rsquo;ve worn that special stone&lt;/em&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;My heart misses you&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As I speak every word I say&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As I live my life through each day&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;I just miss you in every single way&lt;/em&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;&amp;mdash; David (March 19th 2014 11:17 PM)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;I remember writing this in my lola&amp;rsquo;s (grandmother) house late in the evening, as the time, when I still very much miss my late ex-girlfriend after more than 3 months.&lt;/p&gt;
&lt;p&gt;Now, I haven&amp;rsquo;t visited her for the longest time and I really need to go visit sometime soon. And I hope she continues to watch me over every single time I live. :)&lt;/p&gt;
&lt;p&gt;Go hug someone you love. Right now.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Photo by &lt;a class=&#34;link&#34; href=&#34;https://unsplash.com/@anniespratt?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&#34;&gt;Annie Spratt&lt;/a&gt; on &lt;a class=&#34;link&#34; href=&#34;https://unsplash.com/s/photos/poem?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText&#34;&gt;Unsplash&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Amateur Recording</title>
        <link>https://reddavid.me/p/amateur-recording/</link>
        <pubDate>Tue, 22 Mar 2022 01:32:24 +0800</pubDate>
        
        <guid>https://reddavid.me/p/amateur-recording/</guid>
        <description>&lt;img src="https://reddavid.me/p/amateur-recording/amateur-recording-og.png" alt="Featured image of post Amateur Recording" /&gt;&lt;h2 id=&#34;bye-condenser-hello-dynamic&#34;&gt;Bye Condenser, Hello Dynamic
&lt;/h2&gt;&lt;p&gt;I let go of my &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/mobile-game-streaming/#hardware&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Audio Technica ATR2500X condenser microphone&lt;/a&gt; since recording with it picks up a lot of background noise-making the guitar sound bad when reducing noise on post-edit.&lt;/p&gt;
&lt;p&gt;The ATR2500X does record good sound when inside a treated and noise-free room. Here is a sample, though it&amp;rsquo;s not in a room and background noise is environmental:&lt;/p&gt;
&lt;figure&gt;
   &lt;audio controls style=&#34;width: 60%;&#34;&gt;
      &lt;source src=&#34;chikinini.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
      Your browser does not support the audio element.
   &lt;/audio&gt;
   &lt;figcaption&gt;Chikinini by Parokya Ni Edgar Cover by John Dre (Inuman Session)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;samson-q9u&#34;&gt;Samson Q9U
&lt;/h2&gt;&lt;p&gt;I replaced the AT mic with a Samson Q9U, a USB/XLR combo dynamic microphone which I can directly use on a PC without a USB interface (XLR connection). Despite the slightly higher price, having a dynamic mic to record in a noisy room is slightly tolerable.&lt;/p&gt;
&lt;p&gt;The package includes USB Type-C to Type-A cable and a windscreen together with the mic itself.&lt;/p&gt;
&lt;h3 id=&#34;features&#34;&gt;Features
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Dynamic capsule with humbucking coil and neodymium magnet&lt;/li&gt;
&lt;li&gt;Cardioid polar pattern&lt;/li&gt;
&lt;li&gt;XLR Analog Output&lt;/li&gt;
&lt;li&gt;USB-C Digital output with 24-bit/96kHz resolution&lt;/li&gt;
&lt;li&gt;1/8&amp;quot; output zero-latency headphone monitoring&lt;/li&gt;
&lt;li&gt;Low Cut Filter&lt;/li&gt;
&lt;li&gt;Mid-presence Boost&lt;/li&gt;
&lt;li&gt;Mute button controls both USB and XLR outputs&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;quick-specs&#34;&gt;Quick Specs
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Frequency Response: 50Hz–20kHz&lt;/li&gt;
&lt;li&gt;Polar Pattern: Cardioid (unidirectional)&lt;/li&gt;
&lt;li&gt;Impedance: 250Ω&lt;/li&gt;
&lt;li&gt;Bit Depth/Sample Rate: 24-bit, up to 96 kHz&lt;/li&gt;
&lt;li&gt;Digital Output: USB-C&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For full detailed specs: &lt;a class=&#34;link&#34; href=&#34;http://www.samsontech.com/samson/products/microphones/dynamic-microphones/q9u/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Samson — Q9U&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://musictech.com/reviews/studio-recording-gear/review-samson-q9u/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Review: Samson Q9U | MusicTech&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;pictures&#34;&gt;Pictures
&lt;/h3&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/amateur-recording/img/samson-q9u.png&#34;
    alt=&#34;Samson Q9U&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Samson Q9U&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/amateur-recording/img/samson-q9u-bottom.png&#34;
    alt=&#34;Samson Q9U Bottom View (Pass Filter Switches) (Sorry for the braid cable)&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Samson Q9U Bottom View (Pass Filter Switches) (Sorry for the braid cable)&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&#34;setup&#34;&gt;Setup
&lt;/h2&gt;&lt;h3 id=&#34;hardware&#34;&gt;Hardware
&lt;/h3&gt;&lt;p&gt;I use a cheap boom arm to hold the mic and reduce table vibration noise. The mic is connected with a third-party Type-C to Type-A braided cable to the PC and shows as Samson Q9U on Windows. I left the wind foam to further reduce noise.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/amateur-recording/img/q9u-windows.png&#34;
    alt=&#34;Samson Q9U on Windows&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Samson Q9U on Windows&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;software&#34;&gt;Software
&lt;/h3&gt;&lt;p&gt;I use the donationware app &lt;a class=&#34;link&#34; href=&#34;https://voicemeeter.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Voicemeeter&lt;/a&gt; to control my input and output audio devices on Windows, and also use the “Cassette” recorder to select the devices to record.&lt;/p&gt;
&lt;p&gt;I mainly use this as recording instead of Audacity to monitor each input.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/amateur-recording/img/voicemeeter.png&#34;
    alt=&#34;Voicemeeter Banana&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Voicemeeter Banana&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;editing&#34;&gt;Editing
&lt;/h2&gt;&lt;p&gt;I edit my recorded audio using &lt;a class=&#34;link&#34; href=&#34;https://www.audacityteam.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Audacity&lt;/a&gt;. I mostly reduce unwanted noise without affecting the guitar tones too much. I also add a few effects like Reverb, and Delay. And sometimes, I do add tracks directly to record overlay guitar solos.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/amateur-recording/img/audacity.png&#34;
    alt=&#34;Audacity (Currently Editing Dahan)&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Audacity (Currently Editing Dahan)&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;samples&#34;&gt;Samples
&lt;/h2&gt;&lt;p&gt;I think these was the best solos/cover I recorded with the guitar (not my voice) with a few effects added on the solo part (in Dahan). Despite the noticeable noise in both recordings, I hope you liked them, and I will continue to improve.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
   &lt;audio controls style=&#34;width: 60%;&#34;&gt;
      &lt;source src=&#34;dahan-final.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
      Your browser does not support the audio element.
   &lt;/audio&gt;
   &lt;figcaption&gt;Dahan by December Avenue Cover&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
   &lt;audio controls style=&#34;width: 60%;&#34;&gt;
      &lt;source src=&#34;bakitba.mp3&#34; type=&#34;audio/mpeg&#34;&gt;
      Your browser does not support the audio element.
   &lt;/audio&gt;
   &lt;figcaption&gt;Bakit Ba by Siakol Guitar Only Cover&lt;/figcaption&gt;
&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;You can visit my &lt;a class=&#34;link&#34; href=&#34;https://youtube.com/RedDavid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;YouTube channel&lt;/a&gt; where I upload some covers.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Looking New in 2022</title>
        <link>https://reddavid.me/p/new-in-2022/</link>
        <pubDate>Wed, 16 Mar 2022 02:43:53 +0800</pubDate>
        
        <guid>https://reddavid.me/p/new-in-2022/</guid>
        <description>&lt;img src="https://reddavid.me/p/new-in-2022/2022-update-og.png" alt="Featured image of post Looking New in 2022" /&gt;&lt;p&gt;Another late blog post. 😓 Well, I may have an explanation you might not accept but hear me out.&lt;/p&gt;
&lt;p&gt;So my last post was on December 4th, and I really tried to do a weekly, heck, even daily short posts. But the days do really come fast when the holidays are coming and vacation leave plans make you do work in crunch time.&lt;/p&gt;
&lt;h2 id=&#34;finale-2021&#34;&gt;Finale 2021
&lt;/h2&gt;&lt;p&gt;Luckily, we survived another year of the grueling pandemic and the local government did lower the &lt;strong&gt;Alert Level&lt;/strong&gt; to a much more &lt;em&gt;free&lt;/em&gt; movements in public - children can now go out with adults in malls. The holidays compared to last 2020 felt better.&lt;/p&gt;
&lt;h3 id=&#34;the-24th-and-25th&#34;&gt;The 24th and 25th
&lt;/h3&gt;&lt;p&gt;I decided to celebrate Christmas Eve with my fiancée&amp;rsquo;s family with a fantastic dinner.&lt;/p&gt;
&lt;p&gt;Going back about people being &lt;em&gt;free&lt;/em&gt; last year, I also spent with her family on Christmas day. After hearing the Holy Mass, we were supposed to go picnic at Luneta Park but hoooly moly, the place was packed with people!&lt;/p&gt;
&lt;figure&gt;
   &lt;video class=&#34;video-shortcode&#34; preload=&#34;auto&#34; controls width=&#34;90%&#34;&gt;
      &lt;source src=&#34;img/luneta-park.mov&#34; type=&#34;video/mp4&#34;&gt;
      There should have been a video here but your browser does not seem
      to support it.
   &lt;/video&gt;
   &lt;figcaption&gt;Luneta Park on December 25th&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;We arrived actually to a long line of &lt;em&gt;newcomers&lt;/em&gt; until a sudden rain poured down that those without umbrellas, (inside and outside the park) came together where there&amp;rsquo;s shelter.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s when they decided to go to SM Mall of Asia instead.&lt;/p&gt;
&lt;p&gt;And just like going to the park, there were also traffic jams traveling to the mall.&lt;/p&gt;
&lt;p&gt;Despite expecting a lot of people, the mall was huge enough to contain them, except for restaurants at that time that most are full.&lt;/p&gt;
&lt;p&gt;After some time having to get dinner, we decided to go to the mall park to check and might try some rides. And that&amp;rsquo;s where we found that it&amp;rsquo;s also packed and they won&amp;rsquo;t let us enter anymore. Sadge, we went home and ended the day.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/new-in-2022/img/moa-eye.png&#34;
    alt=&#34;MOA Eye Crowd on December 25th&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;MOA Eye Crowd on December 25th&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;before-the-year-ended&#34;&gt;Before the Year Ended
&lt;/h3&gt;&lt;p&gt;I went home 3 days early for New Years Eve with my old friend Dave. He invited me to join him for the long drive home.&lt;/p&gt;
&lt;p&gt;Sadly, my fiancée can&amp;rsquo;t join me at ours because they would also be going back home.&lt;/p&gt;
&lt;p&gt;I always try to go home days early to spend time with friends making the last few days actually spent time with the family.&lt;/p&gt;
&lt;p&gt;Sadly again, we failed to meet up. And just like before, there&amp;rsquo;ll be a next time. Right?&lt;/p&gt;
&lt;p&gt;On the 30th, the family went to Tondaligan Beach early in the morning as it would get really hot even at 9 in the morning.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/new-in-2022/img/tondaligan-beach.png&#34;
    alt=&#34;Tondaligan Beach&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;I 💗 Tondaligan Beach&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;new-year-eve&#34;&gt;New Year Eve
&lt;/h3&gt;&lt;p&gt;I don&amp;rsquo;t remember if I helped out in food preparations 😂.&lt;/p&gt;
&lt;p&gt;The New Year&amp;rsquo;s Eve always start early by drinking liquor, listening to loud music, karaoke, etc.&lt;/p&gt;
&lt;p&gt;There were lots of fireworks compared to last year and people looked a lot more hopeful for the coming year.
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/new-in-2022/img/new-years-eve-food.png&#34;
    alt=&#34;Food for New Year&amp;#39;s Eve&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Food for New Year&amp;rsquo;s Eve&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&#34;year-2021-part-2&#34;&gt;Year 2021 Part 2
&lt;/h2&gt;&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://media.giphy.com/media/RirZ9781gEyu9sCHKy/giphy.gif&#34;
    alt=&#34;Same shit, different year gif&#34; width=&#34;40%&#34;&gt;
&lt;/figure&gt;

Some said it&amp;rsquo;s going to be another version of 2021 but worse. News in the first week included shortage of acetaminophen (paracetamol) in most drugstores, at least in the NCR.&lt;/p&gt;
&lt;p&gt;A lot got sick after the holidays and mostly believed that it was flu season. But it was also reported that the then latest COVID variant, omicron, causes slight mild symptoms similarly to a flu. But then a few days went on and the COVID-19 numbers started to rise up.&lt;/p&gt;
&lt;h3 id=&#34;back-to-the-jungle&#34;&gt;Back to the Jungle
&lt;/h3&gt;&lt;p&gt;I actually returned to work on the second week of the first month. I took an antigen test and it came negative.&lt;/p&gt;
&lt;p&gt;I worked on Monday, the day after the test feeling really well, but then came Tuesday afternoon. My energy just went kaput.&lt;/p&gt;
&lt;p&gt;Downhill. Just. Like. That.&lt;/p&gt;
&lt;h3 id=&#34;i-got-the-bad-v&#34;&gt;I Got the Bad V
&lt;/h3&gt;&lt;p&gt;Bad vibes, I really think it&amp;rsquo;s the bad virus.&lt;/p&gt;
&lt;p&gt;That day, I just ate a hefty lunch normally, drank coffee and went on to start the day (I wake up after noon). After a few hours, Inbecame suddenly weak and drowsy. I also felt being cold even in a jacket. I started checking my temperature and it started rising up.&lt;/p&gt;
&lt;p&gt;I quickly prepared my things to go home, to my fiancé&amp;rsquo;s. Her room was isolated and kept me locked in most of the time. I took some meds to lower my temperature but it didn&amp;rsquo;t work. It continues to rise up by the hour that I just left my undies on me to release the heat. It really is that high!&lt;/p&gt;
&lt;p&gt;The fever came with a massive headache and body pains that moving was a struggle. I kept taking meds every 4/5 hours to lower my temps and relief head and body aches. The first two nights were the height of all the symptoms. Lucky enough for those days, I didn&amp;rsquo;t have cough or colds that might release some infectious fluids.&lt;/p&gt;
&lt;p&gt;My appetite never changed drastically during the 3-4 days of being sick. I ate well and drank a lot of water, continued taking meds for mild head and body aches, vitamins for my immune system, and basic exercises whenever I can.&lt;/p&gt;
&lt;p&gt;I am deeply grateful for her family that I am still alive right now. And I spent the rest of January in isolation playing Hollow Knight - which is an awesome game - and read a few books and watched online courses.&lt;/p&gt;
&lt;h3 id=&#34;hollow-knight&#34;&gt;Hollow Knight
&lt;/h3&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/new-in-2022/img/transport-stag.gif&#34;
    alt=&#34;Transport Stag in Hollow Knight GIF&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Transport Stag in Hollow Knight&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;This game is a metroidvania platformer which I actually played way before but gave up due to not having a proper gamepad controller - since the keyboard controls sucked for me.&lt;/p&gt;
&lt;p&gt;The game started okay but when I finally met the bosses and how crazy the map navigation was, I was hooked. The game simply is not linear and you do have to explore the world for power ups and abilities that allows you to reach locations and do things you previously can&amp;rsquo;t on the way.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/new-in-2022/img/hallownest.png&#34;
    alt=&#34;Hallownest Map&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Hallownest Map&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;For more than two weeks of isolation, I actually 100-percented the game all that time in isolation, up until now I can&amp;rsquo;t still quite believe I passed White Castle.&lt;/p&gt;
&lt;div class=&#34;video-wrapper&#34;&gt;
    &lt;iframe loading=&#34;lazy&#34; 
            src=&#34;https://www.youtube.com/embed/R8ddULz6xMo&#34; 
            allowfullscreen 
            title=&#34;YouTube Video&#34;
    &gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;I ended the game&amp;rsquo;s main ending with 106% completion. But wait, there were still two endings: the True Ending - killing the actual Boss Radiance, and Godhome Ending - a final fight with all bosses and an upgraded Radiance.&lt;/p&gt;
&lt;h3 id=&#34;atomic-habits&#34;&gt;Atomic Habits
&lt;/h3&gt;&lt;p&gt;During isolation, I bought books online to read when Hollow Knight was hard enough that I take a few breaks. I rest my mind by reading James Clear&amp;rsquo;s Atomic Habits and also help me understand and change my habitual ways.
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/new-in-2022/img/atomic-habits.png&#34;
    alt=&#34;Atomic Habits by James Clear&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Atomic Habits by James Clear&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id=&#34;outliers&#34;&gt;Outliers
&lt;/h3&gt;&lt;p&gt;Right in time going back to work, my next reading list was Malcolm Gladwell&amp;rsquo;s Outliers, I am half-way the book as of this writing.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/new-in-2022/img/outliers.png&#34;
    alt=&#34;Outliers by Malcolm Gladwell&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Outliers by Malcolm Gladwell&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;no-codes&#34;&gt;No Codes
&lt;/h3&gt;&lt;p&gt;The first 2 months of 2022 was quite slow for me to return coding. I haven&amp;rsquo;t coded a lot due to holiday hangover and I don&amp;rsquo;t want to do it sponteaneously to reduce trial and error, as I really wanted a smooth-sailing code when I begin.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/new-in-2022/img/github-contributions.png&#34; width=&#34;217&#34;  height=&#34;141&#34;  srcset=&#34;https://reddavid.me/p/new-in-2022/img/github-contributions_hu_e3a547a40e85b76a.png 480w, https://reddavid.me/p/new-in-2022/img/github-contributions_hu_27caf5f1ec2e285b.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;GitHub Contributions in 2022&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;153&#34;
	data-flex-basis=&#34;369px&#34; &gt;&lt;/p&gt;
&lt;h3 id=&#34;going-back-to-work&#34;&gt;Going Back to Work
&lt;/h3&gt;&lt;p&gt;Getting back to work means grinding the tasks left during my sick days, especially the problems we&amp;rsquo;re having with the website&amp;rsquo;s database. All in all, I came back normally with no more symptoms and ready to take on the rest of the year.&lt;/p&gt;
&lt;p&gt;I also continued to play Hollow Knight and get the full 112% completion on rest days.&lt;/p&gt;
&lt;div class=&#34;video-wrapper&#34;&gt;
    &lt;iframe loading=&#34;lazy&#34; 
            src=&#34;https://www.youtube.com/embed/c24YUQzsXZU&#34; 
            allowfullscreen 
            title=&#34;YouTube Video&#34;
    &gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;h2 id=&#34;final-words&#34;&gt;Final Words
&lt;/h2&gt;&lt;p&gt;Prior to this post, I updated this website with a new Hugo theme. The theme &lt;a class=&#34;link&#34; href=&#34;&#34; &gt;Stack by Jimmy&lt;/a&gt; is smaller and basic compared to the previous one, &lt;a class=&#34;link&#34; href=&#34;&#34; &gt;CodeIT&lt;/a&gt;. I had to edit some parts like better open graph handling, custom layouts, fonts, page views, etc. I also had to do cleaning due to different framework style like PhotoSwipe images, different link render, frontmatter, and url slugs - which took most of the time.&lt;/p&gt;
&lt;p&gt;That ends this update for me, stay safe and wear a mask.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Featured image Hollow Knight style by &lt;a class=&#34;link&#34; href=&#34;https://prashantmohta.github.io/TitleGenerator.HollowKnight/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prashant Mohta&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>(Update: Now Available on 3 Major App Stores) RPN News Mobile App</title>
        <link>https://reddavid.me/p/rpnnews-mobile-app/</link>
        <pubDate>Sat, 04 Dec 2021 03:22:25 +0800</pubDate>
        
        <guid>https://reddavid.me/p/rpnnews-mobile-app/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/rpn-news.png" alt="Featured image of post (Update: Now Available on 3 Major App Stores) RPN News Mobile App" /&gt;&lt;h2 id=&#34;update-2&#34;&gt;Update #2
&lt;/h2&gt;&lt;p&gt;RPN News mobile app is now also available to download from Huawei AppGallery. Check the &lt;a class=&#34;link&#34; href=&#34;#download-here&#34;&gt;download section&lt;/a&gt; for the links!&lt;/p&gt;
&lt;h2 id=&#34;update-1&#34;&gt;Update #1
&lt;/h2&gt;&lt;p&gt;The app is now available for iPhone on the App Store. See the &lt;a class=&#34;link&#34; href=&#34;#download-here&#34;&gt;download section&lt;/a&gt; below.&lt;/p&gt;
&lt;hr &gt;
&lt;p&gt;It&amp;rsquo;s been a while again since my last post but there were no significant updates lately - besides another week-long vacation. So let me introduce this new mobile app from RPN that I developed and releasing now.&lt;/p&gt;
&lt;h2 id=&#34;delays&#34;&gt;Delays
&lt;/h2&gt;&lt;p&gt;The app had a working beta for Android devices for awhile now with bare experience and a better update has been in the works. I took the time to work out the database functions, UI and UX, and some other features (mobile ads, and customized links).&lt;/p&gt;
&lt;p&gt;I apologize for the delay but I just made sure these features are working for production.&lt;/p&gt;
&lt;h2 id=&#34;app-details&#34;&gt;App Details
&lt;/h2&gt;&lt;p&gt;Most brands nowadays accompany their line of business with a mobile app, beside the &lt;a class=&#34;link&#34; href=&#34;https://tunein.rpnradio.com/download&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RPN Radio app&lt;/a&gt; which was released so much earlier, I am now finally be able to bring news mobile app for Android devices, and iPhones.&lt;/p&gt;
&lt;p&gt;Right now, the app is a feed for the provincial news as visible on &lt;a class=&#34;link&#34; href=&#34;https://rpnradio.com/category/provincial-news/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RPN website&lt;/a&gt;. The news are gathered by our provincial/regional news stations that you can read from the website or from the app - for much easier reading and sharing.&lt;/p&gt;
&lt;h2 id=&#34;screenshots&#34;&gt;Screenshots
&lt;/h2&gt;&lt;p&gt;It took too long to release the app that the version is now at 2.1. Below are screenshots (store previews for iPhone and Android).&lt;/p&gt;
&lt;!-- &lt;img src=&#34;https://reddavid.me/images/12-21/rpn-news/rpn-news-apple-1.png&#34; alt=&#34;News feed (iPhone)&#34; /&gt;
&lt;img src=&#34;https://reddavid.me/images/12-21/rpn-news/rpn-news-apple-2.png&#34; alt=&#34;News details (iPhone)&#34;  /&gt;
&lt;img src=&#34;https://reddavid.me/images/12-21/rpn-news/rpn-news-apple-3.png&#34; alt=&#34;About page (iPhone)&#34; /&gt; --&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpn-news-apple-1_.png&#34; width=&#34;262&#34;  height=&#34;568&#34;  srcset=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpn-news-apple-1__hu_64cb687d49eb9382.png 480w, https://reddavid.me/p/rpnnews-mobile-app/img/rpn-news-apple-1__hu_11db9a8db2b6e093.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;News feed (iPhone)&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt; &lt;img src=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpn-news-apple-2_.png&#34; width=&#34;262&#34;  height=&#34;568&#34;  srcset=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpn-news-apple-2__hu_e12435cd1403e8bf.png 480w, https://reddavid.me/p/rpnnews-mobile-app/img/rpn-news-apple-2__hu_caa3c94b8df76c42.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;News detail (iPhone)&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt;&lt;img src=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpn-news-apple-3_.png&#34; width=&#34;262&#34;  height=&#34;568&#34;  srcset=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpn-news-apple-3__hu_5478e8aa629c7064.png 480w, https://reddavid.me/p/rpnnews-mobile-app/img/rpn-news-apple-3__hu_8a30597361b3e890.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;About page (iPhone)&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpnnews-store-1_.png&#34; width=&#34;320&#34;  height=&#34;568&#34;  srcset=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpnnews-store-1__hu_e3d745b56e2ae157.png 480w, https://reddavid.me/p/rpnnews-mobile-app/img/rpnnews-store-1__hu_e4ddb924d5cfaae5.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;News feed (Android)&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;56&#34;
	data-flex-basis=&#34;135px&#34; &gt; &lt;img src=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpnnews-store-2_.png&#34; width=&#34;320&#34;  height=&#34;568&#34;  srcset=&#34;https://reddavid.me/p/rpnnews-mobile-app/img/rpnnews-store-2__hu_2c31646a1d12aa0.png 480w, https://reddavid.me/p/rpnnews-mobile-app/img/rpnnews-store-2__hu_3a2744b0107eb267.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;News detail (Android)&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;56&#34;
	data-flex-basis=&#34;135px&#34; &gt;&lt;/p&gt;
&lt;!-- &lt;figure&gt;
   &lt;img src=&#34;https://reddavid.me/images/12-21/rpn-news/rpn-news-apple-1.png&#34; alt=&#34;News feed (Android)&#34; width=&#34;40%&#34; height=&#34;auto&#34; /&gt;
   &lt;figcaption&gt;News feed (Android)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
   &lt;img src=&#34;https://reddavid.me/images/12-21/rpn-news/rpnnews-store-1.png&#34; alt=&#34;News feed (Android)&#34; width=&#34;40%&#34; height=&#34;auto&#34; /&gt;
   &lt;figcaption&gt;News feed (Android)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
   &lt;img src=&#34;https://reddavid.me/images/12-21/rpn-news/rpnnews-store-2.png&#34; alt=&#34;News details (Android)&#34; width=&#34;40%&#34; height=&#34;auto&#34; /&gt;
   &lt;figcaption&gt;News details (Android)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
   &lt;img src=&#34;https://reddavid.me/images/12-21/rpn-news/rpnnews-store-3.png&#34; alt=&#34;About page (Android)&#34; width=&#34;40%&#34; height=&#34;auto&#34; /&gt;
   &lt;figcaption&gt;About page (Android)&lt;/figcaption&gt;
&lt;/figure&gt; --&gt;
&lt;h2 id=&#34;download-here&#34;&gt;Download Here
&lt;/h2&gt;&lt;p&gt;The app is available now on the Google Play Store: &lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=com.rpnradio.news&amp;amp;hl=en&amp;amp;gl=US&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RPN News - Apps on Google Play&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Update #1: Download for iPhone here: &lt;a class=&#34;link&#34; href=&#34;https://apps.apple.com/app/id1590143546&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RPN News on the App Store&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Update #2: Download from Huawei AppGallery: &lt;a class=&#34;link&#34; href=&#34;https://appgallery.huawei.com/app/C105053423&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RPN News on Huawei AppGallery&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;del&gt;As for Huawei devices (AppGallery) and iPhone App Store, the app is still under review for each platform. Will add the links as soon as they&amp;rsquo;re approved.&lt;/del&gt;&lt;/p&gt;
&lt;h2 id=&#34;whats-next&#34;&gt;What&amp;rsquo;s Next
&lt;/h2&gt;&lt;p&gt;Here are the milestones I am looking forward to bring:&lt;/p&gt;
&lt;h3 id=&#34;milestone-22&#34;&gt;Milestone 2.2+
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;News Filter (by Station or tags)&lt;/li&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;National and International news (courtesy of BusinessMirror news)&lt;/li&gt;
&lt;li&gt;Customizable fonts&lt;/li&gt;
&lt;li&gt;Read aloud&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;milestone-30&#34;&gt;Milestone 3.0
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Integrate stations&amp;rsquo; live videos (YouTube)&lt;/li&gt;
&lt;li&gt;Integrate stations&amp;rsquo; VODs (video-on-demand)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As always, you can follow me on &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/reddvid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter&lt;/a&gt; for mini updates.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>My Top Apps for Windows and iPhone</title>
        <link>https://reddavid.me/p/my-top-windows-and-mobile-apps/</link>
        <pubDate>Tue, 02 Nov 2021 00:45:35 +0800</pubDate>
        
        <guid>https://reddavid.me/p/my-top-windows-and-mobile-apps/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/apps.png" alt="Featured image of post My Top Apps for Windows and iPhone" /&gt;&lt;p&gt;As you may know by now, I am an electronics engineer but currently and mostly doing IT stuff and some casual gaming. I can also describe myself as an on-a-budget tech enthusiast - I buy top-tier pc/laptop upgrades after some time since their release or when it&amp;rsquo;s affordable enough; like when I went for 1TB Samsung 970 EVO just to hold the apps, games, and files that I leave after testing them out.&lt;/p&gt;
&lt;p&gt;Having said that, I sometimes stumble upon bad or corrupted files, deleted some system files, OR EVEN installing Windows sh*ttiest Insider builds. But I seldom hold myself back reverting or reinstalling Windows to clean everything up.&lt;/p&gt;
&lt;h2 id=&#34;the-cloud-works&#34;&gt;The Cloud Works
&lt;/h2&gt;&lt;p&gt;I trust the cloud, at least with Microsoft&amp;rsquo;s OneDrive service. I have a 1TB subscription to hold my most important files (like assets for this website, etc.) and pictures. I also always keep in hand a Windows installer on a USB stick. With all the files backed up, I simply begin reformatting it and reinstall apps and software starting with these:&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;windows-apps&#34;&gt;Windows Apps
&lt;/h2&gt;&lt;p&gt;This list may or may not be in order.&lt;/p&gt;
&lt;h3 id=&#34;avast-driver-updater&#34;&gt;Avast Driver Updater
&lt;/h3&gt;&lt;p&gt;Since Windows 10, the OS also installs drivers, but I make sure they are updated using this software. It has a free trial and it works just fine. At this time, I also install graphics drivers (AMD Radeon Software or NVidia GeForce Experience).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://www.avast.com/en-ph/driver-updater#pc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Avast Driver Updater &amp;amp; Scanner&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;microsoft-office&#34;&gt;Microsoft Office
&lt;/h3&gt;&lt;p&gt;My subscription also contains a license to use the full desktop version of Microsoft Office, so it&amp;rsquo;s a win-win for me since this is an important skill personally and for work.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Product link: &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/store/apps/CFQ7TTC0K5BF&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Office 365 Personal&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;steam&#34;&gt;Steam
&lt;/h3&gt;&lt;p&gt;Additionally, I don&amp;rsquo;t store my games to where my OS is installed. Steam and most game platforms allow us to locate game files, so I don&amp;rsquo;t have to redownload hundreds of GB game files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://store.steampowered.com/about/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Steam&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;bitwarden&#34;&gt;Bitwarden
&lt;/h3&gt;&lt;p&gt;Ever since I experienced being hacked, I immediately started using a password manager/generator to make my passwords not the same - YES what a shame.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://bitwarden.com/download/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bitwarden&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;winrar&#34;&gt;WinRAR
&lt;/h3&gt;&lt;p&gt;Compress and extract files and folders with unlimited 40 day trial.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://www.win-rar.com/download.html?&amp;amp;L=0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WinRAR&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;spotify&#34;&gt;Spotify
&lt;/h3&gt;&lt;p&gt;Even though the lack of lossless audio format, Spotify is my go-to music service. Unless it came preinstalled with Windows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download links: &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/store/productId/9NCBCSZSJRSB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Spotify (Microsoft Store)&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://www.spotify.com/kw-en/download/windows/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Spotify (.exe setup)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;voicemeeter-banana-and-virtual-cable&#34;&gt;VoiceMeeter Banana (and Virtual Cable)
&lt;/h3&gt;&lt;p&gt;One of the most useful audio mixers software out there, donationware and flexible for my needs. It allows me to mix and manage audio inputs and outputs for other communication apps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://vb-audio.com/Voicemeeter/banana.htm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;VoiceMeeter Banana&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;visual-studio-code&#34;&gt;Visual Studio Code
&lt;/h3&gt;&lt;p&gt;I use this as a code editor for Flutter/Dart mobile development and other source codes like this blog.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://code.visualstudio.com/download&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Visual Studio Code&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;visual-studio&#34;&gt;Visual Studio
&lt;/h3&gt;&lt;p&gt;The full IDE software for various development cases. I mainly use it for Windows app development as I haven&amp;rsquo;t got into webapps as of now. I code and create apps using WinForms, WPF, and UWP (WinUI). I also tried Xamarin.Forms but I moved onto Flutter for cross-platform mobile app development.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://visualstudio.microsoft.com/downloads/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Visual Studio&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;obs-studio&#34;&gt;OBS Studio
&lt;/h3&gt;&lt;p&gt;I used this for streaming, recording and virtual camera purposes. I now use OBS instead of XSplit. The software is FREE and much lightweight. It also has features and other free plugins made by the community.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://obsproject.com/download&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OBS Studio&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;figma-desktop-app&#34;&gt;Figma Desktop App
&lt;/h3&gt;&lt;p&gt;This free app is browser-based but can also be downloaded as a desktop app. It was made for designers to build UI/UX interfaces - which I sometimes do when making apps. I also use this to make quick and simple logos and other graphics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://www.figma.com/downloads/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Figma Desktop&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Now on to mobile apps. I switched to iPhone nearly a year ago because of the hardware-and-software stability (in my opinion) and the support does not end after 2 or 3 years, unlike Android. So resetting my device (after a really really bad beta software) isn&amp;rsquo;t that much of a hassle because of iCloud backups.&lt;/p&gt;
&lt;h2 id=&#34;mobile-apps&#34;&gt;Mobile Apps
&lt;/h2&gt;&lt;p&gt;Here are my top apps that I use on a daily basis. I will not put the specific store page instead I will link to their website for mobile downloads (if available). I&amp;rsquo;ll list the apps I use on both platforms (PC and Mobile)&lt;/p&gt;
&lt;h3 id=&#34;spotify-1&#34;&gt;Spotify
&lt;/h3&gt;&lt;p&gt;Of course, we also listen to music on our phones. I can also control other playing devices&amp;rsquo; volume when AFK.&lt;/p&gt;
&lt;h3 id=&#34;bitwarden-1&#34;&gt;Bitwarden
&lt;/h3&gt;&lt;p&gt;The app is quite simple and still got some UI bugs. Otherwise, I use this as my password manager for my phone.&lt;/p&gt;
&lt;h3 id=&#34;steam-1&#34;&gt;Steam
&lt;/h3&gt;&lt;p&gt;I don&amp;rsquo;t often get a lot of chat from Steam but for a quicker view of what games are on sale, this app does it.&lt;/p&gt;
&lt;h3 id=&#34;microsoft-office-outlook-and-onedrive&#34;&gt;Microsoft Office, Outlook, and OneDrive
&lt;/h3&gt;&lt;p&gt;I put them together here since they are not in a suite but the new Office app user-wise deprecated the standalone Word, Excel, and PowerPoint apps since you can view and edit your documents in one app.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download links: &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-ww/microsoft-365/mobile&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Office Mobile App&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/microsoft-365/outlook-mobile-for-android-and-ios&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Outlook Mobile&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/microsoft-365/onedrive/download&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OneDrive Mobile App&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;twitter&#34;&gt;Twitter
&lt;/h3&gt;&lt;p&gt;Where I get updated to what&amp;rsquo;s happening. I only follow niche and some well-known &amp;ldquo;wholesome and awesome&amp;rdquo; Twitter users.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/settings/download?lang=en&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Twitter&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;facebook-messenger&#34;&gt;Facebook Messenger
&lt;/h3&gt;&lt;p&gt;Yup, most family members and friends are into messenger chats so that&amp;rsquo;s no escaping Facebook.&lt;/p&gt;
&lt;h3 id=&#34;gcash&#34;&gt;GCash
&lt;/h3&gt;&lt;p&gt;Globe Telecom&amp;rsquo;s virtual wallet, and is now available for all networks.&lt;/p&gt;
&lt;h3 id=&#34;youtube-and-reddit&#34;&gt;YouTube and Reddit
&lt;/h3&gt;&lt;p&gt;My other ways to consume online content.&lt;/p&gt;
&lt;h3 id=&#34;microsoft-edge&#34;&gt;Microsoft Edge
&lt;/h3&gt;&lt;p&gt;Despite the sync being subpar to Google Chrome, I prefer this one as my main browser on my iPhone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/edge#platform&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Edge Web Browser&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;shopee&#34;&gt;Shopee
&lt;/h3&gt;&lt;p&gt;Every once in a while (trust me 🤣) we just want to shop online. I recently deleted my Lazada account because it annoyed me so much with their shenanigans.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Download: &lt;a class=&#34;link&#34; href=&#34;https://shp.ee/x6uyiut&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Shopee PH&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;So far these are my &lt;em&gt;top&lt;/em&gt; apps that I use on my mobile phone. Let me know what&amp;rsquo;s your most used apps!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>TI10 and Appdates</title>
        <link>https://reddavid.me/p/ti10-and-appdates/</link>
        <pubDate>Fri, 15 Oct 2021 03:53:07 +0800</pubDate>
        
        <guid>https://reddavid.me/p/ti10-and-appdates/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/ti10-appdates.png" alt="Featured image of post TI10 and Appdates" /&gt;&lt;p&gt;Let&amp;rsquo;s start with &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/The_International_2021#:~:text=The%20International%202021%2C%20also%20known,2%20world%20championship%20esports%20tournament.&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;The International&lt;/a&gt;, shortened as TI, Valve&amp;rsquo;s yearly Dota 2 tournament where the 18 of the best teams around the world gather to fight for the Aegis of the Champions every year. After being canceled and waiting for more than 2 years it is now happening, without an audience in Bucharest, Romania with a total prizepool of $40M+.&lt;/p&gt;
&lt;center&gt;
&lt;/center&gt;
&lt;p&gt;I only play the game against custom BOT scripts 🤣 just to past time or just to be updated with what patches &lt;a class=&#34;link&#34; href=&#34;https://dota2.fandom.com/wiki/IceFrog&#34; target=&#34;_blank&#34;&gt;IceFrog&lt;/a&gt; brings to the game. What I mostly do is watch major tournaments especially those when teams need to earn &lt;a class=&#34;link&#34; href=&#34;https://liquipedia.net/dota2/Dota_Pro_Circuit&#34; target=&#34;_blank&#34;&gt;DPC points&lt;/a&gt; for entering the prestigious TI.&lt;/p&gt;
&lt;h2 id=&#34;ten-days-of-dota&#34;&gt;Ten Days of DOTA
&lt;/h2&gt;&lt;p&gt;#TI10 started on October 7th with 18 qualified teams playing playoffs on the group stage to determine their position either on the upper or lower bracket; and where two teams: Thunder Predator and SG, in the end, bid farewell for the Main Stage and championship.&lt;/p&gt;
&lt;center&gt;
&lt;/center&gt;
&lt;p&gt;Now, as of this writing, we just ended Day 3 of the Main Stage and I&amp;rsquo;ve followed and watched most of the games. Fnatic, a SEA team with 2 Pinoy players, got eliminated on Day 2 just after getting past a heart-wrenching Best-of-One&amp;rsquo;s on the Lower Bracket the day before. The last SEA representative, T1, would have to give their best on their lower bracket run.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://pbs.twimg.com/media/FBrySN5VIAAtGqh?format=jpg&amp;amp;name=large&#34;&gt;
&lt;/figure&gt;

&lt;p&gt;Thanks to &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/wykrhm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wykrhm Reddy (@wykrhm)&lt;/a&gt; for being such a good Dota Community Man.&lt;/p&gt;
&lt;h2 id=&#34;the-secret&#34;&gt;The Secret
&lt;/h2&gt;&lt;p&gt;Watching all games and supporting SEA teams, my heart still goes to Team Secret for all their TI runs. Right now, they already secured Top 3 finish for the semifinals game against PSG.LGD.&lt;/p&gt;
&lt;center&gt;
&lt;/center&gt;
&lt;p&gt;I follow the games by watching &lt;a class=&#34;link&#34; href=&#34;https://www.twitch.tv/singsing&#34; target=&#34;_blank&#34;&gt;singsing&amp;rsquo;s Twitch stream&lt;/a&gt; as he and his (pepega) friends cast and analyze the stream - chill and fun. This way I can watch (or listen) while doing app coding.&lt;/p&gt;
&lt;h2 id=&#34;coding-and-appdates&#34;&gt;Coding and Appdates
&lt;/h2&gt;&lt;p&gt;This 10-day tournament meant a break from me streaming (to catch the games) which then allowed me time to code for RPN News mobile app.&lt;/p&gt;
&lt;p&gt;My job (finally) provided me a Samsung A71 Android phone to test the app (and for work-related stuff) after my old personal phone went bust; though I still use my iPhone 11 to test the iOS code - maybe soon? 🤣&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-21/appdates/samsung-a71.png&#34;
    alt=&#34;Samsung A71&#34; height=&#34;400px&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Samsung A71&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The app has been up on the Google Play Store for some time (as I blogged &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/rpn-android-app/&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;) and lacked significant updates. It stayed that way for a while until all busy-ness and code-confusion (is this even a term?) has subsided.&lt;/p&gt;
&lt;p&gt;These past days, I managed to release an update for the Android beta app and also started a TestFlight for iOS devices.&lt;/p&gt;
&lt;p&gt;I decided to version the app as 2.0 as this was a complete rework from the old code despite not publicly releasing a version 1.0. The app was previously coded on C#/Xamarin Forms but the documentation and support I needed was &amp;ldquo;not there&amp;rdquo;, then I started to code on Dart/Flutter for RPN Radio which made things easier - being a single-codebase mobile app development.&lt;/p&gt;
&lt;p&gt;Version 2.0 brings a new UI and supports offline mode - see downloaded news (as opposed to before that it will not work when there is no internet; though it is always recommended to be connected to get the latest news).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/ti10-and-appdates/img/news-screen1.png&#34; width=&#34;256&#34;  height=&#34;568&#34;  srcset=&#34;https://reddavid.me/p/ti10-and-appdates/img/news-screen1_hu_cfb5cc288efc2710.png 480w, https://reddavid.me/p/ti10-and-appdates/img/news-screen1_hu_fb8f6ee2e17691b0.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;News Items Page&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;45&#34;
	data-flex-basis=&#34;108px&#34; &gt;&lt;img src=&#34;https://reddavid.me/p/ti10-and-appdates/img/news-screen2.png&#34; width=&#34;256&#34;  height=&#34;568&#34;  srcset=&#34;https://reddavid.me/p/ti10-and-appdates/img/news-screen2_hu_82915f3a2b96352.png 480w, https://reddavid.me/p/ti10-and-appdates/img/news-screen2_hu_a176be42caea10e6.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;News Detail Page&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;45&#34;
	data-flex-basis=&#34;108px&#34; &gt;&lt;/p&gt;
&lt;h3 id=&#34;get-into-the-beta-test&#34;&gt;Get into the Beta Test
&lt;/h3&gt;&lt;p&gt;The app is available for testing and I welcome your feedback after getting the app here from &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://bit.ly/2YVpJC9&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Play Store&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://apple.co/2XaMBNl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Apple TestFlight&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Or scan the QR code/s below:&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-21/appdates/play-qr.png&#34;
    alt=&#34;Google Play Store QR Code&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Google Play Store QR Code&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-21/appdates/testflight-qr.png&#34;
    alt=&#34;Google Play Store QR Code&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Google Play Store QR Code&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;You may submit your feedback using built-in tools from Google or TestFlight, sending an &lt;a class=&#34;link&#34; href=&#34;mailto:info@rpnradio.com&#34; &gt;email&lt;/a&gt;, or any on my socials.&lt;/p&gt;
&lt;p&gt;I will try my best to get the app working for a public release.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That&amp;rsquo;s it for now folks, &lt;strong&gt;let&amp;rsquo;s watch and enjoy some Dota&lt;/strong&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Some Updates (Yes, I am Still Alive)</title>
        <link>https://reddavid.me/p/still-alive/</link>
        <pubDate>Tue, 05 Oct 2021 23:13:11 +0800</pubDate>
        
        <guid>https://reddavid.me/p/still-alive/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/still-alive.png" alt="Featured image of post Some Updates (Yes, I am Still Alive)" /&gt;&lt;p&gt;Well how about that?! I just said about how I am prone to procrastinating on my last blog post (over 2 months ago!) that I wanted to keep pisting at least once a week but guess what, I failed! 🥲&lt;/p&gt;
&lt;p&gt;Though it&amp;rsquo;s not laziness, I just didn&amp;rsquo;t have good stories to post since it is still a pandemic over here and I just got back to work after my 2 weeks vacation (ehem, 10 days since I still kept in touch with my responsibilities - online stuff).&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s just nothing to share, I don&amp;rsquo;t know.&lt;/p&gt;
&lt;p&gt;But here are some highlights these past 2 months (may or may not be in particular order):&lt;/p&gt;
&lt;h2 id=&#34;sleeping-early&#34;&gt;Sleeping Early
&lt;/h2&gt;&lt;p&gt;Visiting the province means that you &lt;strong&gt;MUST&lt;/strong&gt; sleep early. Can&amp;rsquo;t do much when waking later in the day.&lt;/p&gt;
&lt;h2 id=&#34;cook-better-food&#34;&gt;Cook Better Food
&lt;/h2&gt;&lt;p&gt;I have been intending to cook a healthy meal long before but time constraints and marketing had been prevented me to do so. But with extra time I got by sleeping and waking up early I get to buy and cook a quick meal.&lt;/p&gt;
&lt;center&gt;
&lt;blockquote class=&#34;instagram-media&#34; data-instgrm-captioned data-instgrm-permalink=&#34;https://www.instagram.com/p/CSY9Zu5hflR/?utm_source=ig_embed&amp;amp;utm_campaign=loading&#34; data-instgrm-version=&#34;14&#34; style=&#34; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:340px; min-width:240px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&#34;&gt;&lt;div style=&#34;padding:16px;&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://www.instagram.com/p/CSY9Zu5hflR/?utm_source=ig_embed&amp;amp;utm_campaign=loading&#34; style=&#34; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&#34; target=&#34;_blank&#34;&gt; &lt;div style=&#34; display: flex; flex-direction: row; align-items: center;&#34;&gt; &lt;div style=&#34;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&#34;&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;padding: 19% 0;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;display:block; height:50px; margin:0 auto 12px; width:50px;&#34;&gt;&lt;svg width=&#34;50px&#34; height=&#34;50px&#34; viewBox=&#34;0 0 60 60&#34; version=&#34;1.1&#34; xmlns=&#34;https://www.w3.org/2000/svg&#34; xmlns:xlink=&#34;https://www.w3.org/1999/xlink&#34;&gt;&lt;g stroke=&#34;none&#34; stroke-width=&#34;1&#34; fill=&#34;none&#34; fill-rule=&#34;evenodd&#34;&gt;&lt;g transform=&#34;translate(-511.000000, -20.000000)&#34; fill=&#34;#000000&#34;&gt;&lt;g&gt;&lt;path d=&#34;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&#34;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&#34;padding-top: 8px;&#34;&gt; &lt;div style=&#34; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&#34;&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;padding: 12.5% 0;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&#34;&gt;&lt;div&gt; &lt;div style=&#34;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&#34;&gt;&lt;/div&gt; &lt;div style=&#34;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;margin-left: 8px;&#34;&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;margin-left: auto;&#34;&gt; &lt;div style=&#34; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&#34;&gt;&lt;/div&gt; &lt;div style=&#34; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&#34;&gt;&lt;/div&gt; &lt;div style=&#34; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style=&#34;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&#34;&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=&#34; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.instagram.com/p/CSY9Zu5hflR/?utm_source=ig_embed&amp;amp;utm_campaign=loading&#34; style=&#34; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;&#34; target=&#34;_blank&#34;&gt;A post shared by David Ballesteros (@reddvid)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async src=&#34;//www.instagram.com/embed.js&#34;&gt;&lt;/script&gt;&lt;/center&gt;
&lt;h2 id=&#34;read-more-books&#34;&gt;Read More Books
&lt;/h2&gt;&lt;p&gt;I can&amp;rsquo;t remember where I found The War of Art (yes, not Art of War). It is a book about fighting resistance of doing art (a metaphor of doing what you REALLY love). It&amp;rsquo;s a short self-development book authored by Steven Pressfield, and later I found that it has sequels or whatever you call it: Do The Work and Turning Pro. Do The Work was originally published first but was updated (I think?) to be the follow-up of TWoA. As the book title says, when overcoming resistance DO THE WORK. Lastly, Turning Pro is about escaping the amateur life (of doing work).&lt;/p&gt;
&lt;p&gt;I also stumbled upon a website called &lt;a class=&#34;link&#34; href=&#34;https://mostrecommendedbooks.com&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mostrecommendedbooks.com&lt;/a&gt;, a website where you can find a list of books which top personalities and celebrities had read. Some notable personalities I leisurely checked: Barack Obama, Bill Gates, Elon Musk (this man is futuristic and really into tech!), Dwayne &amp;ldquo;The Rock&amp;rdquo; Johnson, PewDiePie, Richard Branson, and Steve Jobs.&lt;/p&gt;
&lt;p&gt;They all have their niche but I found that they have some mutual titles which I got interested putting into my reading list:&lt;/p&gt;
&lt;h3 id=&#34;read-list&#34;&gt;Read List
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Man%27s_Search_for_Meaning#:~:text=Man&#39;s%20Search%20for%20Meaning%20is,then%20immersively%20imagining%20that%20outcome.&#34; target=&#34;_blank&#34;&gt;Man&amp;rsquo;s Search for Meaning by Viktor Frankl&lt;/a&gt; (finished as of this writing)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.goodreads.com/book/show/4069.Man_s_Search_for_Meaning&#34; target=&#34;blank_&#34;&gt;Mindset by Dr. Carol Dweck&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.goodreads.com/book/show/34890015-factfulness&#34; target=&#34;blank_&#34;&gt;Factfulness by Hans Rosling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.goodreads.com/book/show/34466963-why-we-sleep&#34; target=&#34;blank_&#34;&gt;Why We Sleep by Matthew Walker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.goodreads.com/book/show/39286958-measure-what-matters&#34; target=&#34;blank_&#34;&gt;Measure What Matters by John Doerr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.goodreads.com/book/show/3228917-outliers&#34; target=&#34;blank_&#34;&gt;Outliers by Malcolm Gladwell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.goodreads.com/book/show/25666050-algorithms-to-live-by&#34; target=&#34;blank_&#34;&gt;Algorithms to Live By by Brian Christian &amp;amp; Tom Griffiths&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.goodreads.com/book/show/35133922-educated&#34; target=&#34;blank_&#34;&gt;Educated by Tara Westover&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.goodreads.com/book/show/18050143-zero-to-one&#34; target=&#34;blank_&#34;&gt;Zero to One by Peter Thiel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I recommend reading &lt;strong&gt;&amp;ldquo;Man&amp;rsquo;s Search for Meaning&amp;rdquo;&lt;/strong&gt; at least once in your life. 🙂&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1535419394l/4069._SY475_.jpg&#34;
    alt=&#34;Man&amp;rsquo;s Search for Meaning cover&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Man&amp;rsquo;s Search for Meaning cover&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;online-courses&#34;&gt;Online Courses
&lt;/h2&gt;&lt;p&gt;These are some online video courses like Udemy. I am currently half-way through Microsoft Office 2019 course. I still have Flutter/Dart development, Web development, and UI with Figma development courses on &lt;a class=&#34;link&#34; href=&#34;https://udemy.com/&#34; target=&#34;blank_&#34;&gt;Udemy&lt;/a&gt; and some on other sites.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;The beautiful thing about learning is nobody can take it away from you.&amp;rdquo; - B.B. King&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;These are the amazing things happened for the past months except the first two didn&amp;rsquo;t last since my girlfriend recently got a graveyard shift work where we can only talk at around 2:30am (GMT+8) during her (lunch) break. Don&amp;rsquo;t blame me, I&amp;rsquo;m just a loving person 😂.&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s talk about work, it is stressful at times with at least two meetings per week and August was a one hell of ride for the website to migrate and apparently, that was also the month the hosting service will conduct a maintenance 😬. Despite that, I&amp;rsquo;ve learnt about a few basic things for site security and database optimizations.&lt;/p&gt;
&lt;p&gt;There were also a few more layout and quality updates which I will share soon. But you can see what I&amp;rsquo;ve worked on &lt;a class=&#34;link&#34; href=&#34;https://rpnradio.com&#34; target=&#34;blank_&#34;&gt;rpnradio.com&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://tunein.rpnradio.com&#34; target=&#34;blank_&#34;&gt;tunein.rpnradio.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As for the company&amp;rsquo;s mobile apps - updates are still pending. I am hoping for a wider schedule to keep my &amp;ldquo;programming momentum&amp;rdquo; uninterrupted because once I started I can&amp;rsquo;t stop until the code works. Trust me, unless I can&amp;rsquo;t figure it out and need a good night&amp;rsquo;s sleep to come up with a fix.&lt;/p&gt;
&lt;p&gt;Lastly, on my very very free time, I can get to play and record playing the guitar and upload to my &lt;a class=&#34;link&#34; href=&#34;https://youtube.com/RedDavid&#34; target=&#34;blank_&#34;&gt;YouTube&lt;/a&gt; channel. Feel free to like or dislike. 🤣 I also compensate some time to stream on &lt;a class=&#34;link&#34; href=&#34;https://twitch.tv/aka1red&#34; target=&#34;blank_&#34;&gt;Twitch&lt;/a&gt; for a few hours.&lt;/p&gt;
&lt;p&gt;I hope these are enough to keep you updated. I will also post some tech buys I did to give myself back for the hard-work I believe I do. Hit me up in &lt;a class=&#34;link&#34; href=&#34;https://twitter.com/reddvid&#34; target=&#34;blank_&#34;&gt;Twitter&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;https://facebook.com/RedDavidGaming&#34; target=&#34;blank_&#34;&gt;Facebook&lt;/a&gt; on how your last two months went!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Good JuJu: Roundup</title>
        <link>https://reddavid.me/p/july-roundup/</link>
        <pubDate>Thu, 29 Jul 2021 00:02:17 +0800</pubDate>
        
        <guid>https://reddavid.me/p/july-roundup/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/july-roundup.png" alt="Featured image of post Good JuJu: Roundup" /&gt;&lt;p&gt;Okay, hear me out, I am still procrastinating after watching hours TED Talks and YouTube videos on how to be productive and avoid wasting time doing senseless things. What&amp;rsquo;s wrong? Do I have a lot on my mind or in my hands to keep me posting blogs? Can&amp;rsquo;t be motivated by self-help books and videos? Am I still waiting for when &amp;ldquo;it&amp;rsquo;s too late&amp;rdquo;? AARGH&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://media.giphy.com/media/pVkmGyqYRt4qY/giphy.gif&#34; height=&#34;320&#34; alt=&#34;gif about laziness&#34; style=&#34;display: block;margin-left: auto;margin-right: auto; width: 50%;
&#34;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;hunyo&#34;&gt;Hunyo
&lt;/h2&gt;&lt;h3 id=&#34;birthday-gift&#34;&gt;Birthday Gift
&lt;/h3&gt;&lt;p&gt;So my last post was June 12, I celebrated my 29th birthday on the 14th and got myself an Elgato HD60S+ to achieve better mobile gaming mirroring but that still, I can&amp;rsquo;t keep my streaming schedule! AARGH (2)&lt;/p&gt;
&lt;p&gt;I got the thingy not just to stream games but for future use - like recording &amp;ldquo;How to use this app&amp;rdquo; for YouTube or presentations, so it may be an expensive thing but I always think of them as an investment for my app development journey.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-21/roundup/elgato.jpg&#34;
    alt=&#34;Elgato HD60S&amp;#43;&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Elgato HD60S+&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Speaking of streaming, I started streaming on Twitch! Right now, I planned on playing Minecraft, Left 4 Dead 2, and Call of Duty: Mobile. Also, I will try to stream on MWFS schedule playing those games or variety. &lt;a class=&#34;link&#34; href=&#34;https://twitch.tv/aka1red&#34; target=&#34;_blank&#34;&gt;Give me a follow&lt;/a&gt; and get notified when I go live.&lt;/p&gt;
&lt;p&gt;I will be using my &lt;a class=&#34;link&#34; href=&#34;https://fb.gg/RedDavidGaming&#34; target=&#34;_blank&#34;&gt;Facebook Page&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://discord.gg/rKnJb4J&#34; target=&#34;_blank&#34;&gt;Discord server&lt;/a&gt; to post updates.&lt;/p&gt;
&lt;h3 id=&#34;stream-setup-mobile-gaming&#34;&gt;Stream Setup (Mobile Gaming)
&lt;/h3&gt;&lt;p&gt;As of this writing, I am lucky enough to have this setup for mobile game streaming:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://shp.ee/znd3exz&#34; target=&#34;_blank&#34;&gt;Apple iPhone 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://shp.ee/ta83sar&#34; target=&#34;_blank&#34;&gt;Elgato HD60S+ Capture Card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://shp.ee/uw5zqsr&#34; target=&#34;_blank&#34;&gt;Audio-Technica ATR-2500X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://shp.ee/m3dktiz&#34; target=&#34;_blank&#34;&gt;SteelSeries Arctis 1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;app-dates&#34;&gt;App-dates
&lt;/h3&gt;&lt;p&gt;Any more happened last week of June? Hmm. Yeah right, I released an update for RPN Radio app for both Android and iOS adding a call-to-action button to send the stations a message thru Facebook Messenger. This was after watching on Udemy that apps or any products always have a goal-in-mind - the stations should increase inquiries for advertisement or any other public service comments.&lt;/p&gt;
&lt;p&gt;The app is still available for &lt;strong&gt;FREE&lt;/strong&gt; on Google Play Store, Huawei App Store, and iOS App Store. I created this simple app landing page for the &lt;a class=&#34;link&#34; href=&#34;https://tunein.rpnradio.com/download&#34; target=&#34;_blank&#34;&gt;links.&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-21/roundup/rpnradio-app-cta.jpg&#34;
    alt=&#34;Call-to-Action Button - RPN Radio App&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Call-to-Action Button - RPN Radio App&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I also got to try the new &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/windows/windows-11&#34; target=&#34;_blank&#34;&gt;Windows 11 Insider Preview&lt;/a&gt; on a VM. Tested on my main machine but I can&amp;rsquo;t risk the beta so I rolled back to Windows 10.&lt;/p&gt;
&lt;h2 id=&#34;hulyo&#34;&gt;Hulyo
&lt;/h2&gt;&lt;h3 id=&#34;chocolates-anyone&#34;&gt;Chocolates, Anyone?
&lt;/h3&gt;&lt;p&gt;Let&amp;rsquo;s start the month with a sweet treat, homemade chocolates courtesy of my SO. Anyone interested? Hit the like on the Instagram post below for us to start selling them. 😊&lt;/p&gt;
&lt;center&gt;
&lt;blockquote class=&#34;instagram-media&#34; data-instgrm-captioned data-instgrm-permalink=&#34;https://www.instagram.com/p/CR39ox0jqf6/?utm_source=ig_embed&amp;amp;utm_campaign=loading&#34; data-instgrm-version=&#34;14&#34; style=&#34; background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);&#34;&gt;&lt;div style=&#34;padding:16px;&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://www.instagram.com/p/CR39ox0jqf6/?utm_source=ig_embed&amp;amp;utm_campaign=loading&#34; style=&#34; background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;&#34; target=&#34;_blank&#34;&gt; &lt;div style=&#34; display: flex; flex-direction: row; align-items: center;&#34;&gt; &lt;div style=&#34;background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;display: flex; flex-direction: column; flex-grow: 1; justify-content: center;&#34;&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;padding: 19% 0;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;display:block; height:50px; margin:0 auto 12px; width:50px;&#34;&gt;&lt;svg width=&#34;50px&#34; height=&#34;50px&#34; viewBox=&#34;0 0 60 60&#34; version=&#34;1.1&#34; xmlns=&#34;https://www.w3.org/2000/svg&#34; xmlns:xlink=&#34;https://www.w3.org/1999/xlink&#34;&gt;&lt;g stroke=&#34;none&#34; stroke-width=&#34;1&#34; fill=&#34;none&#34; fill-rule=&#34;evenodd&#34;&gt;&lt;g transform=&#34;translate(-511.000000, -20.000000)&#34; fill=&#34;#000000&#34;&gt;&lt;g&gt;&lt;path d=&#34;M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631&#34;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style=&#34;padding-top: 8px;&#34;&gt; &lt;div style=&#34; color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;&#34;&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;padding: 12.5% 0;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;&#34;&gt;&lt;div&gt; &lt;div style=&#34;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);&#34;&gt;&lt;/div&gt; &lt;div style=&#34;background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34;background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;margin-left: 8px;&#34;&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34; width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&#34;margin-left: auto;&#34;&gt; &lt;div style=&#34; width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);&#34;&gt;&lt;/div&gt; &lt;div style=&#34; background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);&#34;&gt;&lt;/div&gt; &lt;div style=&#34; width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style=&#34;display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;&#34;&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;&#34;&gt;&lt;/div&gt; &lt;div style=&#34; background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;&#34;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=&#34; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.instagram.com/p/CR39ox0jqf6/?utm_source=ig_embed&amp;amp;utm_campaign=loading&#34; style=&#34; color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;&#34; target=&#34;_blank&#34;&gt;A post shared by David Ballesteros (@reddvid)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async src=&#34;//www.instagram.com/embed.js&#34;&gt;&lt;/script&gt;
&lt;/center&gt;
&lt;h3 id=&#34;second-dose&#34;&gt;Second Dose
&lt;/h3&gt;&lt;p&gt;I got my second dose of Covid vaccine (Sinovac) on the 6th, thankfully there were no side-effects except for the body aches I got after NOT SLEEPING WELL! 🤦‍♂️&lt;/p&gt;
&lt;h3 id=&#34;website-updates&#34;&gt;Website Updates
&lt;/h3&gt;&lt;p&gt;With work, I updated the &lt;a class=&#34;link&#34; href=&#34;https://rpnradio.com&#34; target=&#34;_blank&#34;&gt;RPN website&lt;/a&gt; overall layout after migrating to a new hosting provider. And some minor updates to some if not all the online systems.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-21/roundup/rpnradio-website-mobile.png&#34;
    alt=&#34;RPN Radio Website&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;RPN Radio Website&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;rainy-vacay&#34;&gt;Rainy Vacay
&lt;/h3&gt;&lt;p&gt;After that, I decided to take a &lt;del&gt;short&lt;/del&gt; long break to escape the &lt;del&gt;jungle&lt;/del&gt; NCR Bubble by going home to Pangasinan. I am so longing to be with the family after 6+ months of not going home - I last went home way back December 2020 to spend the holidays.&lt;/p&gt;
&lt;p&gt;I was so looking forward to at least visit a beach, see a sunset, feel the breeze of fresh air but UNLUCKILY the weather ahead was not well! I did not see the predictions that there will be a coming storm for the week. So the first few days were a bust, and I just stayed inside and chilled out with some beer.&lt;/p&gt;
&lt;p&gt;The 20th was a holiday, and magically the weather was at least fine for us to go to Binmaley beach - don&amp;rsquo;t worry, there were no crowds so we can be safe, I think? The sun was peeping through the clouds and by the afternoon, a mild rain poured. Together with relatives, we spend some time there swimming, singing, EATING, and drinking booze until it&amp;rsquo;s time to go home.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-21/roundup/binmaley-beach.jpg&#34;
    alt=&#34;Binmaley Beach&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Binmaley Beach&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-21/roundup/lumpiang-gulay.jpg&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;h4&gt;Lumpiang Gulay&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;My other plans went down the drain as the weather became worse, Dagupan City was flooded (plus high tide) that light vehicles weren&amp;rsquo;t able to pass. Sadly, I can&amp;rsquo;t meet my &lt;del&gt;only&lt;/del&gt; city friends. There&amp;rsquo;s still next time right? Right?&lt;/p&gt;
&lt;p&gt;I decided to extend my stay but continued checking some online responsibilities just to make sure they are still up even I&amp;rsquo;m not present in the office - though I failed to join our online meetings.&lt;/p&gt;
&lt;p&gt;We also went to our grandfather&amp;rsquo;s brother to celebrate his 70th birthday. Then we spent some time (and over pizza) with my cousin to talk about tech and stuff.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-21/roundup/bday-selfie.jpg&#34; width=&#34;40%&#34;&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-21/roundup/bday-damage.jpg&#34;
    alt=&#34;Selfie with Lolo and Cousin &amp;#43; Damaged Foods 🤣&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Selfie with Lolo and Cousin + Damaged Foods 🤣&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;Oh, I also got a haircut (question mark).&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-21/roundup/haircut.jpg&#34;
    alt=&#34;Haircut?&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Haircut?&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;br&gt;
&lt;p&gt;That&amp;rsquo;s it for this blog post, thanks for reading! (the rain pours while I write this).&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Mobile Game Streaming</title>
        <link>https://reddavid.me/p/mobile-game-streaming/</link>
        <pubDate>Sat, 12 Jun 2021 04:26:59 +0800</pubDate>
        
        <guid>https://reddavid.me/p/mobile-game-streaming/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/codm-fbgg-streaming.png" alt="Featured image of post Mobile Game Streaming" /&gt;&lt;p&gt;This is a post to ask my SMP members to forgive by not playing for a while (a week) on our Minecraft server. I will also share my setup how I stream mobile games.&lt;/p&gt;
&lt;h2 id=&#34;grind-to-legend&#34;&gt;Grind to Legend
&lt;/h2&gt;&lt;p&gt;Ever since the new season of Call of Duty: Mobile came out, I just wanted to redeem the legendary medal. And also to get all rewards from the Battle Pass I bought. 😂&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t worry guys and gals, kuya Red will be back soon. Konti na lang back to Legendary rank na sa BR mode at pwede na mag-Minecraft.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/06-21/mobile-streaming/codm-locked.png&#34;
    alt=&#34;Locked Legendary Rank&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Locked Legendary Rank&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;minecraft-117-is-here&#34;&gt;Minecraft 1.17 is Here
&lt;/h2&gt;&lt;p&gt;Spigot 1.17 is out and is now available as an option for our server but the plugins are currently unsupported, so we&amp;rsquo;ll stick to 1.16.5. Though I played the snapshots and pre-releases, I am still yet to play Minecraft 1.17 Vanilla.&lt;/p&gt;
&lt;div class=&#34;video-wrapper&#34;&gt;
    &lt;iframe loading=&#34;lazy&#34; 
            src=&#34;https://www.youtube.com/embed/0maWbr0FHKY&#34; 
            allowfullscreen 
            title=&#34;YouTube Video&#34;
    &gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;The caves and cliffs update (part 1) brings new items and features which were detailed on Minecraft&amp;rsquo;s own blog &lt;a class=&#34;link&#34; href=&#34;https://www.minecraft.net/en-us/updates/caves-and-cliffs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now on to my setup.&lt;/p&gt;
&lt;h2 id=&#34;mobile-stream-setup&#34;&gt;Mobile Stream Setup
&lt;/h2&gt;&lt;h3 id=&#34;hardware&#34;&gt;Hardware
&lt;/h3&gt;&lt;p&gt;First, let&amp;rsquo;s see the devices I use except for the laptop/PC for streaming.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;iPhone 11&lt;/li&gt;
&lt;li&gt;Lightning to AV Digital Adapter&lt;/li&gt;
&lt;li&gt;HDMI cable&lt;/li&gt;
&lt;li&gt;Cheap video capture&lt;/li&gt;
&lt;li&gt;Audio-technica Condenser Mic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I used to play on my Nokia 7 Plus but can&amp;rsquo;t the specs can&amp;rsquo;t keep up, not sure why. This is when I use &lt;a class=&#34;link&#34; href=&#34;https://www.vysor.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vysor&lt;/a&gt;, a screen mirroring app that wirelessly share the phone&amp;rsquo;s screen to the PC. Now, that&amp;rsquo;s where the problem is, wireless mirroring makes the sound delayed that playing action games is not a good experience. I invested in both an iPhone and the adapter since I can use them on future projects - software development.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/06-21/mobile-streaming/adapters.jpg&#34;
    alt=&#34;Lightning to AV Adapter and USB Capture Card&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Lightning to AV Adapter and USB Capture Card&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I wonder why branded capture cards are so damn expensive?! Like the &lt;a class=&#34;link&#34; href=&#34;https://ecommerce.datablitz.com.ph/products/elgato-hd60-s-game-capture&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Elgato HD60S&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://ecommerce.datablitz.com.ph/products/avermedia-live-gamer-ultra-game-streaming-capture-box-gc553&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AverMedia Live Gamer Ultra&lt;/a&gt;. So I went ahead and bought a $6 (300 pesos) unbranded USB capture card and it just works fine. Just stick it well on a USB port and it&amp;rsquo;s good to go.&lt;/p&gt;
&lt;iframe src=&#34;https://giphy.com/embed/3o6MbtelsDZdsbFB7i&#34; width=&#34;480&#34; height=&#34;360&#34; frameBorder=&#34;0&#34; class=&#34;giphy-embed&#34; style=&#34;display: block; margin: 0px auto;&#34;&gt;&lt;/iframe&gt;
&lt;p&gt;Lastly, I recently bought an &lt;a class=&#34;link&#34; href=&#34;https://www.audio-technica.com/en-gb/atr2500x-usb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ATR-2500X condenser mic&lt;/a&gt; to record songs and guitars for my YouTube channel. Now it&amp;rsquo;s multi-purpose that I use it on my streams and Zoom meetings.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/06-21/mobile-streaming/atr-2500x.jpg&#34;
    alt=&#34;Audio-Technica ATR2500X Condenser Mic&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Audio-Technica ATR2500X Condenser Mic&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;software&#34;&gt;Software
&lt;/h3&gt;&lt;p&gt;As for the software, I use &lt;a class=&#34;link&#34; href=&#34;https://obsproject.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OBS Studio&lt;/a&gt;. I had a bad experience using SLOBS, it freezes and crashes over simple things. I used to do overlays with Streamlabs but then I found StreamElements OBS.Live. It makes things much easier with a direct &amp;ldquo;Go Live&amp;rdquo; button on OBS Studio, chat box, and activity feed. They also provide a nice overlay editor with text-to-speech system on their &lt;a class=&#34;link&#34; href=&#34;https://streamelements.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;website&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/06-21/mobile-streaming/obslive.png&#34;
    alt=&#34;StreamElements OBS.Live Plugin&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;StreamElements OBS.Live Plugin&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;diagram&#34;&gt;Diagram
&lt;/h3&gt;&lt;p&gt;This is how my setup is connected. Remember that you need an internet with at least 4000kbps of upload speed to actually stream your games on Facebook Gaming (&lt;a class=&#34;link&#34; href=&#34;https://www.facebook.com/fbgaminghome/creators/getstarted&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;source&lt;/a&gt;). I stream at 1080p60 with 6000kbps bitrate.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/06-21/mobile-streaming/setup-diagram.png&#34;
    alt=&#34;Hardware Setup Diagram&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Hardware Setup Diagram&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;games-list&#34;&gt;Games List
&lt;/h2&gt;&lt;p&gt;I have a few mobile games on my phone right now compared to my &lt;a class=&#34;link&#34; href=&#34;https://steamcommunity.com/id/reddvid/games/?tab=all&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Steam Library&lt;/a&gt;. But I own some mobile-worthy games like Stardew Valley and Minecraft: Pocket Edition.&lt;/p&gt;
&lt;p&gt;I have a love and hate relationship with games like PUBG Mobile and Mobile Legends. I am looking forward to Apex Legends: Mobile and Diablo Immortal though. They&amp;rsquo;re both are already in beta preview on Android, currently waiting for the iPhone/iPad version.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://m.me/RedDavidGaming&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Send me a message&lt;/a&gt; to request a game I can play, or we can play together.&lt;/p&gt;
&lt;h2 id=&#34;support-me-on-facebook-gaming&#34;&gt;Support me on Facebook Gaming
&lt;/h2&gt;&lt;p&gt;This seems repetitive, but I do need some support when I go live. It feels like streaming and talking to friends is now an everyday duty, haha. But kidding aside, everyone needs help.&lt;/p&gt;
&lt;p&gt;Check me &lt;a class=&#34;link&#34; href=&#34;https://fb.gg/RedDavidGaming&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;, and let&amp;rsquo;s talk more about tech and things.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Get RPN Radio for iOS</title>
        <link>https://reddavid.me/p/get-rpn-radio-for-ios/</link>
        <pubDate>Sat, 12 Jun 2021 00:50:15 +0800</pubDate>
        
        <guid>https://reddavid.me/p/get-rpn-radio-for-ios/</guid>
        <description>&lt;img src="https://reddavid.me/images/og/rpnradio-appstore.png" alt="Featured image of post Get RPN Radio for iOS" /&gt;&lt;p&gt;After more than 3 months of processing Apple Developer Program&amp;rsquo;s requirements, the app is here for iPhones!&lt;/p&gt;
&lt;p&gt;This is the very same version we release for the Android counterpart &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/rpnradio-android/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;read the details on this blog post&lt;/a&gt;. Ads are disabled for now as I am still fixing things with the release of iOS 14.7&lt;/p&gt;
&lt;br&gt;
&lt;figure class=&#34;image&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/06-21/rpnradio/home.png&#34; style=&#34;display:inline-block;margin-left:auto;width:200px;&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/06-21/rpnradio/playing.png&#34; style=&#34;display:inline-block;margin-left:10px;margin-right:10px;width:200px;&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/06-21/rpnradio/about.png&#34; style=&#34;display:inline-block;margin-left:auto;width:200px;&#34;&gt;
&lt;figcaption&gt;App Screenshots&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;br&gt;
&lt;h2 id=&#34;roadmap&#34;&gt;Roadmap
&lt;/h2&gt;&lt;p&gt;The app is set to receive further updates, especially with station details. The list below shows the top priority updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Detailed station page (operating hours, location, and contact numbers)&lt;/li&gt;
&lt;li&gt;Better player view&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;download&#34;&gt;Download
&lt;/h2&gt;&lt;p&gt;The app is FREE TO DOWNLOAD here:&lt;/p&gt;
&lt;center&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://apps.apple.com/us/app/rpn-radio/id1571699396?itsct=apps_box_badge&amp;amp;itscg=30200e&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/p/get-rpn-radio-for-ios/img/appstore-badge.png&#34; width=&#34;250px&#34;&gt;
&lt;/figure&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/06-21/rpnradio/qr.png&#34;
    alt=&#34;RPN Radio QR Code for iOS&#34; width=&#34;40%&#34;&gt;
&lt;/figure&gt;

</description>
        </item>
        <item>
        <title>OBS Studio 27 is here</title>
        <link>https://reddavid.me/p/obs-studio-27-is-here/</link>
        <pubDate>Tue, 08 Jun 2021 03:15:06 +0800</pubDate>
        
        <guid>https://reddavid.me/p/obs-studio-27-is-here/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/obs27.png" alt="Featured image of post OBS Studio 27 is here" /&gt;&lt;p&gt;I just updated my OBS a few days ago with the official release version after trying out the several release candidates.&lt;/p&gt;
&lt;p&gt;I will talk about the new features and improvements here that will be useful for my use. Check their blog post &lt;a class=&#34;link&#34; href=&#34;https://obsproject.com/blog/obs-studio-27-released&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt; and the complete changelog &lt;a class=&#34;link&#34; href=&#34;https://github.com/obsproject/obs-studio/releases/tag/27.0.0&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;br&gt;
&lt;div class=&#34;video-wrapper&#34;&gt;
    &lt;iframe loading=&#34;lazy&#34; 
            src=&#34;https://www.youtube.com/embed/LUkMxYNIyj0&#34; 
            allowfullscreen 
            title=&#34;YouTube Video&#34;
    &gt;
    &lt;/iframe&gt;
&lt;/div&gt;

&lt;br&gt;
&lt;h2 id=&#34;undo--redo&#34;&gt;Undo &amp;amp; Redo
&lt;/h2&gt;&lt;p&gt;At last! No more annoyances when you just ACCIDENTALLY move something on the canvas. Undo and redo is here for every change you do in your sources and scenes - not sure for all filters though. And that&amp;rsquo;s 5000 actions.&lt;/p&gt;
&lt;p&gt;Though I mostly use OBS for game streaming (no facecam), I move things around only to notice that it was not the source I wanted to move! This surely helps users out and always had been the most requested feature.&lt;/p&gt;
&lt;h2 id=&#34;files-where&#34;&gt;Files, where?
&lt;/h2&gt;&lt;p&gt;Version 27 also added a missing files window prompt on launch that allows us to relocate or ignore the missing files. Nice addition so we don&amp;rsquo;t go start streaming only to have the files missing.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/06-21/obs/obs_missing_files_warning.png&#34;
    alt=&#34;Missing Files Warning Window&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Missing Files Warning Window&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;no-more-noise&#34;&gt;No More Noise
&lt;/h2&gt;&lt;p&gt;OBS v27 for Windows now adds NVIDIA Noise Removal as an option to audio Noise Suppression filter &lt;del&gt;when the &lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-us/geforce/broadcasting/broadcast-sdk/resources/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA Audio Effects SDK&lt;/a&gt; is installed. Oh, also you need an NVIDIA RTX GPU for that - so no screenshots from me.&lt;/del&gt;&lt;/p&gt;
&lt;br&gt;
&lt;h2 id=&#34;improvements&#34;&gt;Improvements
&lt;/h2&gt;&lt;p&gt;Thanks for these 2 new improvements among others:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Browser Source interact button (toolbar)&lt;/li&gt;
&lt;li&gt;Virtual Camera toggle button (system tray)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/06-21/obs/obs_browser_interact.png&#34;
    alt=&#34;Browser Source Interact Button&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Browser Source Interact Button&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/06-21/obs/obs_virtual_cam.png&#34;
    alt=&#34;Toggle Virtual Camera on System Tray Icon&amp;lt;&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Toggle Virtual Camera on System Tray Icon&amp;lt;&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&#34;final-thoughts&#34;&gt;Final Thoughts
&lt;/h2&gt;&lt;p&gt;This new version of OBS Studio definitely helps with the new added features. Now I want a selective record feature.&lt;/p&gt;
&lt;p&gt;I use OBS Studio together with &lt;a class=&#34;link&#34; href=&#34;https://streamelements.com/&#34; target=&#34;_blank&#34;&gt;StreamElements&lt;/a&gt; OBS Live to simplify my stream setup to Facebook Gaming. I now have 1,019 followers (as of this writing) and why not check me out there? Maybe talk about gaming, life, or programming? &lt;a class=&#34;link&#34; href=&#34;https://fb.gg/RedDavidGaming/&#34; target=&#34;_blank&#34;&gt;RedDavidGaming on Facebook Gaming&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I dedicate the starwall page for my stars-sender. Thanks and make sure to check out OBS Studio&amp;rsquo;s latest release &lt;a class=&#34;link&#34; href=&#34;https://obsproject.com/&#34; target=&#34;_blank&#34;&gt;here.&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>RPN Radio UI Overhaul</title>
        <link>https://reddavid.me/p/rpnradio-ui-overhaul/</link>
        <pubDate>Sun, 30 May 2021 00:15:36 +0800</pubDate>
        
        <guid>https://reddavid.me/p/rpnradio-ui-overhaul/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/rpnradio-ui.jpeg" alt="Featured image of post RPN Radio UI Overhaul" /&gt;&lt;p&gt;Browsing Instagram on my account now floods me with several UI/UX tips and practices, making me inspired to update and retouch my apps with some latest trends in mobile designs.&lt;/p&gt;
&lt;h2 id=&#34;old-look&#34;&gt;Old Look
&lt;/h2&gt;&lt;p&gt;Let&amp;rsquo;s take a look at what the app looked like before the update:&lt;/p&gt;
&lt;figure class=&#34;image&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/rpnradio/stationlist.png&#34; alt=&#34;RPN Radio Stations&#34; style=&#34;display: inline; width: 40%;&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/rpnradio/playingview.png&#34; alt=&#34;RPN Radio Streaming&#34; style=&#34;display: inline; width: 40%;&#34;&gt;
&lt;figcaption&gt;Old UI&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;br/&gt;
&lt;p&gt;Though it looked intuitive - with just two simple steps: 1) Launch app, 2) Select station and Listen; the main page does not give the user context on what the app does, which raise this question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What am I supposed to do?&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;overhaul&#34;&gt;Overhaul
&lt;/h2&gt;&lt;figure&gt;&lt;img src=&#34;https://media.giphy.com/media/xZsLh7B3KMMyUptD9D/giphy.gif&#34;&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;menu-list&#34;&gt;Menu List
&lt;/h3&gt;&lt;p&gt;At first glance of a first-time user, the stations list does NOT show that it is &amp;ldquo;clickable&amp;rdquo;. So the first UI update was to change the 4x3 grid to a simple list.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/05-21/rpnradio-newui/menu-list-bna.png&#34;
    alt=&#34;RPN Radio Stations&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;h4&gt;Station Menu Item Before and After&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;This subtle change provides the user a hint of &amp;ldquo;click me&amp;rdquo; by giving the list item a design of a button. It also gave a space for the station&amp;rsquo;s detail to be added - station&amp;rsquo;s location and live/offline status.&lt;/p&gt;
&lt;h3 id=&#34;header-and-controls&#34;&gt;Header and Controls
&lt;/h3&gt;&lt;p&gt;Ok, this area will look crammed especially on small-screen devices. Before this update though, I repositioned the buttons below the controls and were still crammed. This update allowed the horizontal list to be scrolled.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/05-21/rpnradio-newui/head-controls-bna.png&#34;
    alt=&#34;RPN Radio Stations&#34; width=&#34;90%&#34;&gt;&lt;figcaption&gt;
      &lt;h4&gt;Header &amp;amp; Controls Before and After&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I also changed the text that shows the current stations into a simpler one and updated the share icon.&lt;/p&gt;
&lt;h3 id=&#34;new-font&#34;&gt;New Font
&lt;/h3&gt;&lt;p&gt;I like &lt;a class=&#34;link&#34; href=&#34;https://fonts.google.com/specimen/Poppins&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Poppins&lt;/a&gt;.
&lt;br&gt;&lt;/p&gt;
&lt;h3 id=&#34;about&#34;&gt;About
&lt;/h3&gt;&lt;p&gt;Besides the UI updates mentioned above, I added an &amp;ldquo;About&amp;rdquo; page. It is a simple about and external links of RPN.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/05-21/rpnradio-newui/rpnradio-about.png&#34;
    alt=&#34;RPN Radio About&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;h4&gt;About page&lt;/h4&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;roadmap&#34;&gt;Roadmap
&lt;/h2&gt;&lt;p&gt;These are my to-do list for the app, which we will see soon on future updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No internet connection status&lt;/li&gt;
&lt;li&gt;Bottom player controls (Priority)&lt;/li&gt;
&lt;li&gt;App-aware sharing&lt;/li&gt;
&lt;li&gt;Rate and review prompt&lt;/li&gt;
&lt;li&gt;Links to station email/messaging&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;downloads&#34;&gt;Downloads
&lt;/h2&gt;&lt;p&gt;As always, the app is still available for Android and really soon for iOS.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=com.rpnradio.radiov1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Play Store&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://appgallery.huawei.com/#/app/C103076031&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Huawei AppGallery&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Unlocked: 1K Followers</title>
        <link>https://reddavid.me/p/unlocked-1k-followers/</link>
        <pubDate>Sat, 29 May 2021 22:26:48 +0800</pubDate>
        
        <guid>https://reddavid.me/p/unlocked-1k-followers/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/1k-followers.png" alt="Featured image of post Unlocked: 1K Followers" /&gt;&lt;p&gt;First of all, thank you so much to all who stayed, watched, and enjoyed my content.&lt;/p&gt;
&lt;p&gt;It was on May 26th that we finally got to a thousand following after a year of starting to be a Gaming Video Creator on Facebook. The stream felt like another day of chill streaming by playing a couple of hours of Minecraft. It was quite overwhelming for a small-time (and not full-time) streamer like me but thanks to my cousins and og supporters for helping me out in the chat and Discord server.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/1k-achievement.png&#34;
    alt=&#34;1K followers achievement custom&#34; width=&#34;80%&#34;&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;daily-nightly-streams&#34;&gt;&lt;del&gt;Daily&lt;/del&gt; Nightly Streams
&lt;/h2&gt;&lt;p&gt;Now that there&amp;rsquo;s that 1K following behind me, I will pursue to stream on a daily basis, even a short one because honestly, I miss talking and updating with them. I will also continue to improve my stream quality.&lt;/p&gt;
&lt;h2 id=&#34;not-minecraft-hello&#34;&gt;Not Minecraft, Hello?
&lt;/h2&gt;&lt;p&gt;Minecraft is a really popular game we all know that, and most of my followers were because of the game. I do not expect everyone to like me playing variety of games but I still hope most could support me when I come back playing other types of games. Although, I would still join our SMP server if I fail to stream Minecraft.&lt;/p&gt;
&lt;h2 id=&#34;twitchyoutube-switch&#34;&gt;Twitch/YouTube Switch
&lt;/h2&gt;&lt;p&gt;Yes, I have been thinking of switching to either one, why? First, Twitch have several audience interaction which I have been using when I watch my favorite streamers there like, watch points, play with viewers, etc and you can watch on app minimized.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/twitch-minimized.png&#34;
    alt=&#34;Watch Twitch Videos Minimized&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Watch Twitch Videos Minimized&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;While YouTube had a better chat system, but chat highlights and audience interactions are better - with chatbots.&lt;/p&gt;
&lt;p&gt;I held back these thoughts before since I did start my Facebook page a long time and gained a few followers. I just hoped if I made up my mind to switch, we can determine the real supporters. Maybe?&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s it for this blog post. Thank you again for visiting my website and you can catch up on my Gaming Videos on &lt;a class=&#34;link&#34; href=&#34;https://fb.gg/RedDavidGaming&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Facebook Gaming&lt;/a&gt; and follower me there. You can also follow me on my socials: @reddvid&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Streaming Again &amp; Minecraft SMP Season 2</title>
        <link>https://reddavid.me/p/minecraft-smp-season-2/</link>
        <pubDate>Sun, 18 Apr 2021 02:52:30 +0800</pubDate>
        
        <guid>https://reddavid.me/p/minecraft-smp-season-2/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/mc-smp-s02.png" alt="Featured image of post Streaming Again &amp; Minecraft SMP Season 2" /&gt;&lt;p&gt;Rejoice! My more-than-a-month-long hiatus finally came to an end - I&amp;rsquo;m back to streaming video games in Facebook Gaming. In just 2 days, I&amp;rsquo;ve managed to garner a whopping 8+ hours as compared before.&lt;/p&gt;
&lt;p&gt;This also means that I am back to relieving some stress thru my beloved game Minecraft, (Survival Mode).&lt;/p&gt;
&lt;h2 id=&#34;first-world&#34;&gt;First World?
&lt;/h2&gt;&lt;p&gt;The first server I rented became &lt;del&gt;toxic&lt;/del&gt; unenjoyable after a few months after opening it into the public - NO it&amp;rsquo;s not because of the new players, but because the server was technically &amp;ldquo;DONE&amp;rdquo; by having usable XP farms, stripped mines, food source, and other auto AFK farms. Which meant that new players have nothing more to do but mess around most of the time.&lt;/p&gt;
&lt;p&gt;I tried to reload the server with a new world but it kept corrupting upto the point that I reverted it back to the older (toxic) world. And I stopped playing less and less.&lt;/p&gt;
&lt;h2 id=&#34;refreshed-and-new-season-2&#34;&gt;Refreshed and New? Season 2
&lt;/h2&gt;&lt;p&gt;Yes, after I decided to stream again, I hastily rented a new server and invite some of my OG followers to play with me. As of now, the world is still peaceful and managed to invite more players in hoping we can live happily in the upcoming days.&lt;/p&gt;
&lt;p&gt;Unlike before, the server is now Offline-mode, meaning that non-Mojang accounts can now join - be CAREFUL though, WE CAN STILL &lt;strong&gt;BAN&lt;/strong&gt; YOU.&lt;/p&gt;
&lt;h2 id=&#34;wanna-join&#34;&gt;Wanna Join?
&lt;/h2&gt;&lt;p&gt;Head over to our Discord server for the rules and guidelines, and for the Server IP.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/rKnJb4J&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Red David Discord Server&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Want to Own a Minecraft Server&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hosted by Shockbyte, cheap and reliable servers are offered for you. Check them out &lt;a class=&#34;link&#34; href=&#34;https://bit.ly/ShockByteMC&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;hello-1k-followers&#34;&gt;Hello 1K Followers
&lt;/h2&gt;&lt;p&gt;I have been aiming to reach followers before the year 2020 ends but I failed to do so, much more that I stopped streaming for more than a month.&lt;/p&gt;
&lt;p&gt;Now with regained confidence, I am on the path to reach that goal while improving my streaming. So head over to my &lt;a class=&#34;link&#34; href=&#34;https://fb.gg/RedDavidGaming&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Facebook Gaming Page&lt;/a&gt; and see if you like me to gain a Follow!&lt;/p&gt;
&lt;h2 id=&#34;facebook-stars-&#34;&gt;Facebook Stars ✨🌟⭐
&lt;/h2&gt;&lt;p&gt;Also, I tried streaming mobile games now and then but the current setup is not suited for it. I am slowly building funds to get the setup for mobile games too.&lt;/p&gt;
&lt;p&gt;Receiving stars during my live streams are very much appreciated by placing your names on my Starwall here: &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/starwall&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Star-senders Wall&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;other-ways-to-support&#34;&gt;Other Ways to Support
&lt;/h2&gt;&lt;p&gt;Hi, I do coding on my own and a small-time streamer, any help would be appreciated 😊&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://buymeacoffee.com/reddavid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Buy me a Coffee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ko-fi.com/reddavid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ko-fi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://paypal.me/reddvid/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PayPal.me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://streamelements.com/reddavidgaming/tip&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;StreamElements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GCash: 0915-987-4221&lt;/li&gt;
&lt;li&gt;Visit my links: &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/links&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Red David Links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/zipcodeph-app/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Download&lt;/a&gt; my ZIP Code PH app&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>App Landing Page for ZIP Code PH</title>
        <link>https://reddavid.me/p/app-landing-page-for-zip-code-ph/</link>
        <pubDate>Fri, 19 Mar 2021 02:21:44 +0800</pubDate>
        
        <guid>https://reddavid.me/p/app-landing-page-for-zip-code-ph/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/zipcodeph-applanding.png" alt="Featured image of post App Landing Page for ZIP Code PH" /&gt;&lt;p&gt;Now that ZIP Code PH is available for both Android and iOS, I wanted to build a landing page for it.&lt;/p&gt;
&lt;h2 id=&#34;inspiration&#34;&gt;Inspiration
&lt;/h2&gt;&lt;p&gt;I viewed some designs online and found inspiration from &lt;a class=&#34;link&#34; href=&#34;https://get-thrive.app/&#34; target=&#34;_blank&#34;&gt;Thrive&lt;/a&gt;, which I never heard of - thanks anyway!&lt;/p&gt;
&lt;h2 id=&#34;launch-and-land&#34;&gt;Launch and Land
&lt;/h2&gt;&lt;p&gt;The webpage is available &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/zipcodeph-app&#34; target=&#34;_blank&#34;&gt;HERE&lt;/a&gt;. The page is still a link to my website but will soon acquire a domain for it soon. Also, the page is still a basic design but complete with the download links, which I will improve soon.&lt;/p&gt;
&lt;p&gt;Will keep you updated!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>[Update: NOW AVAILABLE] ZIP Code PH for iOS</title>
        <link>https://reddavid.me/p/zipcodeph-ios/</link>
        <pubDate>Tue, 16 Mar 2021 01:28:15 +0800</pubDate>
        
        <guid>https://reddavid.me/p/zipcodeph-ios/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/zipcodeph-ios.png" alt="Featured image of post [Update: NOW AVAILABLE] ZIP Code PH for iOS" /&gt;&lt;h2 id=&#34;now-available&#34;&gt;Now Available
&lt;/h2&gt;&lt;p&gt;You can get the app from App Store (iPhone and iPad) for only Php49 (US$0.99) - sorry for the paywall. I&amp;rsquo;m still a struggling developer and just to let you know, developing for Apple costs more compared to Windows and Google Play Store.&lt;/p&gt;
&lt;p&gt;Get the app below:&lt;/p&gt;
&lt;center&gt;
&lt;a class=&#34;link&#34; href=&#34;https://apps.apple.com/us/app/zip-code-ph/id1555921863?itsct=apps_box&amp;amp;itscg=30200&#34; style=&#34;display: inline-block; overflow: hidden; border-radius: 13px; width: 250px; height: 83px;&#34;&gt;&lt;img src=&#34;https://tools.applemediaservices.com/api/badges/download-on-the-app-store/black/en-us?size=250x83&amp;amp;releaseDate=1615766400&amp;h=60d62bace1ec567408893f9085310f3c&#34; alt=&#34;Download on the App Store&#34; style=&#34;border-radius: 13px; width: 250px; height: 83px;&#34;&gt;&lt;/a&gt;
&lt;br&gt;&lt;img src=&#34;https://tools-qr-production.s3.amazonaws.com/output/apple-toolbox/a1b53b4233734ce37673d9f70803db74/47cd37c9-fb35-4a15-b8b8-958219968ea0.png&#34; width=&#34;200px&#34;&gt;
&lt;/center&gt;
&lt;hr&gt;
&lt;h2 id=&#34;lets-go&#34;&gt;Let&amp;rsquo;s Go
&lt;/h2&gt;&lt;p&gt;For the last few weeks, I spent my free time building my app, ZIP Code PH, for iOS using Apple&amp;rsquo;s native language SwiftUI.&lt;/p&gt;
&lt;p&gt;Using a Mac is not that hard anymore since I&amp;rsquo;ve test ran macOS Catalina on VirtualBox. I managed to run XCode and tried to tinker with the language, and built some UI mockups.&lt;/p&gt;
&lt;p&gt;And luckily, the workplace has acquired a mac mini to cater Apple users for our apps (which is coming as soon as possible). I will also be the one developing the iOS apps, so check them out soon.&lt;/p&gt;
&lt;h2 id=&#34;development&#34;&gt;Development
&lt;/h2&gt;&lt;h3 id=&#34;main-and-about-page&#34;&gt;Main and About Page
&lt;/h3&gt;&lt;p&gt;I am fairly new to SwiftUI so converting? the codes I used for Windows and Xamarin Android app - XAML and C# - will be useless. It took a few days to build the bare UI. I started with the Main Page and the Help page since they don&amp;rsquo;t consume a lot of code-behind.&lt;/p&gt;
&lt;p&gt;The Main Page took a lot of iterations but below is the final view (as of this writing):&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/03-21/zipcodeph-ios/mainpage.png&#34;
    alt=&#34;Main Page&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Main Page&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The Help/About Page contains the same details I used in the Android app except that I added attributions to the new images in the Main Page (thanks &lt;a class=&#34;link&#34; href=&#34;https://unsplash.com/&#34; target=&#34;_blank&#34;&gt;Unsplash!&lt;/a&gt;)&lt;/p&gt;
&lt;figure class=&#34;image&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/03-21/zipcodeph-ios/about-1.png&#34; style=&#34;display:inline;margin-left:auto;margin-right:auto;width:40%;&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/03-21/zipcodeph-ios/about-2.png&#34; style=&#34;display:inline;margin-left:auto;margin-right:auto;width:40%;&#34;&gt;
&lt;figcaption&gt;Help &amp; About Page&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;br/&gt;
&lt;h3 id=&#34;search-page&#34;&gt;Search Page
&lt;/h3&gt;&lt;p&gt;Next up is the Search Page, I coded this before the menus since the code-behind logic is much simpler since we will use all the zip codes instead of filtering them to areas.&lt;/p&gt;
&lt;p&gt;I didn&amp;rsquo;t explorer SwiftUI that much but I found this code to build the Search bar iOS-style:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/03-21/zipcodeph-ios/searchbar.png&#34;
    alt=&#34;iOS Search Bar&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;iOS Search Bar&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;40
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;41
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;42
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;43
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;44
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;45
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;HStack&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;TextField&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Search ZIP Code PH&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;err&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;horizontal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;25&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;background&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;systemGray6&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cornerRadius&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;overlay&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;HStack&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;systemName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;magnifyingglass&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foregroundColor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;frame&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;minWidth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;maxWidth&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;infinity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;alignment&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;leading&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;leading&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isEditing&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;bp&#34;&gt;isEmpty&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;n&#34;&gt;Button&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        &lt;span class=&#34;n&#34;&gt;Image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;systemName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;multiply.circle.fill&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;foregroundColor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;gray&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                            &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;trailing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;horizontal&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;onTapGesture&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;isEditing&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isEditing&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;Button&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;action&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;bp&#34;&gt;print&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;$&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;isEditing&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;kc&#34;&gt;self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;text&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;c1&#34;&gt;// Dismiss the keyboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;UIApplication&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;shared&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sendAction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;#selector&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UIResponder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;resignFirstResponder&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;),&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;from&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nil&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;Text&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Cancel&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;leading&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;padding&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;trailing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;transition&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;move&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;edge&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;trailing&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;animation&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;easeInOut&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br&gt;
&lt;video muted width=&#34;280&#34; controls style=&#34;display:block;margin-left:auto;margin-right:auto;&#34;&gt;
  &lt;source src=&#34;https://reddavid.me/videos/03-21/zipcodeph-ios/searchpage.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;p&gt;I spent a few times making the search (filtering) logic work the way I wanted that I almost gave up with SwiftUI programming 😅&lt;/p&gt;
&lt;h2 id=&#34;menu-and-area-list-page&#34;&gt;Menu and Area List Page
&lt;/h2&gt;&lt;p&gt;After understanding the filtering code while developing the Search Page, it is time to code the Menu and Area pages. The UI looks a lot like the Android counterpart but the built-in Title style for iOS makes the UI better by collapsing the title to inline when scrolled. This is how it looks like on version 1.0.4&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/03-21/zipcodeph-ios/area.png&#34;
    alt=&#34;City and Area Pages&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;City and Area Pages&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;favorites&#34;&gt;Favorites
&lt;/h2&gt;&lt;p&gt;Now the challenge begins, how to implement favorites - saving and loading data - while making the UI flexible when an item is added to favorites.&lt;/p&gt;
&lt;p&gt;After more than a week of mind-bending development, I made it to work with the help of stackoverflow 😅. (Every developer use it, right? Right?)&lt;/p&gt;
&lt;video muted width=&#34;280&#34; controls style=&#34;display:block;margin-left:auto;margin-right:auto;&#34;&gt;
  &lt;source src=&#34;https://reddavid.me/videos/03-21/zipcodeph-ios/favorite.mp4&#34; type=&#34;video/mp4&#34;&gt;
&lt;/video&gt;
&lt;br/&gt;
&lt;h2 id=&#34;showcase&#34;&gt;Showcase
&lt;/h2&gt;&lt;p&gt;Below are the app showcase which you can see on the App Store as soon as the app is available&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/color-mode.png&#34; width=&#34;1242&#34;  height=&#34;2688&#34;  srcset=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/color-mode_hu_d4af419c8f5dc123.png 480w, https://reddavid.me/p/zipcodeph-ios/img/gallery/color-mode_hu_13ed46a6f673b674.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Light and Dark Mode&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/favorites.png&#34; width=&#34;1242&#34;  height=&#34;2688&#34;  srcset=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/favorites_hu_438bb8a8b9cfb526.png 480w, https://reddavid.me/p/zipcodeph-ios/img/gallery/favorites_hu_ab2db38c832e9998.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Favorites Page&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/search.png&#34; width=&#34;1242&#34;  height=&#34;2688&#34;  srcset=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/search_hu_88fa310ef5e67c35.png 480w, https://reddavid.me/p/zipcodeph-ios/img/gallery/search_hu_13f3ad01a3947f41.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Search Page&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/trivia.png&#34; width=&#34;1242&#34;  height=&#34;2688&#34;  srcset=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/trivia_hu_7cbc55091c7ca88c.png 480w, https://reddavid.me/p/zipcodeph-ios/img/gallery/trivia_hu_c808dafa3b6af635.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Trivias&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/ncr-and-luzon.png&#34; width=&#34;1242&#34;  height=&#34;2688&#34;  srcset=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/ncr-and-luzon_hu_ff82495b58f87066.png 480w, https://reddavid.me/p/zipcodeph-ios/img/gallery/ncr-and-luzon_hu_181be16952631482.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;NCR and Luzon&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/visayas.png&#34; width=&#34;1242&#34;  height=&#34;2688&#34;  srcset=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/visayas_hu_436d23ae08b750af.png 480w, https://reddavid.me/p/zipcodeph-ios/img/gallery/visayas_hu_920134d28fba3d1c.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Visayas&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/mindanao.png&#34; width=&#34;1242&#34;  height=&#34;2688&#34;  srcset=&#34;https://reddavid.me/p/zipcodeph-ios/img/gallery/mindanao_hu_71ee3352d33ba905.png 480w, https://reddavid.me/p/zipcodeph-ios/img/gallery/mindanao_hu_c2995fb8008d309b.png 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Mindanao&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;46&#34;
	data-flex-basis=&#34;110px&#34; &gt;&lt;/p&gt;
&lt;h2 id=&#34;downloads&#34;&gt;Downloads
&lt;/h2&gt;&lt;p&gt;(Now Available!) &lt;a class=&#34;link&#34; href=&#34;https://apple.co/3lrnrBO&#34; target=&#34;_blank&#34;&gt;Get the app&lt;/a&gt; on App Store for iPhone and iPad.&lt;/p&gt;
&lt;p&gt;The app can be tested and I will share the TestFlight link soon. I am still fixing some minor issues and will announce the availability on a new blog post.&lt;/p&gt;
&lt;p&gt;For the meantime, the app is still available for Android and Windows 10.&lt;/p&gt;
&lt;p&gt;You can check the blog posts here for the download links:
&lt;br/&gt;
&lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/zipcodeph-android-dark-mode/&#34;&gt;ZIP Code PH for Android gets Dark Mode
&lt;/a&gt;
&lt;br/&gt;
&lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/zipcodeph-new-ui/&#34;&gt;ZIP Code PH Gets Refreshed UI&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Upgrade! Samsung 970 EVO Plus</title>
        <link>https://reddavid.me/p/upgrade-samsung-970-evo-plus/</link>
        <pubDate>Tue, 16 Mar 2021 01:09:00 +0800</pubDate>
        
        <guid>https://reddavid.me/p/upgrade-samsung-970-evo-plus/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/970-evo-plus.webp" alt="Featured image of post Upgrade! Samsung 970 EVO Plus" /&gt;&lt;p&gt;Here we go again folks! Another PC upgrade, this time we take our storage to the next level.&lt;/p&gt;
&lt;h2 id=&#34;top-player&#34;&gt;Top Player
&lt;/h2&gt;&lt;p&gt;I just bought a Samsung 970 EVO Plus, 1TB for my &amp;ldquo;coding needs&amp;rdquo;. I recently experience a throttle while using my current XPG 500GB - I have been using some Virtual Machines lately to test out some things, and the SSD space gets loaded up quickly.&lt;/p&gt;
&lt;p&gt;The SSD costs me around US$100 and failed to get a cheaper one since I am not paying the whole price - again, I got this for credit. 😅&lt;/p&gt;
&lt;h2 id=&#34;samsung-why&#34;&gt;Samsung, why?
&lt;/h2&gt;&lt;p&gt;Samsung has been the top brand for SSDs and I can say this myself since personally, I used an 860 EVO in the past for my laptop. And even though my current XPG SSD does it&amp;rsquo;s job, I needed an storage upgrade and it&amp;rsquo;s time to get this one.&lt;/p&gt;
&lt;p&gt;The technical specs and comparison is available in the internet which you can visit on PCWorld, &lt;a class=&#34;link&#34; href=&#34;https://www.pcworld.com/article/3334876/samsung-970-evo-plus-review-samsungs-entry-level-nvme-ssd-is-faster-and-cheaper.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Samsung 970 EVO Plus review&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;take-a-look&#34;&gt;Take a Look
&lt;/h2&gt;&lt;p&gt;I forgot to take pictures to avoid the SSD from picking up some static from my desk mat. But I did take a picture of the box before installing it on the system.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/03-21/samsung-evo/samsung-970-evo-plus-box.png&#34;
    alt=&#34;Samsung 970 EVO Plus&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Samsung 970 EVO Plus&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/03-21/samsung-evo/taskbar.png&#34;
    alt=&#34;Task Manager&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;SSD Usage in Task Manager&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;This is not to flaunt the things I have, I&amp;rsquo;m just trying to share my thoughts and share which can help my daily activities like coding, and file and graphics processing.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Flutter Coding</title>
        <link>https://reddavid.me/p/flutter-coding/</link>
        <pubDate>Mon, 15 Mar 2021 22:06:53 +0800</pubDate>
        
        <guid>https://reddavid.me/p/flutter-coding/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/android-love-flutter.png" alt="Featured image of post Flutter Coding" /&gt;&lt;p&gt;I&amp;rsquo;ve heard about Flutter a long time ago but never actually used it or read in-depth about it. But I knew it was a UI framework from Google which uses a single code-base for mobile and web apps.&lt;/p&gt;
&lt;p&gt;As you may know now, I developed some apps for Android and iOS using their native languages - Java and SwiftUI - and not a single-codebase language like Flutter. But I did try to code the RPN Radio app using Xamarin.Forms but the implementation of the Audio Players s*cks a$$ to be honest.&lt;/p&gt;
&lt;p&gt;Coding with their native languages was just a personal challenge for me being tech-savvy and wanted to experiment and dive myself to their &amp;ldquo;native world&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;android-and-bad-java-code&#34;&gt;Android and Bad (Java) Code
&lt;/h2&gt;&lt;p&gt;The Android Java code stuff was working - well, not that well - the implementation of the player was frequently bugged that it causes the app to crash. I tried several work arounds to the code to prevent the nasties, until I realized this is bad code.&lt;/p&gt;
&lt;p&gt;To satisfy myself, and the users, I challenged myself to rebuild the app using Flutter.&lt;/p&gt;
&lt;p&gt;Ever since March started, I started reading about Flutter and did some basic UI.&lt;/p&gt;
&lt;p&gt;But first, let me tell you how I installed Flutter on Windows.&lt;/p&gt;
&lt;h2 id=&#34;pre-installation-pre-requisites&#34;&gt;Pre-installation (Pre-requisites?)
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Make sure you have Git on your device. I installed Git for Windows&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;ve had Android Studio installed on my system ever since I coded for Android, which is also a recommended IDE for Flutter.&lt;/li&gt;
&lt;li&gt;Some Android SDKs and;&lt;/li&gt;
&lt;li&gt;Google Chrome browser.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;installation&#34;&gt;Installation
&lt;/h2&gt;&lt;p&gt;I pretty much followed the recommended guide as stated here: &lt;a class=&#34;link&#34; href=&#34;https://flutter.dev/docs/get-started/install/windows&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Install Flutter (Windows)&lt;/a&gt;. But instead of &lt;code&gt;C:\src\flutter&lt;/code&gt;, I put it a level higher like this: &lt;code&gt;C:\flutter&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Then added environment variable to Path. &amp;lt;- This part is important if you want to run flutter commands in the command line&lt;/p&gt;
&lt;p&gt;Ran &lt;code&gt;flutter doctor&lt;/code&gt; until all requirements are check out&lt;/p&gt;
&lt;h2 id=&#34;ide-wait&#34;&gt;IDE, wait&amp;hellip;
&lt;/h2&gt;&lt;p&gt;My IDE of choice is Android Studio, so I can use the emulators I already created and to avoid any additional setup when choosing another.&lt;/p&gt;
&lt;p&gt;Upon opening the IDE, it was said that creating a new Flutter project should be there on the menu screen but it was missing!&lt;/p&gt;
&lt;p&gt;Even though &lt;code&gt;flutter doctor&lt;/code&gt; checked everything, I was disappointed that I can&amp;rsquo;t start right away. Scraping the internet for solutions, I checked Android Studio&amp;rsquo;s configuration and there, I downloaded some Flutter and Dart plugins which after a software restart, I can now create a new Flutter project.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/03-21/flutter/android-studio-flutter.png&#34;
    alt=&#34;New Flutter Project&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;New Flutter Project&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Since, the app I am planning to rebuild in Flutter is single-paged, it is a good starting-point to play around the Flutter widgets.&lt;/p&gt;
&lt;p&gt;Coming from XAML, where everything seems &amp;ldquo;as is&amp;rdquo;, I am so uncomfortable about coding UI using script-like codes. But having started SwiftUI for a few weeks, I pretty much can stand it. 😅&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/03-21/flutter/ui-code.png&#34;
    alt=&#34;Flutter UI Code&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Flutter UI Code&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;hello-world&#34;&gt;Hello, World
&lt;/h2&gt;&lt;p&gt;Being the beginner, again, I am on my way to building to much more with Flutter with prettier code and nicer implementations.&lt;/p&gt;
&lt;p&gt;I am now reading some books and watching some tutorials on YouTube to help me advance a little more each day.&lt;/p&gt;
&lt;p&gt;Ever since February began, I have been active to coding again. Learning new stuff that I do enjoy!&lt;/p&gt;
&lt;p&gt;Thanks for reading my blog post, and will share some updates on how I would use Flutter sometime soon! Always take care peeps!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Tune In RPN Radio Update</title>
        <link>https://reddavid.me/p/tunein-update/</link>
        <pubDate>Tue, 16 Feb 2021 20:30:09 +0800</pubDate>
        
        <guid>https://reddavid.me/p/tunein-update/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/rpn-tunein.png" alt="Featured image of post Tune In RPN Radio Update" /&gt;&lt;p&gt;I updated the tune-in website for RPN. This post will detail the changes, what&amp;rsquo;s new or removed, and how the update went.&lt;/p&gt;
&lt;h2 id=&#34;mainpage-and-mobile-first-design&#34;&gt;MainPage and Mobile-First Design
&lt;/h2&gt;&lt;p&gt;The main page remains got a few changes, starting with the font face and size. Before the update, the font family forced to check for &lt;a class=&#34;link&#34; href=&#34;https://www.marksimonson.com/fonts/view/proxima-nova&#34; target=&#34;_blank&#34;&gt;Proxima Nova&lt;/a&gt; and fallback to Arial Nova or other &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Sans-serif&#34; target=&#34;_blank&#34;&gt;sans serif fonts.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then I cleaned up my CSS file to make the whole website &lt;a class=&#34;link&#34; href=&#34;https://medium.com/@Vincentxia77/what-is-mobile-first-design-why-its-important-how-to-make-it-7d3cf2e29d00&#34; target=&#34;_blank&#34;&gt;&amp;ldquo;mobile-first&amp;rdquo;.&lt;/a&gt;
&lt;br/&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;h2 id=&#34;now-playing-station-pages&#34;&gt;Now Playing Station Pages
&lt;/h2&gt;&lt;p&gt;The tune-in or now playing page received most of the update. I&amp;rsquo;ve broken some of them below:&lt;/p&gt;
&lt;h3 id=&#34;back-button&#34;&gt;Back Button
&lt;/h3&gt;&lt;p&gt;The back button got a lot of love with some logic. At first, the button always takes you to the home (main) page with the &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tag attribute &lt;code&gt;href=&amp;quot;/&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now, it&amp;rsquo;s got a javascript code that checks for an open navigation menu, and whether the history came from the tunein.rpnradio.com domain.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;goBack&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;isNavOpen&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;closeNav&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;document&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;referrer&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;location&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;href&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://tunein.rpnradio.com/&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;window&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;history&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;back&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This logic was finalized when I opened a page link on my iPhone then the back button took me to the previous page - other site.&lt;/p&gt;
&lt;p&gt;Now the back button takes you to home page when started with a station page.&lt;/p&gt;
&lt;h3 id=&#34;navigation-menu&#34;&gt;Navigation Menu
&lt;/h3&gt;&lt;p&gt;The station pages got a navigation menu that resembles the home page. This is to give the listener a continuous audio stream playback whilst needing to change a station.&lt;/p&gt;
&lt;p&gt;Note: The navigation drawer will not work on browser back button - as I learned with other sites. The browser just simply go back to the previous page.&lt;/p&gt;
&lt;h2 id=&#34;security&#34;&gt;Security
&lt;/h2&gt;&lt;p&gt;The website was also SSL-enabled - &lt;a class=&#34;link&#34; href=&#34;https://www.websecurity.digicert.com/security-topics/https-everywhere&#34; target=&#34;_blank&#34;&gt;HTTPS Everywhere.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This also means that the old stream URLs will not work. Thankfully, the audio servers have secured stream URLs for secure websites.&lt;/p&gt;
&lt;h2 id=&#34;open-graph-metadata&#34;&gt;Open Graph Metadata
&lt;/h2&gt;&lt;p&gt;Social Media sites are the places where websites get the most referrers. So having metadata for them not just makes the website Facebook- or Twitter-friendly but it is a great addition to how it would look like when shared.&lt;/p&gt;
&lt;p&gt;Making the images took waaaaay longer than I expected. I decided to add 3 mockup devices that shows the website on these devices. You can see the share preview below:&lt;/p&gt;
&lt;figure class=&#34;image&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/tunein/ogrpn.png&#34; alt=&#34;Tune In Open Graph Image for Homepage&#34; style=&#34;width: 60%; &#34;&gt;
&lt;figcaption&gt;Facebook Open Graph Preview&lt;/figcaption&gt;
&lt;br/&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/tunein/ogstation.png&#34; alt=&#34;Tune In Open Graph Image for Homepage&#34; style=&#34;width: 60%; &#34;&gt;
&lt;figcaption&gt;Twitter Open Graph Preview&lt;/figcaption&gt;
&lt;/figure&gt;
Creating the metadata tags was made easy by using &lt;a class=&#34;link&#34; href=&#34;https://metatags.io/&#34; target=&#34;_blank&#34;&gt;Metatags.io&lt;/a&gt;.
&lt;h2 id=&#34;site-icons&#34;&gt;Site Icons
&lt;/h2&gt;&lt;p&gt;I went on to also update the website&amp;rsquo;s favicons, to differentiate tunein to the news website. It now has the Android app icon below:&lt;/p&gt;
&lt;figure&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/tunein/radio_app.png&#34; alt=&#34;Tune In Open Graph Image for Homepage&#34; style=&#34;width: 20%; &#34;&gt;
&lt;figcaption&gt;Website Favicon&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 id=&#34;google-ads&#34;&gt;Google Ads
&lt;/h2&gt;&lt;p&gt;I replaced the part suggesting other methods to tunein (Zeno app, Radio Garden and our native Android app) with a Google Auto ad.&lt;/p&gt;
&lt;p&gt;We all hate ads but this is the only modest way to profit for most websites.&lt;/p&gt;
&lt;h2 id=&#34;htaccess-to-remove-html&#34;&gt;.htaccess to Remove .html
&lt;/h2&gt;&lt;p&gt;I finally made it to work, shorten the address for site navigation. Instead of showing the full file name: &lt;pre&gt;&lt;small&gt;tunein.rpnradio.com/batac.html&lt;/small&gt;&lt;/pre&gt;
Some rules were added to the .htaccess file to make it &lt;pre&gt;&lt;small&gt;tunein.rpnradio.com/batac&lt;/small&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;.htaccess file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;footer-finally&#34;&gt;Footer Finally
&lt;/h2&gt;&lt;p&gt;I added a subtle footer to the whole website. That&amp;rsquo;s it. :)&lt;/p&gt;
&lt;h2 id=&#34;final-words&#34;&gt;Final Words
&lt;/h2&gt;&lt;p&gt;This website is another medium for the company&amp;rsquo;s aim for a greater reach by expanding to Digital Media. In addition to our native apps (which is available for Android - &lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=com.rpnradio.radiov1&amp;hl=en&amp;gl=US&#34; target=&#34;_blank&#34;&gt;Google Play Store&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://appgallery.huawei.com/#/app/C103076031&#34; target=&#34;_blank&#34;&gt;Huawei App Gallery&lt;/a&gt;), the website also serves a means for our audiences to access our stations&amp;rsquo; broadcast anytime and anywhere in the world.&lt;/p&gt;
&lt;p&gt;You can visit the website here: &lt;a class=&#34;link&#34; href=&#34;https://tunein.rpnradio.com/&#34; target=&#34;_blank&#34;&gt;Tune In — RPN Radio.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You may also want to check my blog post about the RPN Radio App here:&lt;br/&gt;&lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/rpnradio-android/&#34;&gt;RPN Radio: Streaming App for Android.&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Starwall</title>
        <link>https://reddavid.me/starwall/</link>
        <pubDate>Fri, 12 Feb 2021 21:59:46 +0800</pubDate>
        
        <guid>https://reddavid.me/starwall/</guid>
        <description>&lt;img src=&#34;https://reddavid.me/images/stars.png&#34; style=&#34;border-radius: 200px; margin-left: auto; margin-right: auto; width: 20%; display: block; margin-top: 2em; &#34;/&gt;
&lt;h1 style=&#34;text-align: center; margin-bottom: 2em; margin-top: 5px; &#34;&gt;Stars Senders Wall&lt;/h1&gt;
&lt;ul id=&#34;people-list&#34; style=&#34;list-style-type: none;&#34;&gt; &lt;li&gt;Marineth E.&lt;/li&gt; &lt;li&gt;Jan Ronel M.&lt;/li&gt; &lt;li&gt;Lloyd N.&lt;/li&gt; &lt;li&gt;Neng Crochet&lt;/li&gt; &lt;li&gt;Kestler F.&lt;/li&gt; &lt;li&gt;Mark Kevin L.&lt;/li&gt; &lt;li&gt;Jairus G.&lt;/li&gt; &lt;li&gt;Daryl N.&lt;/li&gt; &lt;li&gt;Kent Jasper W.&lt;/li&gt; &lt;li&gt;Tep Jco&lt;/li&gt; &lt;li&gt;Thirdy A.&lt;/li&gt; &lt;li&gt;Emmanuel James T.&lt;/li&gt; &lt;/ul&gt;
&lt;br&gt;
&lt;h6&gt;Updated 14-Dec-2021&lt;/h6&gt;
&lt;p style=&#34;margin-top: 50px;&#34;&gt;Follow me on &lt;a class=&#34;link&#34; href=&#34;https://fb.gg/RedDavidGaming/&#34; target=&#34;_blank&#34;&gt;Facebook Gaming&lt;/a&gt; to watch gameplay and send stars to be a part of the Star Senders Wall.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Developing for Apple Soon</title>
        <link>https://reddavid.me/p/developing-for-apple-soon/</link>
        <pubDate>Sat, 06 Feb 2021 00:40:14 +0800</pubDate>
        
        <guid>https://reddavid.me/p/developing-for-apple-soon/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/appstore.png" alt="Featured image of post Developing for Apple Soon" /&gt;&lt;h2 id=&#34;me--apple-user&#34;&gt;Me = Apple User?
&lt;/h2&gt;&lt;p&gt;Yes, I gave in to use an Apple device. Well, I&amp;rsquo;ve tried an iPhone XS before, and I must admit, having a device with software dedicated to its hardware is chef&amp;rsquo;s kiss. That&amp;rsquo;s what I liked about Apple, the hardware and software work along each other, and like most people, the price-tag for their phones held me back until December.&lt;/p&gt;
&lt;p&gt;I &lt;em&gt;loaned&lt;/em&gt; for an iPhone 11 since the iPhone 12 is expensive and I like the 11&amp;rsquo;s grip instead of the sharp edges of the new design. I got a yellow one since the black sold out. Then I realized black, though very simple, is such a generic color that it doesn&amp;rsquo;t stand out as a phone&amp;rsquo;s color and I&amp;rsquo;ve had too many black phones before.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/02-21/iphone-11/iphone11back.jpg&#34;
    alt=&#34;Yellow iPhone 11&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Yellow iPhone 11&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;br/&gt;&lt;/p&gt;
&lt;h2 id=&#34;developing-apps-for-ios-soon&#34;&gt;Developing Apps for iOS Soon
&lt;/h2&gt;&lt;p&gt;I&amp;rsquo;m excited to learn new things and finally applying the cross-platform capabilities of &lt;a class=&#34;link&#34; href=&#34;https://dotnet.microsoft.com/apps/xamarin/xamarin-forms&#34;&gt;Xamarin.Forms&lt;/a&gt; which I have used in some of my Android apps and it&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://docs.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/&#34;&gt;C#&lt;/a&gt;. I also want to check out native code from Apple, &lt;a class=&#34;link&#34; href=&#34;https://developer.apple.com/xcode/swiftui/&#34;&gt;SwiftUI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Developing for Apple is quite costly, that you need to own a Mac (or rent online) and ₱4450 ($99) for an individual to publish to the App Store. And it is YEARLY.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/02-21/iphone-11/applibrary.jpg&#34;
    alt=&#34;iOS 14 App Library (is that TikTok? 😅)&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;iOS 14 App Library (is that TikTok? 😅)&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;So, to test things out, I would be putting my app &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/zipcodeph-android-dark-mode/&#34;&gt;ZIP Code PH&lt;/a&gt; on the App Store and might set a (very very small) price to support this costly Apple environment 😂.&lt;/p&gt;
&lt;h2 id=&#34;in-the-meantime&#34;&gt;In the meantime&amp;hellip;
&lt;/h2&gt;&lt;p&gt;Go ahead and check out my apps on the &lt;a class=&#34;link&#34; href=&#34;ms-windows-store://publisher?name=Red David&#34;&gt;Windows 10 Store&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/dev?id=5465762079490576029&#34;&gt;Google Play Store&lt;/a&gt; both under Red David.&lt;/p&gt;
&lt;p&gt;See you soon!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ZIP Code PH for Android gets Dark Mode</title>
        <link>https://reddavid.me/p/zipcodeph-android-dark-mode/</link>
        <pubDate>Fri, 05 Feb 2021 23:17:22 +0800</pubDate>
        
        <guid>https://reddavid.me/p/zipcodeph-android-dark-mode/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/zipcodeph-android.png" alt="Featured image of post ZIP Code PH for Android gets Dark Mode" /&gt;&lt;h2 id=&#34;the-pandemic-and-night-owls&#34;&gt;The Pandemic and Night Owls
&lt;/h2&gt;&lt;p&gt;My app, ZIP Code PH, has been available on Google Play Store for more than a year now and because of the pandemic, more and more people are staying at home and are mostly &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Night_owl_(person)&#34;&gt;night-owls&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And app and software developers are now giving their projects dark mode - not just to follow accessibility standards but offer an option for people to reduce or avoid eye strain.&lt;/p&gt;
&lt;h2 id=&#34;heres-dark-mode-for-ya&#34;&gt;Here&amp;rsquo;s Dark Mode for ya
&lt;/h2&gt;&lt;p&gt;So here I am, picking up again on coding (for my apps) and started giving some apps a dark flavor. It almost took me a month to develop and test since available Xamarin Forms documentation didn&amp;rsquo;t suit my liking.&lt;/p&gt;
&lt;h2 id=&#34;quick-app-features&#34;&gt;Quick App Features
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Toggle light and dark mode&lt;/li&gt;
&lt;li&gt;Quick search Philippine ZIP codes&lt;/li&gt;
&lt;li&gt;Favorite (Bookmark) selected ZIP codes for easy reference&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;screenshots&#34;&gt;Screenshots
&lt;/h2&gt;&lt;p&gt;See for yourself the light and dark mode for the app below.&lt;/p&gt;
&lt;figure class=&#34;image&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/zipcode-darkmode/main-light.png&#34; alt=&#34;ZIP Code PH - Main Menu on Light Mode&#34; style=&#34;display: inline; width: 30%;&#34;&gt;
&lt;span style=&#34;margin: 0 10px&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/zipcode-darkmode/main-dark.png&#34; alt=&#34;ZIP Code PH - Main Menu on Dark Mode&#34; style=&#34;display: inline; width: 30%;&#34;&gt;
&lt;figcaption&gt;ZIP Code PH - Main Menu&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&#34;image&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/zipcode-darkmode/list-light.png&#34; alt=&#34;ZIP Code PH - ZIP codes on Light Mode&#34; style=&#34;display: inline; width: 30%;&#34;&gt;
&lt;span style=&#34;margin: 0 10px&#34;&gt;&lt;/span&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/zipcode-darkmode/list-dark.png&#34; alt=&#34;ZIP Code PH - ZIP codes on Dark Mode&#34; style=&#34;display: inline; width: 30%;&#34;&gt;
&lt;figcaption&gt;ZIP Code PH - List&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I chose &lt;code&gt;#222222&lt;/code&gt; as the background color for darkmode so it is easier in the eyes (at least for me and some design posts I read somewhere). If someone requests an option for a darker color, I&amp;rsquo;d be glad to add it. (Themes, maybe? 🤔)&lt;/p&gt;
&lt;h2 id=&#34;make-me-happy-download&#34;&gt;Make Me Happy, Download
&lt;/h2&gt;&lt;p&gt;Yes, please. Make me happy by downloading the app, write a review and give a rating of 5 stars. The app is available for Android, on &lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=xyz.reddvid.zipcodeph&#34;&gt;Google Play Store&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://appgallery.huawei.com/#/app/C103245343&#34;&gt;Huawei App Gallery.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It is free to download and I hope you welcome ads that earns a me a little. Thank you and until next app!&lt;/p&gt;
&lt;center&gt;
&lt;a class=&#34;link&#34; href=&#39;https://play.google.com/store/apps/details?id=xyz.reddvid.zipcodeph&amp;pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1&#39;&gt;&lt;img alt=&#39;Get it on Google Play&#39; src=&#39;https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png&#39; style=&#34;width: 50%&#34;/&gt;&lt;/a&gt;
&lt;/center&gt;
&lt;h2 id=&#34;looking-for-a-windows-10-version&#34;&gt;Looking for a Windows 10 version?
&lt;/h2&gt;&lt;p&gt;Check out &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/zipcodeph-new-ui/&#34;&gt;this old blog post&lt;/a&gt; about the Windows 10 app.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>RPN Radio: Streaming App for Android</title>
        <link>https://reddavid.me/p/rpnradio-android/</link>
        <pubDate>Wed, 03 Feb 2021 01:25:58 +0800</pubDate>
        
        <guid>https://reddavid.me/p/rpnradio-android/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/rpnradio.png" alt="Featured image of post RPN Radio: Streaming App for Android" /&gt;&lt;p&gt;This should just be a short post to promote and showcase this Android app I developed for my job.&lt;/p&gt;
&lt;h2 id=&#34;am-radio-in-your-pocket&#34;&gt;AM Radio in your Pocket
&lt;/h2&gt;&lt;p&gt;Choose from RPN&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://rpnradio.com/&#34; target=&#34;_blank&#34;&gt;(Radio Philippines Network)&lt;/a&gt; 12 regional AM stations to tune into. Just connect to the internet and be updated to the latest news, talks, and enjoy some old and new tunes.&lt;/p&gt;
&lt;h2 id=&#34;development&#34;&gt;Development
&lt;/h2&gt;&lt;p&gt;I tried making this app using Xamarin.Forms but the new Android implementation of the media notification sucked a** that I made the app in pure &lt;a class=&#34;link&#34; href=&#34;https://developer.android.com/guide&#34;&gt;Android Java code&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;app-description&#34;&gt;App Description
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;RPN&amp;rsquo;s 12 radio stations are situated among the three major parts of the Philippines - in Luzon, we have DZRL Batac and DZBS Baguio that will give you the latest news, updates, music and other events happening in the North in Ilocano; and DZKI Iriga to offer them in Rinkonada Bikol and/or Bikolano. Next in Visayas, DYKC Cebu and DYKB Bacolod operates in the heart of Cebu City and neighboring Bacolod City, respectively. DYKC Cebu provides an programming format that will surely make all Cebuanos and Bisaya all around the world miss home. While DYKB Bacolod gives you the most important news and talkshows in Hiligaynon and/or Ilonggo. Lastly, Mindanao holds most of our stations : DXKS Surigao, DXKO Cagayan de Oro, DXDX General Santos, DXKP Pagadian, DXXX Zamboanga, and DXKT Davao.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;screenshots&#34;&gt;Screenshots
&lt;/h2&gt;&lt;figure class=&#34;image&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/rpnradio/stationlist.png&#34; alt=&#34;RPN Radio Stations&#34; style=&#34;display: inline; width: 40%;&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/02-21/rpnradio/playingview.png&#34; alt=&#34;RPN Radio Streaming&#34; style=&#34;display: inline; width: 40%;&#34;&gt;
&lt;figcaption&gt;RPN Radio App for Android&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;br/&gt;
&lt;h2 id=&#34;download&#34;&gt;Download
&lt;/h2&gt;&lt;p&gt;The app is available to download for &lt;strong&gt;FREE&lt;/strong&gt; from &lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=com.rpnradio.radiov1&#34;&gt;Google Play Store&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://appgallery.huawei.com/#/app/C103076031&#34;&gt;Huawei App Store.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The app will be available soon on iOS.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>2020 Review</title>
        <link>https://reddavid.me/p/2020-review/</link>
        <pubDate>Wed, 06 Jan 2021 13:27:12 +0800</pubDate>
        
        <guid>https://reddavid.me/p/2020-review/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/bye-2020.jpg" alt="Featured image of post 2020 Review" /&gt;&lt;p&gt;Huh, who knew? That we can get through the sh*tty year that is 2020. 🤔 And for last time (and maybe first?), let&amp;rsquo;s take a look back to what happened with Red David&amp;rsquo;s life in last year (SPOILER: not so much, like most of us I guess).&lt;/p&gt;
&lt;h2 id=&#34;january&#34;&gt;January
&lt;/h2&gt;&lt;h3 id=&#34;puerto-galera-2nd-week&#34;&gt;Puerto Galera, 2nd week
&lt;/h3&gt;&lt;p&gt;New Year, New Decade! We expected a lot in 2020 coming from 2019. It started out pretty much a normal month. We would have the time to travel out of town,&lt;/p&gt;
&lt;p&gt;It is always a good feeling when you can travel on the first month of the year, so that&amp;rsquo;s what we did. So my girlfriend and I went to Puerto Galera, Mindoro and rented a place to stay for 3 days and 2 nights.&lt;/p&gt;
&lt;p&gt;This place has been a must-travel not just for us both but for most of Pinoys. The white sand beach makes this place present on everybody&amp;rsquo;s bucket list.&lt;/p&gt;
&lt;p&gt;Our stay was short but it was worth-while. From walking along the beach, taking &amp;ldquo;artistic&amp;rdquo; photos, watch the sunset enjoyed a quite weekday evening, and chilled during the weekend evening when the &amp;ldquo;bands&amp;rdquo; and music will fill up the place. We also had henna tattoos, got a massage, and just tried to taste all the food.&lt;/p&gt;
&lt;p&gt;Here are some of the photos we took during our short stay:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/2020-review/img/i-love-puerto-galera.jpg&#34; width=&#34;3840&#34;  height=&#34;2160&#34;  srcset=&#34;https://reddavid.me/p/2020-review/img/i-love-puerto-galera_hu_74072000e76d684.jpg 480w, https://reddavid.me/p/2020-review/img/i-love-puerto-galera_hu_22183ba7747b42df.jpg 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;I 🤍 Puerto Galera&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34;
	data-flex-basis=&#34;426px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/2020-review/img/puerto-galera-breakfast.jpg&#34; width=&#34;3076&#34;  height=&#34;2431&#34;  srcset=&#34;https://reddavid.me/p/2020-review/img/puerto-galera-breakfast_hu_65f786f43b62d636.jpg 480w, https://reddavid.me/p/2020-review/img/puerto-galera-breakfast_hu_923124f0a7d047e3.jpg 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Toast and fried breakfast&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;126&#34;
	data-flex-basis=&#34;303px&#34; &gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/2020-review/img/lunch-at-puerto-galera.jpg&#34; width=&#34;3518&#34;  height=&#34;2308&#34;  srcset=&#34;https://reddavid.me/p/2020-review/img/lunch-at-puerto-galera_hu_b182b1f000d98c59.jpg 480w, https://reddavid.me/p/2020-review/img/lunch-at-puerto-galera_hu_c44a400d6adcb4de.jpg 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Healthy lunch&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;152&#34;
	data-flex-basis=&#34;365px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/2020-review/img/puerto-galera-no-smoking.jpg&#34; width=&#34;4032&#34;  height=&#34;3024&#34;  srcset=&#34;https://reddavid.me/p/2020-review/img/puerto-galera-no-smoking_hu_dd22f80f7f1b53bb.jpg 480w, https://reddavid.me/p/2020-review/img/puerto-galera-no-smoking_hu_c4cd517b0c09933c.jpg 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;No smoking beyond the point&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;133&#34;
	data-flex-basis=&#34;320px&#34; &gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/p/2020-review/img/puerto-galera-sand-castle.jpg&#34; width=&#34;3840&#34;  height=&#34;2160&#34;  srcset=&#34;https://reddavid.me/p/2020-review/img/puerto-galera-sand-castle_hu_bd90ce75db2e457b.jpg 480w, https://reddavid.me/p/2020-review/img/puerto-galera-sand-castle_hu_f428b3efe21b8cca.jpg 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;“Puerto Galera sand castle&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34;
	data-flex-basis=&#34;426px&#34; &gt;
&lt;img src=&#34;https://reddavid.me/p/2020-review/img/puerto-galera-sunset.jpg&#34; width=&#34;3840&#34;  height=&#34;2160&#34;  srcset=&#34;https://reddavid.me/p/2020-review/img/puerto-galera-sunset_hu_19c34eb6bdd4598a.jpg 480w, https://reddavid.me/p/2020-review/img/puerto-galera-sunset_hu_c39ab59dcf7a7bbb.jpg 1024w&#34;  loading=&#34;lazy&#34;  alt=&#34;Sunset at Puerto Galera&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34;
	data-flex-basis=&#34;426px&#34; &gt;&lt;/p&gt;
&lt;h3 id=&#34;taal-volcano-eruption&#34;&gt;Taal Volcano Eruption
&lt;/h3&gt;&lt;p&gt;Ok hold on, this wasn&amp;rsquo;t a part of our trip but as we are leaving the port to return to Metro Manila, we found out that Taal Volcano erupted (which was located in Batangas) but thankfully the eruption was slow that we weren&amp;rsquo;t stranded along the way. But this news may be the start of something awful through 2020.&lt;/p&gt;
&lt;p&gt;The volcano spewed a lot of volcanic ash that towns and cities, including Metro Manila.&lt;/p&gt;
&lt;h3 id=&#34;trip-to-bgc-last-week&#34;&gt;Trip to BGC, last week
&lt;/h3&gt;&lt;p&gt;This should be the last week of January and the KPop group Winner was doing a tour in Manila. I am not a KPop fan but my sister is that the 3 girls in our family went to SM Mall of Asia to watch them.&lt;/p&gt;
&lt;!-- &lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/01-21/year-in-review/baclaran-church.jpg&#34;
    alt=&#34;Baclaran Church&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Baclaran Church&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
 --&gt;
&lt;p&gt;The next day, we went to visit Baclaran church to give thanks to the Lord and went straight the infamous &lt;a class=&#34;link&#34; href=&#34;https://megaworld-lifestylemalls.com/mall/mckinley-hill/&#34;&gt;Venice Grand Canal Mall&lt;/a&gt; in Taguig, a Venice-inspired open-air mall.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/01-21/year-in-review/venice-grand-canal.jpg&#34;
    alt=&#34;Venice Grand Canal Mall in Taguig&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Venice Grand Canal Mall in Taguig&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;After exhausting the whole place, we went down to Bonifacio High Grounds which is not that far from the canal mall. We just walked around the place, took some photos, and tried to visit a museum but unfortunately they were already closed.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;february&#34;&gt;February
&lt;/h2&gt;&lt;h3 id=&#34;valentines-day-and-a-new-laptop&#34;&gt;Valentine&amp;rsquo;s Day and a New Laptop
&lt;/h3&gt;&lt;p&gt;Hmmm, nothing much happened this month, just the usual Valentine&amp;rsquo;s date on the 14th. We just went to this semi-high end restaurant and ordered some pizza, pasta, and wine.&lt;/p&gt;
&lt;p&gt;I also got a new laptop, my third Acer laptop - been an Acer user since 2011-ish because of it&amp;rsquo;s ok specs at a lower price. I blogged about that laptop here: &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/new-laptop/&#34;&gt;I Got Myself a New Laptop&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;march&#34;&gt;March
&lt;/h2&gt;&lt;h3 id=&#34;oh-no&#34;&gt;Oh no!
&lt;/h3&gt;&lt;p&gt;Oh how it started so well until a &lt;a class=&#34;link&#34; href=&#34;https://www.who.int/emergencies/diseases/novel-coronavirus-2019&#34;&gt;new unknown deadly virus broke out of Wuhan, China.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It seemed the world has stopped due to lockdowns, and despite the technological advancement we have since the last decade, we still took too long for a cure.&lt;/p&gt;
&lt;p&gt;These, I think, are the times we don&amp;rsquo;t want to talk about anymore.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;april---november&#34;&gt;April - November
&lt;/h2&gt;&lt;p&gt;I&amp;rsquo;ll sumamrize these months here, since we all have been in lock down and stayed in our homes. But luckily for us, our occupation allowed us to still make a living and let us stay in.&lt;/p&gt;
&lt;p&gt;Within these months, the government has been extending and extending the quarantine every 30 days - they just fear for public panic if they announce a definite lockdown for a year.&lt;/p&gt;
&lt;p&gt;I went busy during these time, did some web and app development, went on to stream some games on &lt;a class=&#34;link&#34; href=&#34;https://facebook.gg/RedDavidGaming&#34; target=&#34;_blank&#34;&gt;Facebook Gaming&lt;/a&gt; and took some online courses &lt;a class=&#34;link&#34; href=&#34;https://linkedin.com/in/reddvid/&#34; target=&#34;_blank&#34;&gt;(view my LinkedIn profile here).&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With all of these, I upgraded (again) my peripherals for my convenience (sorry Girlfried, 😂). I bought a over-the-head headset and an earbuds, for better Zoom meetings and streaming - the JBL Quantum 200 and the HyperX Cloud earbuds. I also got myself a wireless Logitech gaming mouse, the G304, which I reviewed &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/g304-review/&#34;&gt;here&lt;/a&gt; and a Tecware mechanical keyboard TKL, which you can read more about &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/new-keeb/&#34;&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/01-21/year-in-review/jbl-quantum.jpg&#34;
    alt=&#34;JBL Quantum 200&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;JBL Quantum 200 (pardon the mess)&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g304/inside.jpg&#34;
    alt=&#34;Logitech G304&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Logitech G304&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/08-20/new-kb/rgb.jpg&#34;
    alt=&#34;Logitech G304&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Tecware Elite TKL&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I also went on to upgrade my work PC&amp;rsquo;s SSD for a better brand and higher storage, cheaper though - the XPG 8200. Also bought a JBL Go3 bluetooth speaker, and the Logitech C922 webcam, also for Zoom meetings 🤣. I blogged about the camera here: &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/the-logitech-c922/&#34;&gt;Finally! Logitech C922&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-20/c922/c922_camera.jpg&#34;
    alt=&#34;Logitech C922&#34; width=&#34;65%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Logitech C922&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;h2 id=&#34;december&#34;&gt;December
&lt;/h2&gt;&lt;h2 id=&#34;christmas-and-new-years-eve&#34;&gt;Christmas and New Year&amp;rsquo;s Eve
&lt;/h2&gt;&lt;p&gt;This might be the hardest Christmas and New Year we&amp;rsquo;ve all faced and celebrated, but lucky enough, I had the chance to take a break from the rat race and went home to celebrate the holidays with the family together with my father whom was also stuck in his workplace city due to quarantine and lockdown.&lt;/p&gt;
&lt;p&gt;The shopping continues, I got myself the Razer Hammerhead Wireless earbuds and a yellow iPhone 11 for Christmas. I did not post a blog about the wireless earbuds since the unit I got was faulty (had it replaced now). And I prefer not to flaunt my new iPhone since there&amp;rsquo;s nothing special about it, my ultimate goal of buying one is to &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/developing-for-apple-soon/&#34;&gt;develop apps for iOS.&lt;/a&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/01-21/year-in-review/tech-2020.jpg&#34;
    alt=&#34;Logitech C922&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Razer BT Earbuds and Yellow iPhone 11&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;h2 id=&#34;hows-your-2020&#34;&gt;How&amp;rsquo;s Your 2020?
&lt;/h2&gt;&lt;p&gt;This year had been a mix of emotions but mostly depressing. We still coping to the new normal, keeping safe, and I know we all miss socializing.&lt;/p&gt;
&lt;p&gt;This might look like a tech shopping spree for me but I also grew my Facebook page from 261 to 940 this year. Played and streamed some good games - MINECRAFT!&lt;/p&gt;
&lt;p&gt;Read a few books, got certificates from online courses, and especially I am still alive and healthy.&lt;/p&gt;
&lt;p&gt;How did your 2020 go? Tag me on your story.
&lt;br/&gt;
&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;📷 credits: &lt;a class=&#34;link&#34; href=&#34;https://wsiltv.com/2021/01/01/town-says-goodbye-to-2020-with-dumpster-fire/&#34;&gt;Dumpster Fire 2020 &lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Finally! Logitech C922</title>
        <link>https://reddavid.me/p/the-logitech-c922/</link>
        <pubDate>Thu, 01 Oct 2020 23:17:51 +0800</pubDate>
        
        <guid>https://reddavid.me/p/the-logitech-c922/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/logitech-c922.jpg" alt="Featured image of post Finally! Logitech C922" /&gt;&lt;h2 id=&#34;foreword&#34;&gt;Foreword
&lt;/h2&gt;&lt;p&gt;Yoo! I finally got the C922 PRO HD Webcam from Logitech after wishing having it for years.&lt;/p&gt;
&lt;p&gt;Honestly, I bought the camera in a slightly higher price due to the model being out of stock in major stores and just got from a &amp;ldquo;hoarder&amp;rdquo; in Facebook marketplace. :) Harsh but true.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s get into my short blog/review/impression about this industry-standard in semi-professional streaming.&lt;/p&gt;
&lt;p&gt;You might ask, why only now? At first, I never really thought of having a good webcam as a small streamer, and I also have this app on my Android phone which makes my Nokia 7 Plus act as a webcam. Then, I wanted the camera to be positioned well, so I bought a cheaper Logitech, the C270.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-20/c922/logitech_c270.jpg&#34;
    alt=&#34;Logitech C270 webcam&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Logitech C270 webcam&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The C270 suited my needs - stream just now and then, and it&amp;rsquo;s just right for video calls and conferencing. The only problem with this one is it has a bad exposure. I used the C270 for almost 3 months until I got the money to buy the beast of a camera, that is the C922.&lt;/p&gt;
&lt;h2 id=&#34;the-box&#34;&gt;The Box
&lt;/h2&gt;&lt;p&gt;I opened a brand new Logitech C922 way way before but it wasn&amp;rsquo;t mine, so I already know the contents (alibi for not having pictures after unboxing 😂). And I also tried the unit itself so I knew the quality it brings.&lt;/p&gt;
&lt;p&gt;The box contains the C922 camera, a table-top tripod, manuals and a sheet containing the free 3-month XSplit Premium codes (Again, sorry for not having pictures).&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-20/c922/box.jpg&#34;
    alt=&#34;Logitech C922 Box&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Logitech C922 Box&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;quick-specs&#34;&gt;Quick specs
&lt;/h2&gt;&lt;p&gt;I won&amp;rsquo;t dive deep into the webcam&amp;rsquo;s specifications like weight and dimensions but here are the common &amp;ldquo;marketing&amp;rdquo; specs that will actually make you consider buying one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Capture 1080p @ 30fps, or&lt;/li&gt;
&lt;li&gt;720p @ 60fps&lt;/li&gt;
&lt;li&gt;Auto focus&lt;/li&gt;
&lt;li&gt;Wide Field of View&lt;/li&gt;
&lt;li&gt;Advanced camera software&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ha-mountable&#34;&gt;Ha! Mountable
&lt;/h2&gt;&lt;p&gt;The C922 has a screw hole for mounting onto a tripod. The tripod can be extended up to 18.5cm. Here&amp;rsquo;s the closed tripod in three max lengths (with regards to the feet extensions).&lt;/p&gt;
&lt;figure class=&#34;image&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/10-20/c922/c922_tripod_screw_slot.jpg&#34; alt=&#34;Logitech C922 Tripod Screw Hole&#34; width=&#34;60%&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/10-20/c922/c922_min.jpg&#34; alt=&#34;Logitech C922 Tripod Min&#34; style=&#34;display: inline; width: 32%;&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/10-20/c922/c922_tripod_mid.jpg&#34; alt=&#34;Logitech C922 Tripod Middle&#34; style=&#34;display: inline; width: 30%;&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/10-20/c922/c922_tripod_max.jpg&#34; alt=&#34;Logitech C922 Tripod Max Length&#34; style=&#34;display: inline; width: 30%;&#34;&gt;
&lt;figcaption&gt;Logitech C922 Tripod Screw Hole and Lengths&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The tripod, without and with the webcam.&lt;/p&gt;
&lt;figure class=&#34;image&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/10-20/c922/c922_tripod_stand.jpg&#34; alt=&#34;Logitech C922 Tripod Standing&#34; style=&#34;display: inline; width: 45%;&#34;&gt;
&lt;img src=&#34;https://reddavid.me/images/10-20/c922/c922_tripod_side.jpg&#34; alt=&#34;Logitech C922 Tripod-Mounted&#34; style=&#34;display: inline; width: 45%;&#34;&gt;
  &lt;figcaption&gt;Logitech C922 Tripod&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;br/&gt;
&lt;p&gt;The C922 also has a built-in microphone but most people, including me, advice to use an external mic instead.&lt;/p&gt;
&lt;h2 id=&#34;software---logitech-capture&#34;&gt;Software - Logitech Capture
&lt;/h2&gt;&lt;p&gt;Upon connecting the webcam to my PC, Logitech prompted to install the companion software - Logitech Capture. The software is advanced enough for my needs - I can zoom and pan, flip the captured video horizontally and/or vertically, choose to prefer exposure or framerate, and most importantly the capture resolutions.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-20/c922/logitech_capture_2.png&#34;
    alt=&#34;Logitech Capture Software&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Logitech Capture Software&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;resolutions&#34;&gt;Resolutions
&lt;/h3&gt;&lt;p&gt;The software provides templates for typical sizes:&lt;/p&gt;
&lt;p&gt;Widescreen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FHD (1080p),&lt;/li&gt;
&lt;li&gt;720p, and&lt;/li&gt;
&lt;li&gt;360p;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Portrait:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1080x1920,&lt;/li&gt;
&lt;li&gt;720x1280, and&lt;/li&gt;
&lt;li&gt;360x640;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Squares:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1080x1080,&lt;/li&gt;
&lt;li&gt;720x720,&lt;/li&gt;
&lt;li&gt;and 360x360.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-20/c922/resolutions.jpg&#34;
    alt=&#34;Resolution Options&#34; width=&#34;30%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Resolution Options&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;pip-and-layers&#34;&gt;PiP and Layers
&lt;/h3&gt;&lt;p&gt;The software also allows us to output custom layout.&lt;/p&gt;
&lt;h3 id=&#34;effects&#34;&gt;Effects
&lt;/h3&gt;&lt;p&gt;The software also allows you to add effects, text, etc with the Effects menu: Watermark, Text Overlay, Scene effects, Color borders, and Transitions for 2 scenes.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-20/c922/effects.jpg&#34;
    alt=&#34;Effects Options&#34; width=&#34;30%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Effects Options&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;hr&gt;
&lt;h2 id=&#34;minor-issues&#34;&gt;Minor Issues
&lt;/h2&gt;&lt;p&gt;There are a couple of issues for me, the first one really makes me annoyed is that I cannot turn off the hotkeys for the software and I have a frameless monitor which mounting the camera is a pain in the a$$ to keep it from covering up the display - even for just a centimeter.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-20/c922/c922_frameless_issue.jpg&#34;
    alt=&#34;Logitech C922 Frameless Monitor&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Logitech C922 Frameless Monitor&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;great-overall&#34;&gt;Great Overall
&lt;/h2&gt;&lt;p&gt;Overall, I am happy with the C922 webcam - my loved ones can see me clearly during video calls. And I thank everybody for supporting me on my &lt;a class=&#34;link&#34; href=&#34;https://fb.gg/RedDavidGaming/&#34; target=&#34;_blank&#34;&gt;stream&lt;/a&gt;, visiting my website, and checking my Windows 10 apps.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/10-20/c922/c922_logicapture.png&#34;
    alt=&#34;Logitech C922 Monitor-Mounted with Logitech Capture&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Logitech C922 Monitor-Mounted with Logitech Capture&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;To finish this blog post, let&amp;rsquo;s all stay safe during the pandemic - and even after the pandemic.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>New Keeb in Town</title>
        <link>https://reddavid.me/p/new-keeb/</link>
        <pubDate>Mon, 17 Aug 2020 19:56:25 +0800</pubDate>
        
        <guid>https://reddavid.me/p/new-keeb/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/tecware.jpg" alt="Featured image of post New Keeb in Town" /&gt;&lt;h2 id=&#34;foreword&#34;&gt;Foreword
&lt;/h2&gt;&lt;p&gt;This is a simple review and unboxing post for my newly bought keyboard today. It is the Tecware Phantom Elite TKL with Gateron brown switches. I am using it to write this post.&lt;/p&gt;
&lt;p&gt;I have used a number of mechanical keyboards in the past, the first one was an Aula one with Outemu blues. Then a TKL with blue Gateron switches, I forgot the brand, but it&amp;rsquo;s also Chinese. And my slightly premium keyboards, the Logitech G403 and the G810.&lt;/p&gt;
&lt;p&gt;The G810 was a stay-at-home keyboard for my laptop and the G403 lives in the office. And guess what, both are defective with unresponsive and ghosting keys, respectively. I thought of delaying buying a new one for &amp;ldquo;budget&amp;rdquo; reasons but coding with keyboard issues is a definitely a pain in the ass with constant deleting doubling keys and characters. I am looking for several &amp;ldquo;budget&amp;rdquo; keyboards out there, including the TNC Icarus one with Cherry MXs but the delivery time was so bad that I had to settle down with this one.&lt;/p&gt;
&lt;p&gt;Coming from Logitech, I almost passed on this one for its &amp;ldquo;gamer&amp;rdquo; font which I don&amp;rsquo;t think is &lt;em&gt;clean&lt;/em&gt; for my desk, but my wallet said &amp;ldquo;it&amp;rsquo;s okay, you can live with that&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;I bought one with brown switches since the old ones I had had Romer-Gs with a &amp;ldquo;mushy-tactile&amp;rdquo; feel on keypress so I don&amp;rsquo;t have to worry much about them on the long run.&lt;/p&gt;
&lt;h2 id=&#34;unboxing&#34;&gt;Unboxing
&lt;/h2&gt;&lt;p&gt;The box looks premium with minimal print of the logo and keyboard model on the center.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/08-20/new-kb/box.jpg&#34;
    alt=&#34;Tecware Phantom TKL box&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Tecware Phantom TKL box&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Inside the box was the keyboard wrapped in plastic. It also came with 4 extra switches and a switch puller.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/08-20/new-kb/inside.jpg&#34;
    alt=&#34;Tecware Phantom unbox&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Tecware Phantom unbox&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/08-20/new-kb/free-switches-puller.jpg&#34;
    alt=&#34;Extra switches and puller&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Extra switches with puller&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;tkl&#34;&gt;TKL
&lt;/h3&gt;&lt;p&gt;The keyboard has a TKL layout, with software-customizable RGB setting, and replaceable switches (modular). It costs php2,500, slightly costier than their Tecware Phantoms - I&amp;rsquo;m yet to investigate why.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/08-20/new-kb/tecware-rgb-software.png&#34;
    alt=&#34;Tecware software for RGB modes&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Tecware RGB software&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;About the &amp;ldquo;gamer&amp;rdquo; font I hated, this game with a cleaner font. Surprised am I! Though the printing of the keycaps has the &amp;ldquo;stencil&amp;rdquo; cut beneath that the LED does not shine that much. Guess I&amp;rsquo;m okay after all. Some function keys, has this cheap white printing that I fear them to get scraped off some time soon.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/08-20/new-kb/keyboard.jpg&#34;
    alt=&#34;Tecware Phantom Elite&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;The keyboard itself&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;rgb&#34;&gt;RGB
&lt;/h3&gt;&lt;p&gt;The RGB lighting is good with bunch of built-in modes which can be visualized and edited using their software. Here&amp;rsquo;s what it looks like in an unlit office desk.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/08-20/new-kb/rgb.jpg&#34;
    alt=&#34;Box contents&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;RGB lighting in unlit room&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I went ahead for a typing test and got a 76wpm results with no mistyped words. But let&amp;rsquo;s see how long this budget badboy keyboard lasts.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all, just a short review and unboxing post for the internet people to see. If you want me to have a typing test and sound test for it, let me know.&lt;/p&gt;
&lt;h2 id=&#34;support-me&#34;&gt;Support Me
&lt;/h2&gt;&lt;p&gt;Also, my apps are still available in the &lt;a class=&#34;link&#34; href=&#34;ms-windows-store:publisher?name=Red David&#34; target=&#34;_blank&#34;&gt;Microsoft Store&lt;/a&gt; and some in the &lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/dev?id=5465762079490576029&#34; target=&#34;_blank&#34;&gt;Google Play Store&lt;/a&gt;, where I mostly get my funds for buying these stuff. You can always check them out, they&amp;rsquo;re free to download and use, you don&amp;rsquo;t have to buy or pay the the listed price - unless you want to.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>ZIP Code PH Gets Refreshed UI</title>
        <link>https://reddavid.me/p/zipcodeph-new-ui/</link>
        <pubDate>Sun, 16 Aug 2020 22:02:34 +0800</pubDate>
        
        <guid>https://reddavid.me/p/zipcodeph-new-ui/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/zipcodeph.png" alt="Featured image of post ZIP Code PH Gets Refreshed UI" /&gt;&lt;h2 id=&#34;foreword-and-inspiration&#34;&gt;Foreword and Inspiration
&lt;/h2&gt;&lt;p&gt;Over these past few months, I have been checking on some fluent design concepts and app updates over Twitter and other design sites like, Dribbble, Behance, and even Medium.
Also, I have been busy gaming and doing some reading on my spare time that I missed coding and updating some of my apps.&lt;/p&gt;
&lt;p&gt;Then one time, I just found the urge to update it after seeing Michael West&amp;rsquo;s concept layouts over Dribbble. He created a UI concept for Windows 10&amp;rsquo;s App settings panel as seen &lt;a class=&#34;link&#34; href=&#34;https://dribbble.com/shots/6404804-Apps-features-Microsoft-Edge-style&#34; target=&#34;_blank&#34;&gt;here on his Dribbble post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I started coding at once, cleaning up some codes on the app starting with the UI. And came up with the final layout.&lt;/p&gt;
&lt;h2 id=&#34;screenshots&#34;&gt;Screenshots
&lt;/h2&gt;&lt;p&gt;Here are some screenshots of the updated app version 4.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/zipcodeph/full.png&#34;    loading=&#34;lazy&#34;  alt=&#34;Fluent Design UI&#34;  &gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/zipcodeph/dark.png&#34;    loading=&#34;lazy&#34;  alt=&#34;Dark mode&#34;  &gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/zipcodeph/light.png&#34;    loading=&#34;lazy&#34;  alt=&#34;Search Page in Light mode&#34;  &gt;&lt;/p&gt;
&lt;h2 id=&#34;download&#34;&gt;Download
&lt;/h2&gt;&lt;p&gt;You can check the &lt;em&gt;free&lt;/em&gt; app here in the Microsoft Store.&lt;/p&gt;
&lt;center&gt;
&lt;a class=&#34;link&#34; href=&#39;//www.microsoft.com/store/apps/9nblggh5gft6?cid=storebadge&amp;ocid=badge&#39;&gt;&lt;img src=&#39;https://reddavid.me/images/English_get-it-from-MS.png&#39; alt=&#39;English badge&#39; width=&#34;200px&#34;/&gt;&lt;/a&gt;
&lt;/center&gt;
</description>
        </item>
        <item>
        <title>Your Phone Tray V2</title>
        <link>https://reddavid.me/p/your-phone-tray-v2/</link>
        <pubDate>Wed, 08 Jul 2020 21:18:31 +0800</pubDate>
        
        <guid>https://reddavid.me/p/your-phone-tray-v2/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/your-phone.jpg" alt="Featured image of post Your Phone Tray V2" /&gt;&lt;p&gt;Your Phone Tray UWP app just got updated.&lt;/p&gt;
&lt;p&gt;Version 2.0 brings few UI changes, some improvements and a breaking change.&lt;/p&gt;
&lt;h2 id=&#34;improvements&#34;&gt;Improvements
&lt;/h2&gt;&lt;h3 id=&#34;new-context-menu&#34;&gt;New Context Menu
&lt;/h3&gt;&lt;p&gt;To improve the app, I updated the tray icon context menu to show that it should be running on Startup (see Task Manager Start up)
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/yourphonetray/ypt-contextmenu.png&#34;
    alt=&#34;Context Menu of Your Phone Tray app&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Your Phone Tray Context Menu&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id=&#34;shortcut-key&#34;&gt;Shortcut Key
&lt;/h4&gt;&lt;p&gt;You can also see a new menu item &lt;strong&gt;Enable Ctrl+Y Hotkey&lt;/strong&gt;. If enabled, the app silently picks up the &lt;code&gt;Ctrl+Y&lt;/code&gt; shortcut to open Your Phone app. It can be toggled if the shortcut key messes up some of your programs.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;breaking-change&#34;&gt;Breaking change
&lt;/h2&gt;&lt;p&gt;Microsoft&amp;rsquo;s Your Phone app has been updated several times that launching it directly to the photos section shows a blank UI. For the meantime, all shortcuts to open the app will direct to messages.&lt;/p&gt;
&lt;h2 id=&#34;download&#34;&gt;Download
&lt;/h2&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://bit.ly/UrPhoneTray&#34; target=&#34;_blank&#34;&gt;&lt;strong&gt;Download the app here&lt;/strong&gt;&lt;/a&gt; for Windows 10&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Logitech G304 Review</title>
        <link>https://reddavid.me/p/g304-review/</link>
        <pubDate>Mon, 06 Jul 2020 23:42:58 +0800</pubDate>
        
        <guid>https://reddavid.me/p/g304-review/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/g304.jpg" alt="Featured image of post Logitech G304 Review" /&gt;&lt;p&gt;So this is my short and honest review of the G304 wireless mouse.&lt;/p&gt;
&lt;p&gt;As I mentioned on my previous blog post &lt;a class=&#34;link&#34; href=&#34;https://reddavid.me/story-of-owning-logitech-mice/&#34;&gt;here&lt;/a&gt;, this is my 4th mouse and my first gaming? wireless mouse. I ordered it online from DataBlitz for $39, and was delivered quickly in 2 days.&lt;/p&gt;
&lt;h2 id=&#34;whats-in-the-box&#34;&gt;What&amp;rsquo;s in the box?
&lt;/h2&gt;&lt;p&gt;The box contains the wireless mouse itself, the usual manuals, Logitech Gaming promo leaflet, a blue G logo sticker, a Duracell AA battery, and a USB extension cord.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g304/box.jpg&#34;
    alt=&#34;Logitech G304 box contents&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Box contents&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;lets-get-physical&#34;&gt;Let&amp;rsquo;s get Physical!
&lt;/h2&gt;&lt;h3 id=&#34;battery-compartment&#34;&gt;Battery compartment
&lt;/h3&gt;&lt;p&gt;The mouse has no RGB strip like it&amp;rsquo;s cousins (G Pro/G203) but it has a single RGB LED that indicates colored DPI assignments in Logitech G Hub. The battery compartment and the USB receiver is accessed through the lower top part of the mouse - by sliding it off the body.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g304/inside.jpg&#34;
    alt=&#34;G304 with battery&#34; width=&#34;80%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Logitech G304&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;battery-included&#34;&gt;Battery included
&lt;/h3&gt;&lt;p&gt;I currently use an Energizer Lithium AA battery which I believe is lighter but I still keep the free battery whenever I need a heavier setup.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g304/batt.jpg&#34;
    alt=&#34;AA batteries&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;AA Batteries (front came with the product)&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;bottom-switch&#34;&gt;Bottom Switch
&lt;/h3&gt;&lt;p&gt;The power switch is located below the mouse with a red and blue color indicator for off and on state. The bottom also has an extra slide compared to the G Pro/G203.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g304/bottom.jpg&#34;
    alt=&#34;G304 bottom&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Bottom view of grip&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3 id=&#34;grip&#34;&gt;Grip
&lt;/h3&gt;&lt;p&gt;The mouse shape fits perfectly in my hands and I can switch to the wired G Pro when I play some competitive games - not that this can&amp;rsquo;t do the job. But I often stick to this, G304, every time I stream my games (shameless plug - &lt;a class=&#34;link&#34; href=&#34;https://fb.gg/RedDavidGaming/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://fb.gg/RedDavidGaming/&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g304/hand-top.jpg&#34;
    alt=&#34;G304 top grip&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Top view grip&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g304/hand-side.jpg&#34;
    alt=&#34;G304 side grip&#34; width=&#34;50%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Side view of grip&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&#34;reliability&#34;&gt;Reliability
&lt;/h2&gt;&lt;p&gt;I used this since day one - June 2 - and I only got a hiccup once during a Dota 2 game which made me switch to wired, and since then I used this as a daily driver and on my games. Lately, I am playing Minecraft a lot, some Dota 2, CS:GO, some Valorant, Metro Exodus, just finished Mafia II: Definitive Edition, C&amp;amp;C Yuri&amp;rsquo;s Revenge.&lt;/p&gt;
&lt;h2 id=&#34;verdict&#34;&gt;Verdict
&lt;/h2&gt;&lt;p&gt;My overall experience using the same shape of a mouse will be just comfortable throughout my day - office job and being a small-time streamer. It also frees your hand positions by not limited by a wired mouse. Despite it not having an RGB, I would suggest this for small-handed people, for those who travel a lot and for gamers and streamers looking for a budget wireless gaming mouse.&lt;/p&gt;
&lt;h2 id=&#34;more-info&#34;&gt;More info?
&lt;/h2&gt;&lt;p&gt;Since I don&amp;rsquo;t have a weighing scale and sea of tech reviews, you can check the thorough tech specs review from Rocket Jump Ninja &lt;a class=&#34;link&#34; href=&#34;https://www.rocketjumpninja.com/products/mouse/logitech-g305&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Story of my Logitech Mice</title>
        <link>https://reddavid.me/p/story-of-owning-logitech-mice/</link>
        <pubDate>Wed, 01 Jul 2020 00:00:00 +0000</pubDate>
        
        <guid>https://reddavid.me/p/story-of-owning-logitech-mice/</guid>
        <description>&lt;img src="https://reddavid.me/images/07-20/logi-hero.png" alt="Featured image of post Story of my Logitech Mice" /&gt;&lt;h2 id=&#34;history&#34;&gt;History
&lt;/h2&gt;&lt;p&gt;Why do (or did) I own at least 5 of Logitech G mice despite the &amp;ldquo;double-clicking&amp;rdquo; issues about them? As an ECE, I knew that some percentage of any electronics produced out there do have flaws - and this is not an excuse for their price - but in the &amp;ldquo;real&amp;rdquo; world, these things can happen. Also, when looking at r/mechanicalkeyboards they combo their awesome keebs with a Logitech mouse despite them hating on Romer-G&amp;rsquo;s.&lt;/p&gt;
&lt;p&gt;This is my &amp;ldquo;short&amp;rdquo; history on my Logitech mouse shopping and usage. Here it goes:&lt;/p&gt;
&lt;h2 id=&#34;g302&#34;&gt;G302
&lt;/h2&gt;&lt;p&gt;If I recall correctly, my first mouse from Logitech was the G302, it has the odd shape but it just fits nicely in my hand. I used it for almost 2 years until it went &amp;ldquo;double-clicking&amp;rdquo; due to playing Dota 2. I just scavenged some old A4tech mouse and took out the switches (Huanos?) to replace one on the G302. The G302 still works today but it has this rattling noise due to the broken plastics inside.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g302.jpg&#34;
    alt=&#34;G302 still works this day&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;G302 still works this day&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;g203&#34;&gt;G203
&lt;/h2&gt;&lt;p&gt;Then I bought a G203, a smaller mouse sporting with the new logo. I bought this to have an RGB mouse. This is when I started to jump on the &amp;ldquo;Logitech mouse hype&amp;rdquo;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g203.jpg&#34;
    alt=&#34;My G203 with brand new HyperX Fury mouse mat&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;My G203 with brand new HyperX Fury mouse mat&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;impulse-buying-the-g403&#34;&gt;Impulse Buying the G403
&lt;/h2&gt;&lt;p&gt;Being on the &amp;ldquo;hype train&amp;rdquo;, I impulse bought a G403 when it became available in my country despite my current G203 still works. The G403 was not comfortable for my hand - well, the shops before don&amp;rsquo;t have demo units - so I bought another G203 as I gave the old one to my GF for office use. The G403 is stored for now.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g403.jpg&#34;
    alt=&#34;Logitech G403&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Impulse bought G403 😂&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;After some time, GF&amp;rsquo;s workplace decided to renovate so I took the G203 back and decided to &amp;ldquo;mod&amp;rdquo; it and cut the wire too short making it unroutable to my home setup. This older G203 is now in my &amp;ldquo;junk box&amp;rdquo;.&lt;/p&gt;
&lt;h2 id=&#34;gpro-on-discount&#34;&gt;GPro on Discount
&lt;/h2&gt;&lt;p&gt;I think all through the year 2019, I was looking to buy their wireless mouse - the G304. It has the same shape as the G203 and has the new HERO sensor. And that one time when I decided to finally buy one, I first asked a salesperson if there were any Logitech promos and I was told that the G Pro was 50% off. Without hesitation, I bought it instead of the G304.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/gpro.jpg&#34;
    alt=&#34;Half-priced G Pro, not a bad buy&#34; width=&#34;40%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;Half-priced G Pro, not a bad buy&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The G Pro is physically the same as G203 but has a braided cable, stiffer mouse wheel, and sporting the PMW3366 optical gaming sensor. I use this in the office with a cheap mouse bungee to keep the wire neat.&lt;/p&gt;
&lt;h2 id=&#34;g304-wireless&#34;&gt;G304 Wireless
&lt;/h2&gt;&lt;p&gt;Fast forward March 2020, city-wide was on lockdown, knowing that I would be staying in the office for quite some time, I lend my laptop to my GF for her to use. I also lend her the (working) G203.&lt;/p&gt;
&lt;p&gt;After some time staying in the office, I decided to neat up my desk and I found it a hassle for wires (with dual monitors, keyboards, USB cords, and whatnot) so I thought, &amp;ldquo;It&amp;rsquo;s time to check that G304 I wished for the longest time. And there&amp;rsquo;s a sale incoming too.&amp;rdquo;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;https://reddavid.me/images/07-20/g304.jpg&#34;
    alt=&#34;28-day old G304&#34; width=&#34;60%&#34;&gt;&lt;figcaption&gt;
      &lt;p&gt;28-day old G304&lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I checked Lazada but I was skeptical to buy electronics from them – to avoid the hassle process of returning a defective product. This is when I learned that my &amp;ldquo;favorite&amp;rdquo; gaming store I bought my previous Logitech mice has a &amp;ldquo;better&amp;rdquo; website and I checked the G304 and it was cheaper compared to its store retail price. I bought it as a gift for myself this June.&lt;/p&gt;
&lt;p&gt;Here on my desk right now is the G304 and the G Pro. I use the G304 for daily work and casual games and the G Pro for FPS and competitive gaming. I will be posting my review for the G304 soon. And sorry for the lack of better pictures of my mice.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Staying at Home During the COVID-19 Pandemic</title>
        <link>https://reddavid.me/p/staying-at-home-during-the-covid-19-pandemic/</link>
        <pubDate>Thu, 19 Mar 2020 01:28:20 +0800</pubDate>
        
        <guid>https://reddavid.me/p/staying-at-home-during-the-covid-19-pandemic/</guid>
        <description>&lt;img src="https://reddavid.me/images/at-home.jpg" alt="Featured image of post Staying at Home During the COVID-19 Pandemic" /&gt;&lt;p&gt;When the sudden rise of Covid-19 cases here in the Philippines, the government was urged to implement a community quarantine - which was a lockdown - public transportation is suspended, non-essential businesses must be closed or simply &lt;strong&gt;everyone should stay at home&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;But working on a media and broadcasting field, yet being the transmitter engineers, we can&amp;rsquo;t help but think: &lt;em&gt;Uhm, how about us?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, it took almost 2 days to formulize measures for us; don&amp;rsquo;t get me wrong, we wanted to be safe, but being the &lt;em&gt;essential&lt;/em&gt; skeletal personnel in the operations of news source, and in my own opinion, we had to keep the broadcast on-air.&lt;/p&gt;
&lt;p&gt;To reduce public exposure, we were assigned a 7-day work-week and 7-day home-rest during the quarantine imposed by the government. During the work-week, we can stay in office (which we do most of the time) - this also to avoid the public.&lt;/p&gt;
&lt;p&gt;So as of now, I am still on my rest-week, reading programming books, self-help books, watching some Netflix, downloaded movies, playing some Minecraft and exercise, of course. I sometimes go outside to buy some essential stuffs, but sadly, there are still a lot of people on the main streets. Worse, not social-distancing. God help us.&lt;/p&gt;
&lt;p&gt;There is also this viral in social media right now comparing, lest, swapping their local Mayors for not acting amidst the pandemic. It makes me laugh but at times like these, it can be a serious matter where we should learn not to vote the incompetent leaders.&lt;/p&gt;
&lt;p&gt;We still don&amp;rsquo;t know how will this affect our monetary status. But we are pretty sure our savings will be affected. If you can, you can help me stay safe and secure at home:&lt;/p&gt;
&lt;p&gt;Donate maybe? 🙂 Thank you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://paypal.me/reddvid&#34; target=&#34;_blank&#34;&gt;Small help for your boy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Rebuilding Website with Hugo</title>
        <link>https://reddavid.me/p/rebuilding-website-with-hugo/</link>
        <pubDate>Sun, 23 Feb 2020 21:43:46 +0800</pubDate>
        
        <guid>https://reddavid.me/p/rebuilding-website-with-hugo/</guid>
        <description>&lt;img src="https://reddavid.me/images/hugo.png" alt="Featured image of post Rebuilding Website with Hugo" /&gt;&lt;p&gt;It was early 2019, I think when I accidentally deleted my WordPress database that contains at least 20 posts. Sad right? After that sad moment, I tried to repost everything using Hugo, a static website builder, but found that it was too complicated - with YAML, some .scss, layouts, etc.&lt;/p&gt;
&lt;p&gt;So I gave up and made a basic website with just HTML, CSS, and JS files. It was ok for me, just having a landing page for my apps, other works and a short bio.&lt;/p&gt;
&lt;p&gt;Until I do wanted to do some blog, not that daily blog but just somewhere to share my thoughts. So here we are again, I would actually give time to understand Hugo and what not. Welcome me again!&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Portfolio</title>
        <link>https://reddavid.me/portfolio/</link>
        <pubDate>Sun, 23 Feb 2020 14:37:36 +0800</pubDate>
        
        <guid>https://reddavid.me/portfolio/</guid>
        <description>&lt;!-- &lt;figure&gt;&lt;img src=&#34;https://reddavid.me/portfolio/featured-image.png&#34;
    alt=&#34;Red David Logo&#34; width=&#34;128px&#34;&gt;
&lt;/figure&gt;
 --&gt;
&lt;h1 style=&#34;text-align:center; &#34;&gt;I Make Apps and Do IT Stuff&lt;/h1&gt;
&lt;h2 id=&#34;zip-code-ph&#34;&gt;ZIP Code PH
&lt;/h2&gt;&lt;p&gt;Find and search ZIP Codes of the Philippines
&lt;small&gt;&lt;em&gt;Built with UWP and C# (Windows)&lt;/em&gt;&lt;/small&gt;
&lt;small&gt;&lt;em&gt;Built with Flutter (Android &amp;amp; iOS)&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/portfolio/img/zipcodeph.png&#34; width=&#34;1203&#34;  height=&#34;721&#34;  srcset=&#34;https://reddavid.me/portfolio/img/zipcodeph_hu_cf5d8faec02598ca.png 480w, https://reddavid.me/portfolio/img/zipcodeph_hu_7fb79265691217a2.png 1024w&#34;  loading=&#34;lazy&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;166&#34;
	data-flex-basis=&#34;400px&#34; &gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/portfolio/img/zipcodeph-favorites.png&#34; width=&#34;1203&#34;  height=&#34;721&#34;  srcset=&#34;https://reddavid.me/portfolio/img/zipcodeph-favorites_hu_ff3b29c80423e01a.png 480w, https://reddavid.me/portfolio/img/zipcodeph-favorites_hu_67490c688f18567d.png 1024w&#34;  loading=&#34;lazy&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;166&#34;
	data-flex-basis=&#34;400px&#34; &gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/portfolio/img/zipcodeph-ios.png&#34; width=&#34;451&#34;  height=&#34;911&#34;  srcset=&#34;https://reddavid.me/portfolio/img/zipcodeph-ios_hu_309944f53abcd73.png 480w, https://reddavid.me/portfolio/img/zipcodeph-ios_hu_afd4df7046d90c23.png 1024w&#34;  loading=&#34;lazy&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;49&#34;
	data-flex-basis=&#34;118px&#34; &gt;&lt;/p&gt;
&lt;div class=&#34;app-badges&#34;&gt;&lt;a href=&#34;https://apps.apple.com/us/app/zip-code-ph/id1555921863&#34; target=&#34;_blank&#34;&gt;
    &lt;img class=&#34;badge appstore&#34; alt=&#34;Download on the App Store&#34; src=&#34;https://reddavid.me/images/badges/appstore.png&#34;&gt;
  &lt;/a&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=xyz.reddvid.zipcodeph&#34; target=&#34;_blank&#34;&gt;
    &lt;img class=&#34;badge googleplay&#34; alt=&#34;Get it on Google Play&#34; src=&#34;https://reddavid.me/images/badges/google_play.png&#34;&gt;
  &lt;/a&gt;&lt;a href=&#34;https://appgallery.huawei.com/app/C103245343&#34; target=&#34;_blank&#34;&gt;
    &lt;img class=&#34;badge huawei&#34; alt=&#34;Explore it on AppGallery&#34; src=&#34;https://reddavid.me/images/badges/appgallery.png&#34;&gt;
  &lt;/a&gt;&lt;a href=&#34;https://apps.microsoft.com/store/detail/9NBLGGH5GFT6&#34; target=&#34;_blank&#34;&gt;
    &lt;img class=&#34;badge msstore&#34; alt=&#34;Get it from Microsoft&#34; src=&#34;https://reddavid.me/images/badges/msstore.png&#34;&gt;
  &lt;/a&gt;&lt;/div&gt;
&lt;h2 id=&#34;rf-tools&#34;&gt;RF Tools
&lt;/h2&gt;&lt;p&gt;A Windows app with Calculators and Converters for RF (Radio Frequency) Systems
&lt;small&gt;&lt;em&gt;Built with UWP and C#&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/portfolio/img/rftools.png&#34; width=&#34;1279&#34;  height=&#34;729&#34;  srcset=&#34;https://reddavid.me/portfolio/img/rftools_hu_f910fe2e3f94e0e9.png 480w, https://reddavid.me/portfolio/img/rftools_hu_91a1e243b738aa62.png 1024w&#34;  loading=&#34;lazy&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;175&#34;
	data-flex-basis=&#34;421px&#34; &gt;&lt;/p&gt;
&lt;div class=&#34;app-badges&#34;&gt;&lt;a href=&#34;https://apps.microsoft.com/store/detail/9NBLGGH41BTT&#34; target=&#34;_blank&#34;&gt;
    &lt;img class=&#34;badge msstore&#34; alt=&#34;Get it from Microsoft&#34; src=&#34;https://reddavid.me/images/badges/msstore.png&#34;&gt;
  &lt;/a&gt;&lt;/div&gt;
&lt;h2 id=&#34;your-phone-tray&#34;&gt;Your Phone Tray
&lt;/h2&gt;&lt;p&gt;Put a shortcut of Your Phone (Phone Link) app in Windows system tray
&lt;small&gt;&lt;em&gt;Built with WinForms, UWP, and C#&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/portfolio/img/yourphonetray.png&#34; width=&#34;1399&#34;  height=&#34;787&#34;  srcset=&#34;https://reddavid.me/portfolio/img/yourphonetray_hu_137cc61dd030307f.png 480w, https://reddavid.me/portfolio/img/yourphonetray_hu_18e4179f6791c4ae.png 1024w&#34;  loading=&#34;lazy&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34;
	data-flex-basis=&#34;426px&#34; &gt;&lt;/p&gt;
&lt;div class=&#34;app-badges&#34;&gt;&lt;a href=&#34;https://apps.microsoft.com/store/detail/9P9F9D77ZB0N&#34; target=&#34;_blank&#34;&gt;
    &lt;img class=&#34;badge msstore&#34; alt=&#34;Get it from Microsoft&#34; src=&#34;https://reddavid.me/images/badges/msstore.png&#34;&gt;
  &lt;/a&gt;&lt;/div&gt;
&lt;h2 id=&#34;rpn-news--radio&#34;&gt;RPN News &amp;amp; Radio
&lt;/h2&gt;&lt;p&gt;Unofficial Windows app for tuning in for news and live radio
&lt;small&gt;&lt;em&gt;Built with UWP and C#&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;div class=&#34;app-badges&#34;&gt;&lt;a href=&#34;https://apps.microsoft.com/store/detail/9PHL469C0Z20&#34; target=&#34;_blank&#34;&gt;
    &lt;img class=&#34;badge msstore&#34; alt=&#34;Get it from Microsoft&#34; src=&#34;https://reddavid.me/images/badges/msstore.png&#34;&gt;
  &lt;/a&gt;&lt;/div&gt;
&lt;h2 id=&#34;rpn-radio&#34;&gt;RPN Radio
&lt;/h2&gt;&lt;p&gt;Tune in live to RPN stations for Android and iOS devices
&lt;small&gt;&lt;em&gt;Built with Flutter&lt;/em&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://reddavid.me/portfolio/img/rpnradio-ss.png&#34; width=&#34;1242&#34;  height=&#34;1906&#34;  srcset=&#34;https://reddavid.me/portfolio/img/rpnradio-ss_hu_516f96573dcd188c.png 480w, https://reddavid.me/portfolio/img/rpnradio-ss_hu_f3cc57290a21ff2c.png 1024w&#34;  loading=&#34;lazy&#34;   class=&#34;gallery-image&#34; data-flex-grow=&#34;65&#34;
	data-flex-basis=&#34;156px&#34; &gt;&lt;/p&gt;
&lt;div class=&#34;app-badges&#34;&gt;&lt;a href=&#34;https://apps.apple.com/us/app/rpn-radio/id1571699396&#34; target=&#34;_blank&#34;&gt;
    &lt;img class=&#34;badge appstore&#34; alt=&#34;Download on the App Store&#34; src=&#34;https://reddavid.me/images/badges/appstore.png&#34;&gt;
  &lt;/a&gt;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.rpnradio.radiov1&#34; target=&#34;_blank&#34;&gt;
    &lt;img class=&#34;badge googleplay&#34; alt=&#34;Get it on Google Play&#34; src=&#34;https://reddavid.me/images/badges/google_play.png&#34;&gt;
  &lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;&lt;del&gt;RPN News&lt;/del&gt;&lt;/h2&gt;
&lt;p&gt;&lt;del&gt;Read latest News from RPN regional stations (Under re-work)&lt;/del&gt;
&lt;del&gt;&lt;small&gt;&lt;em&gt;Built with Flutter&lt;/em&gt;&lt;/small&gt;&lt;/del&gt;&lt;/p&gt;
&lt;h2 id=&#34;personal-and-work-automation-apps&#34;&gt;Personal and Work-automation Apps
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;RPN ID Maker&lt;/li&gt;
&lt;li&gt;RPN Digital Manager (Web scraper, server and audio monitoring, etc.)&lt;/li&gt;
&lt;li&gt;RPN Traffic Control&lt;/li&gt;
&lt;li&gt;Misc personal projects&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tools&#34;&gt;Tools
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Figma / Adobe Illustrator&lt;/li&gt;
&lt;li&gt;Notion&lt;/li&gt;
&lt;li&gt;Visual Studio&lt;/li&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;Android Studio&lt;/li&gt;
&lt;li&gt;Xcode&lt;/li&gt;
&lt;li&gt;Adobe Photoshop / Photopea&lt;/li&gt;
&lt;li&gt;Others
&lt;ul&gt;
&lt;li&gt;DaVinci Resolve&lt;/li&gt;
&lt;li&gt;OBS&lt;/li&gt;
&lt;li&gt;Canva&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>About</title>
        <link>https://reddavid.me/about/</link>
        <pubDate>Sun, 23 Feb 2020 13:10:38 +0800</pubDate>
        
        <guid>https://reddavid.me/about/</guid>
        <description>&lt;!-- &lt;img src=&#34;https://reddavid.me/images/about-hero.jpg&#34; style=&#34;display:block; margin-left:auto; margin-right:auto; width:80%; &#34; alt=&#34;Me, Macapagal Bridge, Butuan City 2019&#34;&gt; --&gt;
&lt;h1 style=&#34;text-align: center; &#34;&gt;About Me&lt;/h1&gt;
&lt;p&gt;Hi! I am David. I am an electronics engineer and a self-taught desktop &amp;amp; mobile app developer.&lt;/p&gt;
&lt;h2 id=&#34;background&#34;&gt;Background
&lt;/h2&gt;&lt;p&gt;I started coding in college for our project study, RFID Gate System. We used Forms and VB. Net for the software and C++ for the Arduino controller. I then got into Windows Phone App development and learned C#, XAML, and Git. The first apps I developed were mostly for personal-use until I registered and submitted one to the Windows Phone Store.&lt;/p&gt;
&lt;p&gt;Then I developed apps that helped me simplify daily tasks, from monitoring, reporting statistical data, to automating web interactions.&lt;/p&gt;
&lt;h2 id=&#34;bio&#34;&gt;Bio
&lt;/h2&gt;&lt;p&gt;I lived and grew up until 21 in a small town in Pangasinan and moved to Metro Manila to venture for a living.&lt;/p&gt;
&lt;p&gt;I can speak Filipino (Tagalog) and English (spoken: 8, written: 9). I can also speak in my local language Pangasinan.&lt;/p&gt;
&lt;p&gt;I graduated and passed the Electronics Engineering board exams on 2013.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://reddavid.me/ballesteros-david-resume-may2022-ff99ddc820fe900192655148d4f20fdd2d6dd905730012a4565593e9ddb65cc7.pdf&#34; class=&#34;dl-btn&#34;&gt;Download résumé&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;know-more-about-me&#34;&gt;Know More About Me
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/reddvid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://linkedin.com/in/reddvid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Privacy Policy</title>
        <link>https://reddavid.me/privacy/privacy-policy/</link>
        <pubDate>Sun, 23 Feb 2020 13:10:38 +0800</pubDate>
        
        <guid>https://reddavid.me/privacy/privacy-policy/</guid>
        <description>&lt;p&gt;Disclaimer: The opinions expressed in this website are my own personal opinions and in no way represent my employer&amp;rsquo;s view.&lt;/p&gt;
&lt;h1 id=&#34;privacy-policy&#34;&gt;Privacy Policy
&lt;/h1&gt;&lt;p&gt;Last updated: August 3, 2023&lt;/p&gt;
&lt;p&gt;David Ballesteros&amp;rsquo;s Blog &amp;amp; Site (&amp;ldquo;us&amp;rdquo;, &amp;ldquo;we&amp;rdquo;, or &amp;ldquo;our&amp;rdquo;) operates the &lt;a class=&#34;link&#34; href=&#34;http://www.reddavid.me&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://www.reddavid.me&lt;/a&gt; website (the &amp;ldquo;Service&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data.&lt;/p&gt;
&lt;p&gt;We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, accessible from &lt;a class=&#34;link&#34; href=&#34;http://www.reddavid.me/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://www.reddavid.me/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;definitions&#34;&gt;Definitions
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Service&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt; Service is the &lt;a class=&#34;link&#34; href=&#34;http://www.reddavid.me/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://www.reddavid.me/&lt;/a&gt; website operated by David Ballesteros, an Individual.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Personal Data&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt; Personal data means data about a living individual who can be identified from those data (or from those and other information either in our possession or likely to come into our possession).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Usage Data&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt; Usage Data is data collected automatically either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cookies&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt; Cookies are small pieces of data stored on your device (computer or mobile device).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Controller&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt; Data Controller means the natural or legal person who (either alone or jointly or in common with other persons) determines the purposes for which and the manner which any personal information are, or are to be, processed.
&lt;br&gt;
&lt;br&gt; For the purpose of this Privacy Policy, we are a Data Controller of your Personal Data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Processors (or Service Providers)&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt; Data Processor (or Service Provider) means any natural or legal person who processes the data on behalf of the Data Controller.
&lt;br&gt;
&lt;br&gt; We may use the services of various Service Providers in order to process your data more effectively.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Subject (or User)&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt; Data Subject is any living individual who is using our Service and is the subject of Personal Data.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;information-collection-and-use&#34;&gt;Information Collection and Use
&lt;/h2&gt;&lt;p&gt;We collect several different types of information for various purposes to provide and improve our Service to you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TYPES OF DATA COLLECTED&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Personal Data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you (&amp;ldquo;Personal Data&amp;rdquo;). Personally identifiable information may include, but is not limited to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Email address&lt;/li&gt;
&lt;li&gt;First name and last name&lt;/li&gt;
&lt;li&gt;Cookies and Usage Data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Usage Data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We may also collect information how the Service is accessed and used (&amp;ldquo;Usage Data&amp;rdquo;). This Usage Data may include information such as your computer&amp;rsquo;s Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that you visit, the time and date of your visit, the time spent on those pages, unique device identifiers and other diagnostic data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tracking &amp;amp; Cookies Data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We use cookies and similar tracking technologies to track the activity on our Service and hold certain information.&lt;/p&gt;
&lt;p&gt;Cookies are files with small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Tracking technologies also used are beacons, tags, and scripts to collect and track information and to improve and analyze our Service.&lt;/p&gt;
&lt;p&gt;You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service.&lt;/p&gt;
&lt;p&gt;Example of Cookies we use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Session Cookies&lt;/strong&gt;. We use Session Cookies to operate our Service.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preference Cookies&lt;/strong&gt;. We use Preference Cookies to remember your preferences and various settings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security Cookies&lt;/strong&gt;. We use Security Cookies for security purposes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advertising Cookies&lt;/strong&gt;. Advertising Cookies are used to serve you with advertisements that may be relevant to you and your interests.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;use-of-data&#34;&gt;Use of Data
&lt;/h2&gt;&lt;p&gt;David Ballesteros&amp;rsquo;s Blog uses the collected data for various purposes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To provide and maintain our Service&lt;/li&gt;
&lt;li&gt;To notify you about changes to our Service&lt;/li&gt;
&lt;li&gt;To allow you to participate in interactive features of our Service when you choose to do so&lt;/li&gt;
&lt;li&gt;To provide customer support&lt;/li&gt;
&lt;li&gt;To gather analysis or valuable information so that we can improve our Service&lt;/li&gt;
&lt;li&gt;To monitor the usage of our Service&lt;/li&gt;
&lt;li&gt;To detect, prevent and address technical issues&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;legal-basis-for-processing-personal-data-under-general-data-protection-regulation-gdpr&#34;&gt;Legal Basis for Processing Personal Data Under General Data Protection Regulation (GDPR)
&lt;/h2&gt;&lt;p&gt;If you are from the European Economic Area (EEA), David Ballesteros&amp;rsquo;s Blog legal basis for collecting and using the personal information described in this Privacy Policy depends on the Personal Data we collect and the specific context in which we collect it.&lt;/p&gt;
&lt;p&gt;David Ballesteros&amp;rsquo;s Blog may process your Personal Data because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We need to perform a contract with you&lt;/li&gt;
&lt;li&gt;You have given us permission to do so&lt;/li&gt;
&lt;li&gt;The processing is in our legitimate interests and it&amp;rsquo;s not overridden by your rights&lt;/li&gt;
&lt;li&gt;To comply with the law&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;retention-of-data&#34;&gt;Retention of Data
&lt;/h2&gt;&lt;p&gt;David Ballesteros&amp;rsquo;s Blog will retain your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.&lt;/p&gt;
&lt;p&gt;David Ballesteros&amp;rsquo;s Blog will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods.&lt;/p&gt;
&lt;h2 id=&#34;transfer-of-data&#34;&gt;Transfer of Data
&lt;/h2&gt;&lt;p&gt;Your information, including Personal Data, may be transferred to - and maintained on - computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from your jurisdiction.&lt;/p&gt;
&lt;p&gt;Your consent to this Privacy Policy followed by your submission of such information represents your agreement to that transfer.&lt;/p&gt;
&lt;p&gt;David Ballesteros&amp;rsquo;s Blog will take all steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information.&lt;/p&gt;
&lt;h2 id=&#34;disclosure-of-data&#34;&gt;Disclosure of Data
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;LEGAL REQUIREMENTS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;David Ballesteros&amp;rsquo;s Blog may disclose your Personal Data in the good faith belief that such action is necessary to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To comply with a legal obligation&lt;/li&gt;
&lt;li&gt;To protect and defend the rights or property of David Ballesteros&amp;rsquo;s Blog&lt;/li&gt;
&lt;li&gt;To prevent or investigate possible wrongdoing in connection with the Service&lt;/li&gt;
&lt;li&gt;To protect the personal safety of users of the Service or the public&lt;/li&gt;
&lt;li&gt;To protect against legal liability&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;security-of-data&#34;&gt;Security of Data
&lt;/h2&gt;&lt;p&gt;The security of your data is important to us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security.&lt;/p&gt;
&lt;h2 id=&#34;do-not-track-signals&#34;&gt;&amp;ldquo;Do Not Track&amp;rdquo; Signals
&lt;/h2&gt;&lt;p&gt;We do not support Do Not Track (&amp;ldquo;DNT&amp;rdquo;). Do Not Track is a preference you can set in your web browser to inform websites that you do not want to be tracked.&lt;/p&gt;
&lt;p&gt;You can enable or disable Do Not Track by visiting the Preferences or Settings page of your web browser.&lt;/p&gt;
&lt;h2 id=&#34;your-data-protection-rights-under-general-data-protection-regulation-gdpr&#34;&gt;Your Data Protection Rights Under General Data Protection Regulation (GDPR)
&lt;/h2&gt;&lt;p&gt;If you are a resident of the European Economic Area (EEA), you have certain data protection rights. David Ballesteros&amp;rsquo;s Blog aims to take reasonable steps to allow you to correct, amend, delete, or limit the use of your Personal Data.&lt;/p&gt;
&lt;p&gt;If you wish to be informed what Personal Data we hold about you and if you want it to be removed from our systems, please contact us.&lt;/p&gt;
&lt;p&gt;In certain circumstances, you have the following data protection rights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The right to access, update or to delete the information we have on you. Whenever made possible, you can access, update or request deletion of your Personal Data directly within your account settings section. If you are unable to perform these actions yourself, please contact us to assist you.&lt;/li&gt;
&lt;li&gt;The right of rectification. You have the right to have your information rectified if that information is inaccurate or incomplete.&lt;/li&gt;
&lt;li&gt;The right to object. You have the right to object to our processing of your Personal Data.&lt;/li&gt;
&lt;li&gt;The right of restriction. You have the right to request that we restrict the processing of your personal information.&lt;/li&gt;
&lt;li&gt;The right to data portability. You have the right to be provided with a copy of the information we have on you in a structured, machine-readable and commonly used format.&lt;/li&gt;
&lt;li&gt;The right to withdraw consent. You also have the right to withdraw your consent at any time where David Ballesteros&amp;rsquo;s Blog relied on your consent to process your personal information.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Please note that we may ask you to verify your identity before responding to such requests.&lt;/p&gt;
&lt;p&gt;You have the right to complain to a Data Protection Authority about our collection and use of your Personal Data. For more information, please contact your local data protection authority in the European Economic Area (EEA).&lt;/p&gt;
&lt;h2 id=&#34;service-providers&#34;&gt;Service Providers
&lt;/h2&gt;&lt;p&gt;We may employ third party companies and individuals to facilitate our Service (&amp;ldquo;Service Providers&amp;rdquo;), to provide the Service on our behalf, to perform Service-related services or to assist us in analyzing how our Service is used.&lt;/p&gt;
&lt;p&gt;These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ANALYTICS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We may use third-party Service Providers to monitor and analyze the use of our Service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google Analytics&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Google Analytics is a web analytics service offered by Google that tracks and reports website traffic. Google uses the data collected to track and monitor the use of our Service. This data is shared with other Google services. Google may use the collected data to contextualize and personalize the ads of its own advertising network.&lt;/p&gt;
&lt;p&gt;You can opt-out of having made your activity on the Service available to Google Analytics by installing the Google Analytics opt-out browser add-on. The add-on prevents the Google Analytics JavaScript (ga.js, analytics.js, and dc.js) from sharing information with Google Analytics about visits activity.&lt;/p&gt;
&lt;p&gt;For more information on the privacy practices of Google, please visit the Google Privacy &amp;amp; Terms web page: &lt;a class=&#34;link&#34; href=&#34;https://policies.google.com/privacy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://policies.google.com/privacy&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADVERTISING&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We may use third-party Service Providers to show advertisements to you to help support and maintain our Service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Google AdSense &amp;amp; DoubleClick Cookie&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Google, as a third party vendor, uses cookies to serve ads on our Service. Google&amp;rsquo;s use of the DoubleClick cookie enables it and its partners to serve ads to our users based on their visit to our Service or other websites on the Internet.&lt;/p&gt;
&lt;p&gt;You may opt out of the use of the DoubleClick Cookie for interest-based advertising by visiting the Google Ads Settings web page: &lt;a class=&#34;link&#34; href=&#34;http://www.google.com/ads/preferences/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;http://www.google.com/ads/preferences/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;links-to-other-sites&#34;&gt;Links to Other Sites
&lt;/h2&gt;&lt;p&gt;Our Service may contain links to other sites that are not operated by us. If you click on a third party link, you will be directed to that third party&amp;rsquo;s site. We strongly advise you to review the Privacy Policy of every site you visit.&lt;/p&gt;
&lt;p&gt;We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.&lt;/p&gt;
&lt;h2 id=&#34;childrens-privacy&#34;&gt;Children&amp;rsquo;s Privacy
&lt;/h2&gt;&lt;p&gt;Our Service does not address anyone under the age of 18 (&amp;ldquo;Children&amp;rdquo;).&lt;/p&gt;
&lt;p&gt;We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a parent or guarian and you are aware that your child has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers.&lt;/p&gt;
&lt;h2 id=&#34;changes-to-this-privacy-policy&#34;&gt;Changes to This Privacy Policy
&lt;/h2&gt;&lt;p&gt;We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.&lt;/p&gt;
&lt;p&gt;We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the &amp;ldquo;effective data&amp;rdquo; at the top of this Privacy Policy.&lt;/p&gt;
&lt;p&gt;You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.&lt;/p&gt;
&lt;h2 id=&#34;contact-us&#34;&gt;Contact Us
&lt;/h2&gt;&lt;p&gt;If you have any questions about this Privacy Policy, please contact us:&lt;/p&gt;
&lt;p&gt;By email: hi at reddavid dot me&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Privacy Policy for ZIP Code PH for Android</title>
        <link>https://reddavid.me/privacy/privacy-policy-android-apps/</link>
        <pubDate>Sun, 23 Feb 2020 13:10:38 +0800</pubDate>
        
        <guid>https://reddavid.me/privacy/privacy-policy-android-apps/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Privacy Policy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Red David built the ZIP Code PH app as an Ad Supported app. This SERVICE is provided by Red David at no cost and is intended for use as is.&lt;/p&gt;
&lt;p&gt;This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.&lt;/p&gt;
&lt;p&gt;If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.&lt;/p&gt;
&lt;p&gt;The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at ZIP Code PH unless otherwise defined in this Privacy Policy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Information Collection and Use&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information. The information that I request will be retained on your device and is not collected by me in any way.&lt;/p&gt;
&lt;p&gt;The app does use third party services that may collect information used to identify you.&lt;/p&gt;
&lt;p&gt;Link to privacy policy of third party service providers used by the app&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.google.com/policies/privacy/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google Play Services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://support.google.com/admob/answer/6128543?hl=en&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AdMob&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Log Data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cookies&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device&amp;rsquo;s internal memory.&lt;/p&gt;
&lt;p&gt;This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Service Providers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I may employ third-party companies and individuals due to the following reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To facilitate our Service;&lt;/li&gt;
&lt;li&gt;To provide the Service on our behalf;&lt;/li&gt;
&lt;li&gt;To perform Service-related services; or&lt;/li&gt;
&lt;li&gt;To assist us in analyzing how our Service is used.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Links to Other Sites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Children’s Privacy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13 years of age. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact me so that I will be able to do necessary actions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes to This Privacy Policy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page.&lt;/p&gt;
&lt;p&gt;This policy is effective as of 2021-03-10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contact Us&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at &lt;a class=&#34;link&#34; href=&#34;mailto://reddavidapps@outlook.com&#34; &gt;reddavidapps@outlook.com&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;&lt;small&gt;This privacy policy page was created at &lt;a class=&#34;link&#34; href=&#34;https://privacypolicytemplate.net&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;privacypolicytemplate.net&lt;/a&gt; and modified/generated by &lt;a class=&#34;link&#34; href=&#34;https://app-privacy-policy-generator.nisrulz.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;App Privacy Policy Generator&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Privacy Policy for ZIP Code PH for iOS</title>
        <link>https://reddavid.me/privacy/privacy-policy-ios-apps/</link>
        <pubDate>Sun, 23 Feb 2020 13:10:38 +0800</pubDate>
        
        <guid>https://reddavid.me/privacy/privacy-policy-ios-apps/</guid>
        <description>&lt;p&gt;&lt;strong&gt;Privacy Policy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;David Jessof Ballesteros (Red David) built the ZIP Code PH app as a Commercial app. This SERVICE is provided by David Jessof Ballesteros (Red David) and is intended for use as is.&lt;/p&gt;
&lt;p&gt;This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.&lt;/p&gt;
&lt;p&gt;If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.&lt;/p&gt;
&lt;p&gt;The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at ZIP Code PH unless otherwise defined in this Privacy Policy.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Information Collection and Use&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information. The information that I request will be retained on your device and is not collected by me in any way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Log Data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cookies&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device&amp;rsquo;s internal memory.&lt;/p&gt;
&lt;p&gt;This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Service Providers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I may employ third-party companies and individuals due to the following reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;To facilitate our Service;&lt;/li&gt;
&lt;li&gt;To provide the Service on our behalf;&lt;/li&gt;
&lt;li&gt;To perform Service-related services; or&lt;/li&gt;
&lt;li&gt;To assist us in analyzing how our Service is used.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Links to Other Sites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Children’s Privacy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13 years of age. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact me so that I will be able to do necessary actions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes to This Privacy Policy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page.&lt;/p&gt;
&lt;p&gt;This policy is effective as of 2021-03-10&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contact Us&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at &lt;a class=&#34;link&#34; href=&#34;mailto://reddavidapps@outlook.com&#34; &gt;reddavidapps@outlook.com&lt;/a&gt;&lt;/p&gt;
&lt;br/&gt;
&lt;p&gt;&lt;small&gt;This privacy policy page was created at &lt;a class=&#34;link&#34; href=&#34;https://privacypolicytemplate.net&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;privacypolicytemplate.net&lt;/a&gt; and modified/generated by &lt;a class=&#34;link&#34; href=&#34;https://app-privacy-policy-generator.nisrulz.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;App Privacy Policy Generator&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>I Got Myself a New Laptop</title>
        <link>https://reddavid.me/p/new-laptop/</link>
        <pubDate>Tue, 18 Feb 2020 16:30:40 +0800</pubDate>
        
        <guid>https://reddavid.me/p/new-laptop/</guid>
        <description>&lt;img src="https://reddavid.me/images/feat/acer-laptop.jpg" alt="Featured image of post I Got Myself a New Laptop" /&gt;&lt;h2 id=&#34;foreword&#34;&gt;Foreword
&lt;/h2&gt;&lt;p&gt;Last February 15, I got myself a new Acer laptop. It is an Acer Nitro 5 laptop sporting an AMD Ryzen 3550H with RX560X Graphics. This makes my 3rd Acer laptop in a span of 8+ years and my first ever AMD on a laptop (had an AMD Athlon X2 PC before).&lt;/p&gt;
&lt;p&gt;This laptop costs Php34,999 and we could not find a promo since every store follows the retail price. Although, the laptop was &lt;em&gt;on promo&lt;/em&gt; with having an included a single stick of 8GB DDR4 memory (upgraded from 4GB), 128GB SSD (m.2 SATA) and a 1TB mechanical drive (not SSHD).&lt;/p&gt;
&lt;p&gt;The laptop includes a generic-looking backpack - yes, I said generic since I saw somewhere that there is a &lt;em&gt;gaming-accented&lt;/em&gt; version of the bag.&lt;/p&gt;
&lt;h2 id=&#34;quick-specs&#34;&gt;Quick Specs:
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;AMD Ryzen 5 3550H Quad-Core with Vega 8 Graphics (which consumes 2GB of RAM)&lt;/li&gt;
&lt;li&gt;AMD Radeon RX560X 4GB DDR4 - Here&amp;rsquo;s the catch, upon checking CPU-Z the - installed memory stick is rated at 2666MHz but later found out that Ryzen 3550H is limited to 2400MHz, so maybe that is a bummer&lt;/li&gt;
&lt;li&gt;15.6&amp;quot; FHD 1920x1080p IPS LCD(slim-frame), Red Backlit-keyboard&lt;/li&gt;
&lt;li&gt;Dual M.2 (nVME only + SATA only) + 1 HDD slots&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Full specs of the laptop can be found &lt;a class=&#34;link&#34; href=&#34;https://www.acer.com/ac/en/GB/content/model/NH.Q5XEK.008&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;using-the-laptop&#34;&gt;Using the laptop
&lt;/h2&gt;&lt;h3 id=&#34;speed&#34;&gt;Speed
&lt;/h3&gt;&lt;p&gt;Coming from an Intel i7 laptop, I felt the difference in boot up times, booting on this device is slightly slower - not sure if it&amp;rsquo;s because of the SSD installed, since I was using a Samsung 860 Evo on my old laptop.&lt;/p&gt;
&lt;p&gt;Next is using Visual Studio, rebuilding some of my apps takes a longer time to finish. Also, having only 6GB of memory (since the 2GB is shared for AMD switchable graphics) I can&amp;rsquo;t stand having my chrome tabs reload after a while.&lt;/p&gt;
&lt;h3 id=&#34;gaming&#34;&gt;Gaming
&lt;/h3&gt;&lt;p&gt;Before my old laptop broke (which was an Acer Nitro V, with an Intel i7 4th gen + 2GB GTX960M), I was just playing some Minecraft (sometimes with Shaders), some casual Dota 2, and other medium-intensive games.&lt;/p&gt;
&lt;p&gt;Of course, I was playing either inside an aircon-ed room or the fan pointing to the laptop.&lt;/p&gt;
&lt;p&gt;Meanwhile on this new laptop, launching games, even Dota 2, was a pain. It took too long that sometimes it would just not respond and fails to load at all.&lt;/p&gt;
&lt;p&gt;But before even buying this, I said to myself that I can&amp;rsquo;t game like I did before - long hours, intensive AAA games - so I disregarded this experience, at first.&lt;/p&gt;
&lt;h3 id=&#34;overall-system-experience&#34;&gt;Overall (System) Experience
&lt;/h3&gt;&lt;p&gt;Out of habit, I installed the latest drivers including Radeon software (Adrenaline 2020). But the app is laggy as hell and eventually gave me a black screen out of nowhere - which I made a hard boot just to go back seeing things to Windows.&lt;/p&gt;
&lt;p&gt;Upon checking, it installed an older driver. (Damn AMD)&lt;/p&gt;
&lt;p&gt;Even though I use an external mech keyboard, this keyboard layout is hideous compared to the old Nitro V I had! I am missing the Pause/Break key but I believe it is hidden in F11, I believe.&lt;/p&gt;
&lt;p&gt;The ports are ok, but the Type-C is not thunderbolt. The power port is on the middle of the body!!!&lt;/p&gt;
&lt;p&gt;Nitro Sense is a great addition that it lets you control the laptop fans manually - they can get loud man! The fan layout is not &amp;ldquo;optimal&amp;rdquo; in my opinion though.&lt;/p&gt;
&lt;p&gt;Lastly, the speakers on it are s**t 🤮. Apparently this is what we get for this price. 🤷🏽&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;upgrades&#34;&gt;Upgrades
&lt;/h2&gt;&lt;p&gt;It took me two weeks to &amp;ldquo;settle&amp;rdquo; with this new laptop and sometimes got me thinking of &amp;ldquo;regrets&amp;rdquo;. But I actually planned to upgrade memory - I just didn&amp;rsquo;t have the money 😂.&lt;/p&gt;
&lt;p&gt;I got an 8GB TeamGroup stick 2666MHz despite the CPU limit since I can re-use them (on future units or resell them), and the price difference to a 2400MHz is minimal.&lt;/p&gt;
&lt;p&gt;The unit has not easy-access so I went to a service center to install the RAM together with my old WD 500GB SSD just to have an &amp;ldquo;extra&amp;rdquo; faster storage. The service was free, and it took only 30 minutes because of some papers to fill-out but the service was fast.&lt;/p&gt;
&lt;p&gt;The unit was faster, and launching apps and games was indeed faster. I also got extra fps in games, saved seconds to minutes in Visual Studio, and Chrome tabs are saved.&lt;/p&gt;
&lt;p&gt;The only problem here now is having an older, OEM-issued drivers for the graphics card.&lt;/p&gt;
&lt;p&gt;Replaying some games with higher FPS is also a plus.&lt;/p&gt;
&lt;p&gt;Right now, I am thinking of upgrading to nVMe, to a higher 2.5&amp;quot; SSD and 32GB RAM 😳.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;other-notes&#34;&gt;Other notes
&lt;/h2&gt;&lt;p&gt;Catch me play a game on this device in &lt;a class=&#34;link&#34; href=&#34;https://facebook.com/RedDavidGaming&#34;&gt;Facebook Gaming&lt;/a&gt;.
Support my tech lust by &lt;a class=&#34;link&#34; href=&#34;https://buymeacoffee.com/reddavid&#34;&gt;buying me a coffee&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;https://paypal.me/reddvid&#34;&gt;send a tip for my next upgrade&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>RPN Android App</title>
        <link>https://reddavid.me/p/rpn-android-app/</link>
        <pubDate>Thu, 02 Jan 2020 03:02:48 +0800</pubDate>
        
        <guid>https://reddavid.me/p/rpn-android-app/</guid>
        <description>&lt;img src="https://reddavid.me/images/rpn-android.png" alt="Featured image of post RPN Android App" /&gt;&lt;p&gt;Hey hey, recently I branched out my C# and apps knowledge to create and actually port or make versions of my UWP apps to Android using Xamarin Forms.&lt;/p&gt;
&lt;p&gt;Finally opt-in and registered to Google Play platform and chose RPN News &amp;amp; Radio to the Store as the first app (under my registered dev name) to become publicly available.&lt;/p&gt;
&lt;p&gt;Obviously, this is unofficial and not backed by my employers. I believe having this in the store is essential to expand the platforms reached by RPN.&lt;/p&gt;
&lt;p&gt;Also, there are some adjustments I needed to learn in using Xamarin Forms, and had to merge several projects to create both the news and radio part of the app. Thanks to open source!&lt;/p&gt;
&lt;p&gt;There are still bugs, I know, but help by checking the app &lt;a class=&#34;link&#34; href=&#34;https://play.google.com/store/apps/details?id=xyz.reddvid.rpnradio&#34; taget=&#34;_blank&#34;&gt;here&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Posts</title>
        <link>https://reddavid.me/posts/</link>
        <pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate>
        
        <guid>https://reddavid.me/posts/</guid>
        <description></description>
        </item>
        <item>
        <title>RF Tools Gets Multi-Window Support</title>
        <link>https://reddavid.me/p/rf-tools-gets-multi-window-support/</link>
        <pubDate>Sun, 12 May 2019 15:47:52 +0800</pubDate>
        
        <guid>https://reddavid.me/p/rf-tools-gets-multi-window-support/</guid>
        <description>&lt;img src="https://reddavid.me/images/rftools.png" alt="Featured image of post RF Tools Gets Multi-Window Support" /&gt;&lt;h2 id=&#34;new-sdk-features&#34;&gt;New SDK Features
&lt;/h2&gt;&lt;p&gt;UWP SDK recently released support for Multi-windowing.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.microsoft.com/en-us/windows/uwp/design/layout/images/multi-view.gif&#34;    loading=&#34;lazy&#34;  alt=&#34;“UWP multiview”&#34;  &gt;&lt;/p&gt;
&lt;p&gt;Then I thought of which of my apps should I implement this with, there&amp;rsquo;s nothing better than RF Tools, a calculator app for engineers and enthusiasts of radio frequency.&lt;/p&gt;
&lt;p&gt;This should improve the user&amp;rsquo;s experience by doing multiple calculations visible at once; to compare and serve as a history.&lt;/p&gt;
&lt;h2 id=&#34;screenshots&#34;&gt;Screenshots
&lt;/h2&gt;&lt;p&gt;&lt;img src=&#34;https://store-images.s-microsoft.com/image/apps.60377.13510798887994336.0ea597cf-9876-450a-a556-970e65ee2c51.fb038e62-7867-47a6-bab5-f147dbc3fc88?w=1399&amp;amp;h=787&amp;amp;q=90&amp;amp;format=jpg&#34;    loading=&#34;lazy&#34;  alt=&#34;RF Tools split view&#34;  &gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://store-images.s-microsoft.com/image/apps.52167.13510798887994336.0ea597cf-9876-450a-a556-970e65ee2c51.1e574b1f-3491-4f87-b7e1-ad518a098b1f?w=1399&amp;amp;h=787&amp;amp;q=90&amp;amp;format=jpg&#34;    loading=&#34;lazy&#34;  alt=&#34;RF Tools multi window&#34;  &gt;&lt;/p&gt;
&lt;h2 id=&#34;download&#34;&gt;Download
&lt;/h2&gt;&lt;p&gt;You can &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-us/p/rf-tools/9nblggh41btt&#34; target=&#34;_blank&#34;&gt;download the app here&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>RPN News &amp; Radio Gets a New UI</title>
        <link>https://reddavid.me/p/rpn-news-radio-gets-a-new-ui/</link>
        <pubDate>Thu, 14 Mar 2019 15:28:37 +0800</pubDate>
        
        <guid>https://reddavid.me/p/rpn-news-radio-gets-a-new-ui/</guid>
        <description>&lt;img src="https://reddavid.me/images/rpn-newui.jpg" alt="Featured image of post RPN News &amp; Radio Gets a New UI" /&gt;&lt;p&gt;A quite small update to fix and improve the overall UI of the app. Adding some fluent design, new font and smoother experience.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/en-ph/p/rpn-news-radio/9phl469c0z20?rtc=1&#34; target=&#34;_blank&#34;&gt;You can download RPN News &amp;amp; Radio for Windows 10 app here&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>A Story of Self-taught Coding</title>
        <link>https://reddavid.me/p/a-story-of-self-taught-coding/</link>
        <pubDate>Sat, 05 Jan 2019 00:22:42 +0800</pubDate>
        
        <guid>https://reddavid.me/p/a-story-of-self-taught-coding/</guid>
        <description>&lt;img src="https://reddavid.me/images/ard-and.jpg" alt="Featured image of post A Story of Self-taught Coding" /&gt;&lt;p&gt;Started coding using VB.Net and Forms for our final year thesis (which programming was NOT a major). Then while gearing up for board exams, learnt to code and design for Windows Phone 7.5/7.8/8 using XAML, C# &amp;amp; Silverlight.&lt;/p&gt;
&lt;p&gt;Then came Windows 8.1 and WP8.1 on the Univeral App Shared codes, but didn&amp;rsquo;t dive that deep because of some weird Windows 8.1 windowing and such.&lt;/p&gt;
&lt;p&gt;Finally W10 and UWP, still slowly learning and managed to improve my coding skills.&lt;/p&gt;
&lt;p&gt;Most of my WP7/8 apps were unpublished due to failure to update them, but right now a set of Windows 10 Apps is available for download. I have yet to get my own domain though.&lt;/p&gt;
&lt;p&gt;And since, Windows (dev) has no feature to share a publisher link, I&amp;rsquo;d share my Facebook page: &lt;a class=&#34;link&#34; href=&#34;https://facebook.com/reddavidapps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://facebook.com/reddavidapps&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Gaming</title>
        <link>https://reddavid.me/gaming/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://reddavid.me/gaming/</guid>
        <description>&lt;h1 style=&#34;text-align: center; &#34;&gt;Gaming&lt;/h1&gt;
&lt;h2 id=&#34;currently-playing&#34;&gt;Currently Playing
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Starfield - giving it another shot after giving up 1 hour of gameplay at launch&lt;/li&gt;
&lt;li&gt;Minecraft (Java, Singleplayer World 1.20.6)&lt;/li&gt;
&lt;li&gt;Assassin&amp;rsquo;s Creed Director&amp;rsquo;s Cut&lt;/li&gt;
&lt;li&gt;Cyberpunk 2077 (on hold)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;featured-gameplayplaylist&#34;&gt;Featured Gameplay/Playlist
&lt;/h2&gt;&lt;!-- Starfield Playlist --&gt;
&lt;div class=&#34;video-wrapper&#34;&gt;
&lt;iframe src=&#34;https://www.youtube.com/embed?listType=playlist&amp;list=PLwC47NQhSu5ymja38ozY3eDG1Pcv4e9hN&amp;rel=0&amp;color=white&#34; width=&#34;800&#34; height=&#34;450&#34; style=&#34;position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;&#34; frameborder=&#34;0&#34;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id=&#34;streaming&#34;&gt;Streaming
&lt;/h2&gt;&lt;p&gt;I now stream irregularly on Twitch as &lt;a class=&#34;link&#34; href=&#34;https://twitch.tv/reddavidgg&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;@reddavidgg!&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;games-list&#34;&gt;Games List
&lt;/h2&gt;&lt;p&gt;Excluding my Steam library and other platform games (Epic, GOG), below is a table where I track my finished, on-going, to-be-continued, and soon-to-play games.&lt;/p&gt;
&lt;h3 id=&#34;recent-games&#34;&gt;Recent Games
&lt;/h3&gt;&lt;p&gt;(Working on it!)&lt;/p&gt;
&lt;h3&gt;Full List (as far as I remember)&lt;/h3&gt;
&lt;details&gt;
&lt;summary&gt;
&lt;small&gt;&lt;em&gt;as of December 12, 2023&lt;/em&gt;&lt;/small&gt;
&lt;/summary&gt;
&lt;p&gt;(Working on it!)&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;setup&#34;&gt;Setup
&lt;/h2&gt;&lt;h3 id=&#34;pc-specs&#34;&gt;PC Specs
&lt;/h3&gt;&lt;!-- &lt;div class=&#34;product-view article-list--compact links schmol&#34; &gt;
    &lt;article&gt;
        &lt;img class=&#34;product-img&#34; src=&#34;img/products/amd-ryzen-7.png&#34; height=&#34;200&#34; width=&#34;200&#34; style=&#34;object-fit: cover !important;&#34;&gt;&lt;p style=&#34;margin-top: -5px;&#34;&gt;
            AMD Ryzen 7 5700X
        &lt;/p&gt;&lt;/article&gt;
&lt;/div&gt;
&lt;div class=&#34;product-view article-list--compact links schmol&#34; &gt;
    &lt;article&gt;
        &lt;img class=&#34;product-img&#34; src=&#34;img/products/msi-b550m-pro-vdh-wifi.png&#34; height=&#34;200&#34; width=&#34;200&#34; style=&#34;object-fit: cover !important;&#34;&gt;&lt;p style=&#34;margin-top: -5px;&#34;&gt;
            AMD Ryzen 7 5700X
        &lt;/p&gt;&lt;/article&gt;
&lt;/div&gt;
&lt;div class=&#34;product-view article-list--compact links schmol&#34; &gt;
    &lt;article&gt;
        &lt;img class=&#34;product-img&#34; src=&#34;img/products/keychron-k2-pro.png&#34; height=&#34;200&#34; width=&#34;200&#34; style=&#34;object-fit: cover !important;&#34;&gt;&lt;p style=&#34;margin-top: -5px;&#34;&gt;
            Keychron K2 Pro
        &lt;/p&gt;&lt;/article&gt;
&lt;/div&gt; --&gt;
&lt;ul&gt;
&lt;li&gt;CPU: AMD Ryzen 9 5900X&lt;/li&gt;
&lt;li&gt;Motherboard: ASUS ROG STRIX B550-F GAMING WIFI II&lt;/li&gt;
&lt;li&gt;Cooler: DeepCool AK620 DIGITAL&lt;/li&gt;
&lt;li&gt;RAM: Corsair Vengeance RGB RS 64GB (2X32GB) 3600MHZ&lt;/li&gt;
&lt;li&gt;SSD (System): Samsung 990 Pro 2TB&lt;/li&gt;
&lt;li&gt;SSD (Games): PNY 2TB m.2&lt;/li&gt;
&lt;li&gt;Storage: Seagate 8TB&lt;/li&gt;
&lt;li&gt;GPU: MSI Geforce RTX 4070 Ti Super 16G Shadow 3X OC&lt;/li&gt;
&lt;li&gt;PSU: Corsair RM750e 80+ Gold&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;peripherals&#34;&gt;Peripherals
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Monitor/s:
&lt;ul&gt;
&lt;li&gt;LG Ultragear 27GS75Q-B 27&amp;quot; 1440p 180Hz&lt;/li&gt;
&lt;li&gt;Xitrix G2730 27&amp;quot; 1440p 180Hz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Keyboard: Keychron K2 Pro&lt;/li&gt;
&lt;li&gt;Mice: Logitech G502 Hero&lt;/li&gt;
&lt;li&gt;Webcam: Logitech C922&lt;/li&gt;
&lt;li&gt;Audio:
&lt;ul&gt;
&lt;li&gt;PreSonus Eris 3.5&lt;/li&gt;
&lt;li&gt;Audio-Technica 2040 Dynamic Mic&lt;/li&gt;
&lt;li&gt;Focusrite 2i2 Gen4&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;links&#34;&gt;Links
&lt;/h2&gt;&lt;h3 id=&#34;profiles&#34;&gt;Profiles
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://steamcommunity.com/id/reddvid/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Steam&lt;/strong&gt;&lt;/a&gt;: 91135388&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;channels&#34;&gt;Channels
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://twitch.tv/reddavidgg/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Twitch&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/@RedDavidGG&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;YouTube Gaming Channel&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://youtube.com/@RedDavidGG2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;YouTube VODs Channel&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://facebook.com/RedDavidGG&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Facebook&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://tiktok.com/@RedDavidGG&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;TikTok&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://instagram.com/RedDavidGG&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Instagram&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://twitter.com/RedDavidGG&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Twitter/X&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/rKnJb4J&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;&lt;del&gt;Dead&lt;/del&gt; Discord Community&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;support&#34;&gt;Support
&lt;/h3&gt;&lt;p&gt;I don&amp;rsquo;t earn yet from this gaming hobby, so if you feel generous:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://paypal.com/paypalme/reddvid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;PayPal&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://streamlabs.com/reddavidgg1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Streamlabs&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ko-fi.com/reddavidgg1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Ko-fi&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;faqs&#34;&gt;FAQs
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;What&amp;rsquo;s your rank in &lt;strong&gt;_&lt;/strong&gt;?
&lt;ul&gt;
&lt;li&gt;I am done playing online competitive games, so no ranks/medals, etc. (Though I got til Divine 1 in Dota 2 back in the days.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;What&amp;rsquo;s your stream schedule?
&lt;ul&gt;
&lt;li&gt;I have none.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Why are you inconsistent with what you do?
&lt;ul&gt;
&lt;li&gt;Busy life.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Do you play mobile games?
&lt;ul&gt;
&lt;li&gt;Seldomly, I grew up playing games on a bigger screen.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Links</title>
        <link>https://reddavid.me/links/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://reddavid.me/links/</guid>
        <description></description>
        </item>
        <item>
        <title>Red David&#39;s Wishlist</title>
        <link>https://reddavid.me/wishlist/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://reddavid.me/wishlist/</guid>
        <description></description>
        </item>
        <item>
        <title>Search</title>
        <link>https://reddavid.me/search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://reddavid.me/search/</guid>
        <description></description>
        </item>
        <item>
        <title>Tip thru GCash</title>
        <link>https://reddavid.me/gcash/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://reddavid.me/gcash/</guid>
        <description></description>
        </item>
        
    </channel>
</rss>
