<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Freshlytyped blog]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://blog.freshlytyped.nl/</link><image><url>https://blog.freshlytyped.nl/favicon.png</url><title>Freshlytyped blog</title><link>https://blog.freshlytyped.nl/</link></image><generator>Ghost 5.87</generator><lastBuildDate>Mon, 08 Jul 2024 18:40:41 GMT</lastBuildDate><atom:link href="https://blog.freshlytyped.nl/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Hey Home Assistant, turn off solar panels when the price is negative]]></title><description><![CDATA[<p>This is something I have started using in my Home Assistant as Automation. When the price is below 1ct, I just turn off my solar invertor (which I&apos;ve added a &quot;switch&quot; entity to). The yaml:</p><pre><code>alias: Tibber Below Low price
description: Turns off the inverter if</code></pre>]]></description><link>https://blog.freshlytyped.nl/hey-home-assistant-turn-off-solar-panels-when-the-price-is-negative/</link><guid isPermaLink="false">668c307053c1fa08680dedcc</guid><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Mon, 08 Jul 2024 18:36:49 GMT</pubDate><content:encoded><![CDATA[<p>This is something I have started using in my Home Assistant as Automation. When the price is below 1ct, I just turn off my solar invertor (which I&apos;ve added a &quot;switch&quot; entity to). The yaml:</p><pre><code>alias: Tibber Below Low price
description: Turns off the inverter if the price is too low
trigger:
  - platform: numeric_state
    entity_id:
      - sensor.electricity_price_thuis
    below: 1
condition: []
action:
  - service: notify.mobile_app_iphone_s_matej
    metadata: {}
    data:
      message: (BELOW) Price {{trigger.to_state.state}}
  - service: switch.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: switch.inverter_switch
mode: single
</code></pre><p>Of course, don&apos;t forget to turn it back on when the price is above 1ct with an inverted automation ;)</p><p>This is how it looks like</p><figure class="kg-card kg-image-card"><img src="https://blog.freshlytyped.nl/content/images/2024/07/image.png" class="kg-image" alt loading="lazy" width="2000" height="900" srcset="https://blog.freshlytyped.nl/content/images/size/w600/2024/07/image.png 600w, https://blog.freshlytyped.nl/content/images/size/w1000/2024/07/image.png 1000w, https://blog.freshlytyped.nl/content/images/size/w1600/2024/07/image.png 1600w, https://blog.freshlytyped.nl/content/images/2024/07/image.png 2058w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[Some home automation]]></title><description><![CDATA[<p>These are just some screenshots from my Home Assistant and <a href="https://github.com/jomjol/AI-on-the-edge-device/?ref=blog.freshlytyped.nl#ai-on-the-edge-device-on-a-water-meter">AI-on-the-edge</a>:</p><figure class="kg-card kg-image-card"><img src="https://blog.freshlytyped.nl/content/images/2023/09/image-4.png" class="kg-image" alt loading="lazy" width="2000" height="829" srcset="https://blog.freshlytyped.nl/content/images/size/w600/2023/09/image-4.png 600w, https://blog.freshlytyped.nl/content/images/size/w1000/2023/09/image-4.png 1000w, https://blog.freshlytyped.nl/content/images/size/w1600/2023/09/image-4.png 1600w, https://blog.freshlytyped.nl/content/images/2023/09/image-4.png 2000w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.freshlytyped.nl/content/images/2023/09/image-3.png" class="kg-image" alt loading="lazy" width="2000" height="2196" srcset="https://blog.freshlytyped.nl/content/images/size/w600/2023/09/image-3.png 600w, https://blog.freshlytyped.nl/content/images/size/w1000/2023/09/image-3.png 1000w, https://blog.freshlytyped.nl/content/images/size/w1600/2023/09/image-3.png 1600w, https://blog.freshlytyped.nl/content/images/2023/09/image-3.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>The landing screen of the AI on the edge is really sweet, as well as the whole app :)</p><figure class="kg-card kg-image-card"><img src="https://blog.freshlytyped.nl/content/images/2023/09/image-2.png" class="kg-image" alt loading="lazy" width="2000" height="1512" srcset="https://blog.freshlytyped.nl/content/images/size/w600/2023/09/image-2.png 600w, https://blog.freshlytyped.nl/content/images/size/w1000/2023/09/image-2.png 1000w, https://blog.freshlytyped.nl/content/images/size/w1600/2023/09/image-2.png 1600w, https://blog.freshlytyped.nl/content/images/2023/09/image-2.png 2040w" sizes="(min-width: 720px) 720px"></figure>]]></description><link>https://blog.freshlytyped.nl/some-home-automation/</link><guid isPermaLink="false">6510807b2993d507a993b1cf</guid><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Sun, 24 Sep 2023 18:34:11 GMT</pubDate><content:encoded><![CDATA[<p>These are just some screenshots from my Home Assistant and <a href="https://github.com/jomjol/AI-on-the-edge-device/?ref=blog.freshlytyped.nl#ai-on-the-edge-device-on-a-water-meter">AI-on-the-edge</a>:</p><figure class="kg-card kg-image-card"><img src="https://blog.freshlytyped.nl/content/images/2023/09/image-4.png" class="kg-image" alt loading="lazy" width="2000" height="829" srcset="https://blog.freshlytyped.nl/content/images/size/w600/2023/09/image-4.png 600w, https://blog.freshlytyped.nl/content/images/size/w1000/2023/09/image-4.png 1000w, https://blog.freshlytyped.nl/content/images/size/w1600/2023/09/image-4.png 1600w, https://blog.freshlytyped.nl/content/images/2023/09/image-4.png 2000w" sizes="(min-width: 720px) 720px"></figure><figure class="kg-card kg-image-card"><img src="https://blog.freshlytyped.nl/content/images/2023/09/image-3.png" class="kg-image" alt loading="lazy" width="2000" height="2196" srcset="https://blog.freshlytyped.nl/content/images/size/w600/2023/09/image-3.png 600w, https://blog.freshlytyped.nl/content/images/size/w1000/2023/09/image-3.png 1000w, https://blog.freshlytyped.nl/content/images/size/w1600/2023/09/image-3.png 1600w, https://blog.freshlytyped.nl/content/images/2023/09/image-3.png 2000w" sizes="(min-width: 720px) 720px"></figure><p>The landing screen of the AI on the edge is really sweet, as well as the whole app :)</p><figure class="kg-card kg-image-card"><img src="https://blog.freshlytyped.nl/content/images/2023/09/image-2.png" class="kg-image" alt loading="lazy" width="2000" height="1512" srcset="https://blog.freshlytyped.nl/content/images/size/w600/2023/09/image-2.png 600w, https://blog.freshlytyped.nl/content/images/size/w1000/2023/09/image-2.png 1000w, https://blog.freshlytyped.nl/content/images/size/w1600/2023/09/image-2.png 1600w, https://blog.freshlytyped.nl/content/images/2023/09/image-2.png 2040w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[VirtualBox on Mac cannot access USB]]></title><description><![CDATA[<p>This is a bit of an odd thing because it should &quot;just work&quot; out of the box, but you need to run <code>sudo virtualbox</code> if you want priviledged access to the USB ports (ie claiming them for the guest OS).</p><p>This allows nice things like updating Magic-X USB</p>]]></description><link>https://blog.freshlytyped.nl/virtualbox-on-mac-cannot-access-usb/</link><guid isPermaLink="false">64229017762276065635c321</guid><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Tue, 28 Mar 2023 07:00:17 GMT</pubDate><content:encoded><![CDATA[<p>This is a bit of an odd thing because it should &quot;just work&quot; out of the box, but you need to run <code>sudo virtualbox</code> if you want priviledged access to the USB ports (ie claiming them for the guest OS).</p><p>This allows nice things like updating Magic-X USB dongle (they only have Windows updater) on Mac.</p>]]></content:encoded></item><item><title><![CDATA[allow.me]]></title><description><![CDATA[<p>Lately I&apos;ve had a very practical problem - I never have enough coins for my kid&apos;s allowance. It&apos;s really more of a digital-era thing, who has pocket change these days anyways? I am talking exact small amounts, like 50ct.</p><h1 id="see-it-in-action">See it in action :)</h1><p>I</p>]]></description><link>https://blog.freshlytyped.nl/allow-me/</link><guid isPermaLink="false">60f4804f4c3a4f2b64439d46</guid><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Mon, 19 Jul 2021 19:40:28 GMT</pubDate><content:encoded><![CDATA[<p>Lately I&apos;ve had a very practical problem - I never have enough coins for my kid&apos;s allowance. It&apos;s really more of a digital-era thing, who has pocket change these days anyways? I am talking exact small amounts, like 50ct.</p><h1 id="see-it-in-action">See it in action :)</h1><p>I was still aiming to have a sort-of physical way of giving the allowance, so all the kids do these days is on Monday they tap my phone with their personal coin, which opens a website where I can send them the allowance on their account. There is still the element of giving the allowance, just not the hassle of having to have small change lying around ;)</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/IxyLUjfPzHY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h1 id="how">How?</h1><p>As I wanted a technical solution to this, I have created a 3 things:</p><ol><li>bank account for my kids</li><li>an NFC token with a unique URL programmed in it. This points to a tikkie.me website that links to the bank account number</li><li>3D printed coin that has their profile on a side and has the NFC embedded</li></ol><h1 id="get-yours">Get yours!</h1><p></p><!--kg-card-begin: html--><div id="my-store-22276242"></div>
<div><script data-cfasync="false" type="text/javascript" src="https://app.ecwid.com/script.js?22276242&amp;data_platform=code&amp;data_date=2021-07-20" charset="utf-8"></script>
<script type="text/javascript"> 
window.ec=window.ec||{}; 
window.ec.storefront=window.ec.storefront||{}; 
window.ec.storefront.enable_navigation=true;
window.ec.storefront.product_details_layout="TWO_COLUMNS_SIDEBAR_ON_THE_RIGHT";
window.ec.storefront.product_details_gallery_layout="SINGLE_IMAGE";
window.ec.storefront.product_details_two_columns_with_right_sidebar_show_product_description_on_sidebar=true;
window.ec.storefront.product_details_two_columns_with_left_sidebar_show_product_description_on_sidebar=false;
window.ec.storefront.product_details_show_product_name=true;
window.ec.storefront.product_details_show_breadcrumbs=false;
window.ec.storefront.product_details_show_product_sku=false;
window.ec.storefront.product_details_show_product_price=true;
window.ec.storefront.product_details_show_in_stock_label=false;
window.ec.storefront.product_details_show_number_of_items_in_stock=false;
window.ec.storefront.product_details_show_qty=false;
window.ec.storefront.product_details_show_wholesale_prices=true;
window.ec.storefront.product_details_show_product_options=true;
window.ec.storefront.product_details_show_product_description=true;
window.ec.storefront.product_details_show_share_buttons=false;
window.ec.storefront.product_details_position_product_name=200;
window.ec.storefront.product_details_position_breadcrumbs=100;
window.ec.storefront.product_details_position_product_sku=300;
window.ec.storefront.product_details_position_product_price=400;
window.ec.storefront.product_details_position_product_options=undefined;
window.ec.storefront.product_details_position_buy_button=600;
window.ec.storefront.product_details_position_wholesale_prices=700;
window.ec.storefront.product_details_position_product_description=800;
window.ec.storefront.product_details_position_share_buttons=900;
window.ec.storefront.product_details_position_subtitle=500;
window.ec.storefront.product_details_show_subtitle=true;
xProductBrowser("categoriesPerRow=3","views=grid(20,3) list(60) table(60)","categoryView=grid","searchView=list","defaultProductId=166055873","id=my-store-22276242");
</script>
</div><!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Simple Android Stock Widget]]></title><description><![CDATA[<p>I was fed up with all the &quot;free stock widgets&quot; for Android that either were over-complicated, stopped working after a while or just looked plain ugly...</p><p>Well, with <a href="https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&amp;hl=en&amp;ref=blog.freshlytyped.nl">Tasker</a>, <a href="https://play.google.com/store/apps/details?id=de.devmil.minimaltext&amp;hl=en&amp;ref=blog.freshlytyped.nl">Minimalistic Text</a> and an account on <a href="https://iexcloud.io/?ref=blog.freshlytyped.nl">IEXcloud.io</a> you can make your own and style it any way you</p>]]></description><link>https://blog.freshlytyped.nl/simple-android-stock-widget/</link><guid isPermaLink="false">5ea4b14f6499e051a0477116</guid><category><![CDATA[tech]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Tue, 26 May 2020 14:19:52 GMT</pubDate><content:encoded><![CDATA[<p>I was fed up with all the &quot;free stock widgets&quot; for Android that either were over-complicated, stopped working after a while or just looked plain ugly...</p><p>Well, with <a href="https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&amp;hl=en&amp;ref=blog.freshlytyped.nl">Tasker</a>, <a href="https://play.google.com/store/apps/details?id=de.devmil.minimaltext&amp;hl=en&amp;ref=blog.freshlytyped.nl">Minimalistic Text</a> and an account on <a href="https://iexcloud.io/?ref=blog.freshlytyped.nl">IEXcloud.io</a> you can make your own and style it any way you want... This is something I got created in about an hour:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.freshlytyped.nl/content/images/2020/04/image-2.png" class="kg-image" alt loading="lazy"><figcaption>Resulting widget</figcaption></figure><h2 id="how-to">How to</h2><ol><li>Register for an <a href="https://iexcloud.io/?ref=blog.freshlytyped.nl">iexcloud.io</a> free account. In the top of the page, use <strong>search for a stock symbol</strong> (like <code>NASDAQ:TEAM</code>). This will get the URL like <a href="https://sandbox.iexapis.com/stable/stock/TEAM/quote?token=Tpk_b3d1b53c30474ea2856e1cddb47d9ae2&amp;ref=blog.freshlytyped.nl" rel="noreferrer">https://sandbox.iexapis.com/stable/stock/TEAM/quote?token=&lt;&lt;token&gt;&gt;</a><br>&#x26A1;Make sure you use one for <code>production</code>, not the sandbox as shown above! &#x26A1;</li><li>Install both <a href="https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm&amp;hl=en&amp;ref=blog.freshlytyped.nl">Tasker</a> and <a href="https://play.google.com/store/apps/details?id=de.devmil.minimaltext&amp;hl=en&amp;ref=blog.freshlytyped.nl">Minimalistic Text</a> on your Android</li></ol><h2 id="configuration">Configuration</h2><p>Create a widget in Minimalistic Text that would be your &quot;stock widget&quot;. Use &quot;Locale variables&quot; as shown below. The names used in Tasker script are <code>up</code>, <code>down</code>, <code>change</code>.</p><figure class="kg-card kg-gallery-card kg-width-wide"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.freshlytyped.nl/content/images/2020/05/Pasted_Image_5_26_20__4_09_PM.png" width="1080" height="974" loading="lazy" alt srcset="https://blog.freshlytyped.nl/content/images/size/w600/2020/05/Pasted_Image_5_26_20__4_09_PM.png 600w, https://blog.freshlytyped.nl/content/images/size/w1000/2020/05/Pasted_Image_5_26_20__4_09_PM.png 1000w, https://blog.freshlytyped.nl/content/images/2020/05/Pasted_Image_5_26_20__4_09_PM.png 1080w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.freshlytyped.nl/content/images/2020/05/Pasted_Image_5_26_20__4_10_PM-1.png" width="1080" height="849" loading="lazy" alt srcset="https://blog.freshlytyped.nl/content/images/size/w600/2020/05/Pasted_Image_5_26_20__4_10_PM-1.png 600w, https://blog.freshlytyped.nl/content/images/size/w1000/2020/05/Pasted_Image_5_26_20__4_10_PM-1.png 1000w, https://blog.freshlytyped.nl/content/images/2020/05/Pasted_Image_5_26_20__4_10_PM-1.png 1080w" sizes="(min-width: 720px) 720px"></div></div></div></figure><p>Finally create a Tasker config which will refresh the quote every 10 minutes on the working days and update the shared variables between widget and Tasker:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.freshlytyped.nl/content/images/2020/05/image.png" class="kg-image" alt loading="lazy"><figcaption>Tasker profile</figcaption></figure><p>Use the following <a href="https://drive.google.com/uc?id=1nxhV7hh_4joXoXh6xi_CRlkLYFfQkYZM&amp;export=download&amp;ref=blog.freshlytyped.nl">Tasker script</a> as the <code>Fetch Quote</code> task.</p><h1 id="profit">Profit</h1><p>The widget is a bit barebone &#x2013; give it some nice colors, shadows, background etc. Nice thing to do is to configure <code>Single Tap</code> action to trigger the <code>Fetch Quote</code> Tasker task &#x2013; the widget just refreshes itself if you tap on it. Ain&apos;t it nice?</p>]]></content:encoded></item><item><title><![CDATA[Kids love Particle Photon and Blynk]]></title><description><![CDATA[<p>I&apos;ve been looking for a tech project I could do with my kids (6 and 4 years old).</p><p>Firstly, because I think you cannot start with tech too soon. Secondly, because we all gotta sit at home #corona :)</p><h1 id="result">Result</h1><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/g9Dgrh4K8zY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h2 id="what-will-you-need">What will you need</h2><ul><li><a href="https://www.particle.io/?ref=blog.freshlytyped.nl">Particle Photon/Electron/Argon</a> or</li></ul>]]></description><link>https://blog.freshlytyped.nl/kids-love-particle-photon-and-blynk/</link><guid isPermaLink="false">5e9a03576499e051a0477071</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Sun, 26 Apr 2020 10:58:56 GMT</pubDate><content:encoded><![CDATA[<p>I&apos;ve been looking for a tech project I could do with my kids (6 and 4 years old).</p><p>Firstly, because I think you cannot start with tech too soon. Secondly, because we all gotta sit at home #corona :)</p><h1 id="result">Result</h1><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/g9Dgrh4K8zY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h2 id="what-will-you-need">What will you need</h2><ul><li><a href="https://www.particle.io/?ref=blog.freshlytyped.nl">Particle Photon/Electron/Argon</a> or <a href="https://nl.aliexpress.com/item/4000340140634.html?spm=a2g0s.9042311.0.0.1cde4c4dPj6v6l&amp;ref=blog.freshlytyped.nl">ESP32</a> or an <a href="https://store.arduino.cc/arduino-genuino/most-popular?ref=blog.freshlytyped.nl">Arduino</a> (untested)</li><li>LED</li><li>pull-up resistor</li><li>breadboard (optional)</li><li>some cables/<a href="https://nl.aliexpress.com/item/33044612506.html?spm=a2g0s.9042311.0.0.1cde4c4dPj6v6l&amp;ref=blog.freshlytyped.nl">jumper wires</a></li></ul><h2 id="blynk-io">Blynk.io</h2><p><a href="https://blynk.io/?ref=blog.freshlytyped.nl">Blynk.io</a> is a great playground for IoT - the app works on a phone (which is always a kid magnet anyway :). In the app you can add all kinds of widgets and connect them with your IoT device. All the interaction (reading or writing values) is a matter of seconds and drag and drop.</p><figure class="kg-card kg-image-card"><img src="https://blog.freshlytyped.nl/content/images/2020/04/image-1.png" class="kg-image" alt loading="lazy"></figure><p>This is how the app I&apos;ve created with my kids look like.</p><p>It has ZeRGBA widget on pin V1 (it allows to control the RGB LED of Particle Electron) and if you slide on the widget, it sends R, G, B values to V1.</p><p>I have also put a slider connected to pin V2 which controls how &quot;fast&quot; the other LED blinks. I&apos;ve set it to work from value 5 to 2000 (milliseconds).</p><h2 id="code">Code</h2><p>The code is actually very simple - if you use Particle this should just work:</p><p></p><!--kg-card-begin: markdown--><pre><code class="language-clike">#include &quot;Blynk.h&quot;

char auth[] = &quot;your code here&quot;;
int led1 = D6;
int del = 500;

/* Triggered by ZeRGBA widget and will set incoming R,G,B values to the RGB LED */
BLYNK_WRITE(V1)
{
  int r = param[0].asInt();
  int g = param[1].asInt();
  int b = param[2].asInt();

  RGB.color(r, g, b);
}


/* Triggered by the slider widget and will just set the delay between blinks */
BLYNK_WRITE(V2)
{
  del = param.asInt();
}

/* runs only once */
void setup() {

  // Setup the Blynk.io library
  Blynk.begin(auth);
  
  // Manual control of the RGB led for Particle
  RGB.control(true);
  
  // Setup the PIN where the LED is connected mode to WRITE 
  pinMode(led1, OUTPUT);
}

/* runs continously in a loop, as fast as possible */
void loop() {

  // Process Blynk messages
  Blynk.run();

  // turn on the LED
  digitalWrite(led1, HIGH);

  // we&apos;ll leave it on for given delay in millis
  delay(del);

  // then we&apos;ll turn the LED off
  digitalWrite(led1, LOW);

  // wait again with the LED off
  delay(del);
}
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Backup to Microsoft OneDrive with Synology’s Hyper Backup]]></title><description><![CDATA[<p>Credits go to <a href="https://rays-blog.de/2019/07/17/310/backup-to-microsoft-onedrive-with-synologys-hyper-backup/?ref=blog.freshlytyped.nl">https://rays-blog.de/2019/07/17/310/backup-to-microsoft-onedrive-with-synologys-hyper-backup/</a> as I&apos;ve copied most of it :).</p><h2 id="install-a-proxy-docker-image-on-synology">Install a proxy Docker image on Synology</h2><p>Run the <a href="https://hub.docker.com/r/skleeschulte/basic-to-passport-auth-http-proxy?ref=blog.freshlytyped.nl">basic-to-passport-auth-http-proxy</a> Docker image and configure a WebDAV backup destination in Hyper Backup.</p><p>Just install the above Docker image (search for <code>skleeschulte</code> in</p>]]></description><link>https://blog.freshlytyped.nl/backup-to-microsoft-onedrive-with-synologys-hyper-backup/</link><guid isPermaLink="false">5e7c66b4a944ba5c1f33e0c6</guid><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Thu, 26 Mar 2020 08:32:57 GMT</pubDate><content:encoded><![CDATA[<p>Credits go to <a href="https://rays-blog.de/2019/07/17/310/backup-to-microsoft-onedrive-with-synologys-hyper-backup/?ref=blog.freshlytyped.nl">https://rays-blog.de/2019/07/17/310/backup-to-microsoft-onedrive-with-synologys-hyper-backup/</a> as I&apos;ve copied most of it :).</p><h2 id="install-a-proxy-docker-image-on-synology">Install a proxy Docker image on Synology</h2><p>Run the <a href="https://hub.docker.com/r/skleeschulte/basic-to-passport-auth-http-proxy?ref=blog.freshlytyped.nl">basic-to-passport-auth-http-proxy</a> Docker image and configure a WebDAV backup destination in Hyper Backup.</p><p>Just install the above Docker image (search for <code>skleeschulte</code> in the Docker browser in Synology):</p><ol><li>Configure the local port (I&apos;ve used :3001)</li><li>Add a variable named <code>PROXY_TARGET</code> with the value <code>https://d.docs.live.net/</code></li><li>Start the container and check logs (it should be running just fine)</li></ol><h2 id="configure-hyperbackup">Configure HyperBackup</h2><ol><li>Get your OneDrive CID: navigate to <a href="https://www.onedrive.com/?ref=blog.freshlytyped.nl">https://www.onedrive.com/</a> and log in to OneDrive. When the browser has finished loading the OneDrive interface, the address bar should show something like <code>https://onedrive.live.com/?id=root&amp;cid=ABCDEFG123456789</code>. <code>ABCDEFG123456789</code> is your CID</li><li>Create <a href="https://support.microsoft.com/en-us/help/12409/microsoft-account-app-passwords-and-two-step-verification?ref=blog.freshlytyped.nl">an application password</a> in your Microsoft account. This would be a your password to use with your CID</li><li>Create a new WebDav task in HyperBackup:<br>a) Server address: <code>localhost:3000/ONEDRIVE_CID</code><br>b) Username: your OneDrive username (= email address)<br>c) Password: your OneDrive application password<br>d) Select proper folder and finish the backup task</li><li>Profit</li></ol>]]></content:encoded></item><item><title><![CDATA[Migrate data from Amazon CloudDrive to OneDrive. Without reupload]]></title><description><![CDATA[<p>I had to migrate from Amazon CloudDrive to another cloud storage provider. I don&apos;t even know why I signed up for Amazon back then... I have had ~600 GB there so I did not want to re-upload all the data on my home connection (20 MBps).</p><h2 id="use-odrive-to-link-your-cloud-accounts">Use <u>odrive</u></h2>]]></description><link>https://blog.freshlytyped.nl/migrate-data-between-cloud-providers/</link><guid isPermaLink="false">5e7b1361a944ba5c1f33e07b</guid><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Wed, 25 Mar 2020 08:47:02 GMT</pubDate><content:encoded><![CDATA[<p>I had to migrate from Amazon CloudDrive to another cloud storage provider. I don&apos;t even know why I signed up for Amazon back then... I have had ~600 GB there so I did not want to re-upload all the data on my home connection (20 MBps).</p><h2 id="use-odrive-to-link-your-cloud-accounts">Use <u>odrive</u> to link your Cloud accounts</h2><p>I have discovered <a href="https://www.odrive.com/?ref=blog.freshlytyped.nl">https://www.odrive.com/</a> which allows to link multiple Cloud storage providers in a single app, and it allows on-demand download of whatever needed.</p><p>I&apos;ve done this locally on my Mac to ensure things are setup. You get 7 day free trial to allow some nice features like <code>Unsync</code> of unused cloud data.</p><h3 id="connect-your-cloud-accounts">Connect your cloud accounts</h3><p>I&apos;ve connected both my OneDrive and Amazon CloudDrive in odrive.</p><h2 id="spin-up-an-instance-on-microsoft-azure">Spin up an instance on Microsoft Azure</h2><p>This is the most &quot;tricky&quot; part - you register on Microsoft Azure and you get 170e worth of credit towards their services for first 30 days.</p><h3 id="create-a-windows-server-b2-virtual-machine">Create a Windows Server B2 virtual machine</h3><p>I went with a larger B2 Windows Server and created it with 512 GB SSD for storage. This counts towards your 170e credits.</p><p>Once the instance is setup, you can download an RDP file and connect to it using Microsoft Remote Desktop.</p><h3 id="setup-odrive-on-your-azure-instance">Setup odrive on your Azure instance</h3><p>Install odrive on your Azure instance and you should see your linked cloud accounts. Yay!</p><p>Make sure that your <code>odrive</code> folder is stored on the large 512 GB SSD (you can do it by right clicking the odrive icon in status bar).</p><h3 id="start-downloading-uploading-your-folders">Start downloading/uploading your folders</h3><p>Choose folders you want to download. Make sure you have 2x the storage available as you:</p><ol><li>first download them from Amazon CloudDrive. To do that, right click on a folder in odrive folder, check <code>Sync</code> and move the slider to the very right, and click the large Sync button (<a href="https://forum.odrive.com/t/how-do-i-move-or-migrate-files-from-one-storage-provider-to-another/106/2?ref=blog.freshlytyped.nl">https://forum.odrive.com/t/how-do-i-move-or-migrate-files-from-one-storage-provider-to-another/106/2</a>)</li><li>then just wait (you can close the RDP session, copying will be going on)</li><li>once downloaded (reasonable fast) you just copy the folder to OneDrive folder. That&apos;s why you need 2x the amount of storage.</li><li>this will automatically upload the data using Azure&apos;s bandwidth (counting towards your credits)</li><li>once done, make sure you right click on both OneDrive and Amazon CloudDrive copied folders and select <code>Unsync</code> to free up the space on Azure instance</li><li>continue with more folders</li><li>make sure you <strong>delete all your Azure resources </strong>(VM, storage etc) once you are done</li></ol><h1 id="result">Result</h1><p>I&apos;ve migrated 600 GB worth of data in ~4 days without using any of my internet connection at home &#x1F44C;&#x1F3FB;</p><p>The total cost to transfer the data (you pay per GB) and the storage + VM to do the 600 GB was around 55e, all counting towards the 175e credits which is valid for the first 30 days. So in the end it did not cost me anything.</p>]]></content:encoded></item><item><title><![CDATA[Alexa, tell Chromecast to turn on TV]]></title><description><![CDATA[<p>Connecting Alexa to Chromecast (Google Home)? Yeah, you can do that! And best of all, for free - using Custom Alexa Skill, AWS Lambda, PubNub and running a small backend server on Synology at home, talking to your Chromecast. No need to punch holes through your firewall either!</p><h2 id="1-setup-google-assistant-rest-interface">1. Setup</h2>]]></description><link>https://blog.freshlytyped.nl/alexa-tell-chromecast-to-turn-on-tv/</link><guid isPermaLink="false">5cd7fbb134932e3c9acc1247</guid><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Thu, 16 May 2019 20:15:19 GMT</pubDate><content:encoded><![CDATA[<p>Connecting Alexa to Chromecast (Google Home)? Yeah, you can do that! And best of all, for free - using Custom Alexa Skill, AWS Lambda, PubNub and running a small backend server on Synology at home, talking to your Chromecast. No need to punch holes through your firewall either!</p><h2 id="1-setup-google-assistant-rest-interface">1. Setup Google Assistant REST interface</h2><p>Well there is no official one. But, you can use <a href="https://github.com/greghesp/assistant-relay?ref=blog.freshlytyped.nl">https://github.com/greghesp/assistant-relay</a> to actually setup a relay server which will be exposed as a small Express App. It requires you to setup a Custom Google Assistant Skill, which is all very well documented in the repo.</p><p>Once done, you should be able to hit the assistant-relay REST interface with a simple command such as &quot;turn off tv&quot;. </p><h3 id="bonus-run-on-synology-as-a-docker-container">Bonus: run on Synology as a Docker container</h3><p>I could not get the Node repo running on my Synology due to compilation issues with Protobuf, but luckily there is a great Docker image <a href="https://hub.docker.com/r/kmlucy/docker-assistant-relay/?ref=blog.freshlytyped.nl">https://hub.docker.com/r/kmlucy/docker-assistant-relay/</a> which you can run locally with complete isolation from your system&apos;s Node. You will however need the JSON credential file and configs from the previous step.</p><h2 id="2-setup-custom-alexa-skill">2. Setup custom Alexa Skill</h2><p>You&apos;d need AWS Developer account to create a custom Alexa skill (register at <a href="https://developer.amazon.com/?ref=blog.freshlytyped.nl">https://developer.amazon.com</a>). Choose an easy utterance, like &quot;Alexa, tell TV to turn on&quot;. This will be the command that will trigger your AWS Lambda function.</p><h2 id="3-register-at-pubnub">3. Register at PubNub</h2><p>We will be using <a href="https://www.pubnub.com/?ref=blog.freshlytyped.nl">PubNub</a> to communicate between our Lambda function and backend server. Register for a free account, generate a publisher and subscriber key and note them.</p><h2 id="4-add-the-aws-lambda-function">4. Add the AWS Lambda function</h2><p>When you configure the Alexa skill, you will be asked for a Lambda function to trigger. Choose region close to you, like Ireland if you are in Europe. Also, AWS Lambda is part of free tier for certain number of executions, so no costs there :)</p><p>Check the source code at <a href="https://bitbucket.org/freshlytyped/tvcontrol/src/master/?ref=blog.freshlytyped.nl">https://bitbucket.org/freshlytyped/tvcontrol</a> and build it locally before uploading to AWS. Use the publisher/subscriber key as variables for your function.</p><h2 id="5-configure-your-backend-server">5. Configure your backend server</h2><p>Because Lambda runs in AWS, it has no way of reaching your locally running Assistant-Relay. In order to do that, you will be running a small Node app subscribed to the same channel as your Lambda function and listening for commands on your local network. I&apos;m running it on my Synology box, but you can run it on Raspberry Pi or wherever, as long as it can reach the host running Assistant-Relay.</p><p>Again, check the source code at <a href="https://bitbucket.org/freshlytyped/tvcontrol/src/master/?ref=blog.freshlytyped.nl">https://bitbucket.org/freshlytyped/tvcontrol</a> on how to run the backend app, probably using <code>forever</code>.</p><h1 id="test-it">Test it</h1><p>It should all work, but I admit, this write up is slightly technical... You can add log statements if you get lost and wanna debug.</p>]]></content:encoded></item><item><title><![CDATA[Headless CMS comparison]]></title><description><![CDATA[<p>For a hobby project of mine, I was thinking of using Ghost to host the content and generate the layout etc. However, no matter how great Ghost is, it is very blog-focused and trying to fit a square peg in a round hole is not my thing.</p><p>So I&apos;</p>]]></description><link>https://blog.freshlytyped.nl/headless-cms-comparison/</link><guid isPermaLink="false">5caef1b634932e3c9acc1219</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Thu, 11 Apr 2019 08:37:21 GMT</pubDate><content:encoded><![CDATA[<p>For a hobby project of mine, I was thinking of using Ghost to host the content and generate the layout etc. However, no matter how great Ghost is, it is very blog-focused and trying to fit a square peg in a round hole is not my thing.</p><p>So I&apos;ve stumbled upon Headless CMS which apparently is a hot thing these days... See <a href="https://www.linkedin.com/pulse/top-17-headless-cms-platforms-available-2018-review-varghese/?ref=blog.freshlytyped.nl">https://www.linkedin.com/pulse/top-17-headless-cms-platforms-available-2018-review-varghese/</a></p><p>I like the idea of having the content clearly defined in a queryable API, preferably GraphQL or some industry standard. Then I can just have a thin frontend/static app which fetches the data (and I can learn some React while doing that haha).</p><h2 id="what-i-need">What I need</h2><ol><li>Adding of different content types and uploading of the assets</li><li>Preferably, resizing of the images</li><li>At least 500 (but rather more) entries</li><li>Some way of importing my own data</li><li>GraphQL or something that does not hurt to use and is <strong>not a lock in</strong></li><li>Optionally: useful examples to build the frontend (React)</li><li>Optionally: self-hosted</li><li>Optionally: no PHP</li></ol><!--kg-card-begin: html--><iframe class="airtable-embed" src="https://airtable.com/embed/shr7GTjxnMBMgVNhY?backgroundColor=purple" frameborder="0" onmousewheel width="100%" height="833" style="background: transparent; border: 1px solid #ccc;"></iframe><!--kg-card-end: html--><h1 id="winner">Winner?</h1><p>For a while I thought Prismic was the way but their GraphQL is only in beta and doesn&apos;t support mutations. </p><p>Then I&apos;ve tried Strapi which is self hosted but unfortunately I find it really buggy at the moment. Sometimes regeneration of the model fails because you&apos;ve used <code>type</code> as name of your model&apos;s field (and it&apos;s also reserved SQL keyword), or the UI does have some quirks. It&apos;s a lively open source project so it may be a good alternative if it matures.</p><p>After trying CosmicJS I liked their approach but I don&apos;t wanna put their badge on my site (which means you cannot use their &apos;community&apos; tier).</p><p>Squidex had a good mix of open source and hosted option, but it looks like it&apos;s a single contributor project so if the dev gets tied up in something, dev work can get stalled. </p><p>And now I&apos;m back at where I&apos;ve started in the first place - with GraphCMS. Their GraphQL support is superb, they seem to have a good set of features and the only thing I&apos;m missing ATM are the webhooks (and more content slots). But other than that, I&apos;m almost deciding on it. The UI is a bit quesy.</p><p>My second in line would be Contentful if they&apos;ve had GraphQL in their free tier.</p><h1></h1>]]></content:encoded></item><item><title><![CDATA[Collaborative slideshow and Spotify for your party]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>During one of my recent events (my wedding, actually) I wanted to do some fancy techie stuff.</p>
<p>First to my mind came simple live slideshow - we&apos;ve had a beamer at the location so I wanted to show the photos people take during the event immediately on the</p>]]></description><link>https://blog.freshlytyped.nl/collaborative-slideshow-and-spotify-for-your-party/</link><guid isPermaLink="false">5ab167114c1f5b347cc461ac</guid><category><![CDATA[automation]]></category><category><![CDATA[party]]></category><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Thu, 21 May 2015 18:05:05 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>During one of my recent events (my wedding, actually) I wanted to do some fancy techie stuff.</p>
<p>First to my mind came simple live slideshow - we&apos;ve had a beamer at the location so I wanted to show the photos people take during the event immediately on the big screen. Well, almost immediately - I&apos;ll accept 1-2 minutes of delay.</p>
<p>Second thing was having some kind of live fair collaborative playlist where guests can add tracks directly from their phone.</p>
<h2 id="collaborativeliveslideshow">Collaborative live slideshow</h2>
<p>I didn&apos;t want to ask the guests to install any kind of app to send the picture to the beamer. But hey - everyone can send an email with a photo from their phone. Nice and simple.</p>
<p>So, two problems - get the photos from the email and synchronize it somehow with my Macbook Air running live slideshow. Oh,  and have a software which runs the slideshow and watches certain folder for modification.</p>
<h4 id="creatededicatedgmailaccount">Create dedicated Gmail account</h4>
<p>... Or use an existing one. You will need to have <a href="https://www.google.com/drive/?ref=blog.freshlytyped.nl">Google Drive</a> desktop app installed on your desktop which will sync the photos.</p>
<h4 id="extractphotosfromemailtogoogledrive">Extract photos from email to Google Drive</h4>
<p>Simple and free solution: <a href="http://www.labnol.org/internet/send-gmail-to-google-drive/21236/?ref=blog.freshlytyped.nl">Google Sheets script</a>! It&apos;s faster than ITTT or Zappier. And cheaper. It runs every 5 mins but you can modify the script to run more frequent.</p>
<p>Copy the sheet to Google account created in the previous step. Open it and follow the instructions (basically, authorize it and run it). Photos will be uploaded to the folder configured in the sheet.</p>
<h4 id="liveslideshowapp">Live slideshow app</h4>
<p>For all environments (Mac, Win, Linux) you can use <a href="http://www.partytools.net/photolive/index_e.php?ref=blog.freshlytyped.nl">Photolive</a> (Adobe Air application). Works like a charm. Point it to the Google Drive folder which you configured in the Google sheet.</p>
<h2 id="partycollaborativeplaylistwithspotify">Party collaborative playlist with Spotify</h2>
<p>Instead of having a DJ why not giving possibility for anyone to add or upvote a song in a playlist queue. Luckily,  there&apos;s an app for that - <a href="http://festify.us/?ref=blog.freshlytyped.nl">Festify.us</a> (Mac and Win).</p>
<p>All is neat and simple - download it, login with your Spotify account (I&apos;ve created a temporary premium account for 30 days for free).</p>
<p>In Festify, you should create a new party and specify a backing playlist (make it rather long) so if nobody is adding songs, music still plays.</p>
<p>Your clients should use the url/QR generated by Festify from their mobile and search/add/upvote songs.</p>
<h2 id="lasttips">Last tips</h2>
<p>Some battle tested notes:</p>
<ul>
<li>Make a test run, preferably at the venue - check wifi speed, if you can reliably stream from Spotify etc</li>
<li>Use service like <a href="https://tr.im/?ref=blog.freshlytyped.nl">tr.im</a> to make short url for the playlist so you can change it in case something doesn&apos;t work</li>
<li>Printout small notes got guests with wifi password, email where to send photos and link to the playlist</li>
<li>Enjoy!</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Shareport + Squeezbox + Synology]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>I was tinkering a bit with my Synology DS213 and the Squeezebox server (Logitech Media Server). Aparently, you can use this great <a href="https://github.com/StuartUSA/shairport_plugin?ref=blog.freshlytyped.nl">plugin</a> to make every Squeeze player available as AirPlay destination.</p>
<p>What happens then is that you can play music from your Mac/iOS through LMS using AirPlay (that</p>]]></description><link>https://blog.freshlytyped.nl/shareport-squeezbox-synology/</link><guid isPermaLink="false">5ab167114c1f5b347cc461ab</guid><category><![CDATA[tech]]></category><category><![CDATA[nas]]></category><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Sat, 10 Jan 2015 13:00:54 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>I was tinkering a bit with my Synology DS213 and the Squeezebox server (Logitech Media Server). Aparently, you can use this great <a href="https://github.com/StuartUSA/shairport_plugin?ref=blog.freshlytyped.nl">plugin</a> to make every Squeeze player available as AirPlay destination.</p>
<p>What happens then is that you can play music from your Mac/iOS through LMS using AirPlay (that is, WiFi)</p>
<p>My Synology NAS is running LMS, so I only had to build the Shairport plugin with it&apos;s helper app. Here&apos;s what I did.</p>
<h3 id="steps">Steps</h3>
<ol>
<li>
<p>Install Logitech Media server (if you already don&apos;t have it)</p>
</li>
<li>
<p>Make sure you have either <code>git</code> installed (through <a href="https://synocommunity.com/?ref=blog.freshlytyped.nl">https://synocommunity.com/</a> or Optware). Alternatively, checkout the source on your desktop and push it to NAS</p>
</li>
<li>
<p>SSH to your Synology, and perform:</p>
<pre><code> cd ~; mkdir tmp; cd tmp; git clone https://github.com/njh/perl-net-sdp.git perl-net-sdp
 cd perl-net-sdp
 perl Build.PL
 sudo ./Build
 sudo ./Build test
 sudo ./Build install
</code></pre>
</li>
</ol>
<p>You should not see any errors above. If you get</p>
<pre><code>	make: *** No rule to make target `/usr/lib/perl5/core_perl/CORE/config.h&apos;, needed by `Makefile&apos;. Stop
</code></pre>
<p>you can try this as Perl installation of Synology misses some header files: <code>touch /usr/lib/perl5/core_perl/CORE/config.h</code>.</p>
<ol>
<li>
<p>In LMS -&gt; Plugins, add new plugin repository: <a href="http://raw.github.com/StuartUSA/shairport_plugin/master/public.xml?ref=blog.freshlytyped.nl">http://raw.github.com/StuartUSA/shairport_plugin/master/public.xml</a> and enable the plugin</p>
</li>
<li>
<p>Once the plugin is downloaded and installed, there is a folder in <code>volume1/@appstore/SqueezeCenter/Cache/InstalledPlugins/Plugins/ShairTunes/</code> with precompiled Shairplay helpers. Pick the one with right achitecture and place it somewhere in your path (<code>/usr/local/bin</code> should work fine). I&apos;ve used the statically linked version.<br>
<strong>make sure you rename the file to <code>shairport_helper</code></strong></p>
</li>
<li>
<p>Install <code>avahi-utils</code> from Optware and change the <code>/opt/etc/avahi/avahi-daemon.conf</code> as instructed on the plugin page:</p>
<pre><code> [server]
 use-ipv4=yes
 use-ipv6=no  #if you have ios7 devices change to yes

 [wide-area]
 enable-wide-area=yes

 [publish]
 publish-aaaa-on-ipv4=no
 publish-a-on-ipv6=no

 [reflector]

 [rlimits]
 rlimit-core=0
 rlimit-data=4194304
 rlimit-fsize=0
 rlimit-nofile=300
 rlimit-stack=4194304
 rlimit-nproc=3
</code></pre>
</li>
<li>
<p>Restart avahi-daemon and LMS to apply all settings.</p>
</li>
</ol>
<h3 id="results">Results</h3>
<p>It works. However, I&apos;m little bit disappointed in the lag when switching the songs in Spotify/iTunes. I haven&apos;t found a fix for that yet. As for now, I&apos;m not using it. But I thought this writeup might be useful if you are interested in playing with it.</p>
<h3 id="usefullinks">Useful links</h3>
<p><a href="https://github.com/StuartUSA/shairport_plugin?ref=blog.freshlytyped.nl">https://github.com/StuartUSA/shairport_plugin</a><br>
<a href="http://blog.elsdoerfer.name/2011/05/15/shairport-on-synology-nas/?ref=blog.freshlytyped.nl">http://blog.elsdoerfer.name/2011/05/15/shairport-on-synology-nas/</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Nexus 9 and Android 5.0]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>I couldn&apos;t resist getting a new tablet. My old Nexus 7 2012 was getting so laggy I couldn&apos;t stand it. With the new Nexus 9 available I thought - why not.</p>
<p>I have it now for a little over a week and overall I&apos;m</p>]]></description><link>https://blog.freshlytyped.nl/nexus-9-and-android-5-0/</link><guid isPermaLink="false">5ab167114c1f5b347cc461aa</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Fri, 21 Nov 2014 17:38:21 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>I couldn&apos;t resist getting a new tablet. My old Nexus 7 2012 was getting so laggy I couldn&apos;t stand it. With the new Nexus 9 available I thought - why not.</p>
<p>I have it now for a little over a week and overall I&apos;m quite positive. It&apos;s well built , fits nicely in bag and the screen is really nice. Speed wise, it&apos;s probably above Nexus 7 2013 but I&apos;ve got some lag here and there. Might be Lollipop issue but nevertheless. Nice touch is the support for double tap to wake.</p>
<p>Lollipop is nice. Takes a bit of time to get used to the new material design, whiteness etc but the only thing I miss so far is the real silent mode. I need to get used to the priority modeBattery life is okay. Can be better tbh.I expected more from the project Volta.</p>
<p>So far, if you don&apos;t need Nexus device with Lollipop, think twice. Nexus 9 is pricey and I still am not sure if I can approve the extra cost. I&apos;m happy though ;-)</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Getting Disqus working on localhost]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>I wanted to see how the Disqus comment block will look in my Ghost installation before pushing it to production, but I couldn&apos;t get the <code>localhost</code> setup working. All I got was &quot;Unable to load Disqus&quot; message :-(.</p>
<p>There are different tutorials on how to get</p>]]></description><link>https://blog.freshlytyped.nl/getting-disqus-working-on-localhost/</link><guid isPermaLink="false">5ab167114c1f5b347cc461a9</guid><category><![CDATA[ghost]]></category><category><![CDATA[disqus]]></category><category><![CDATA[tech]]></category><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Tue, 21 Oct 2014 19:19:33 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>I wanted to see how the Disqus comment block will look in my Ghost installation before pushing it to production, but I couldn&apos;t get the <code>localhost</code> setup working. All I got was &quot;Unable to load Disqus&quot; message :-(.</p>
<p>There are different tutorials on how to get Disqus working on <code>localhost</code> in Ghost, but none of them worked for me. I&apos;ve tried the <code>disqus_dev</code> option but that failed for me.</p>
<p>What actually has worked for me was putting</p>
<pre><code>var disqus_url = &apos;http://localhost/&apos;;
</code></pre>
<p>in the Disqus JS snippet. Don&apos;t forget to add <code>localhost</code> (this time without <code>http://</code>) to your &apos;Trusted Domains&apos; in Disqus advanced settings.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Blog? Srsly?]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>I never did the <em>blogging thing</em> but when I&apos;ve heard about <a href="http://openshift.com/?ref=blog.freshlytyped.nl">Openshift.com</a> and <a href="http://ghost.io/?ref=blog.freshlytyped.nl">Ghost.io</a> blogging system I though, as what the heck.</p>
<p>As Ghost currently doesn&apos;t support commenting out-of-box, I&apos;ve played a bit with <a href="https://disqus.com/?ref=blog.freshlytyped.nl">Disqus.com</a> and it seems to work.</p>
<p>Now</p>]]></description><link>https://blog.freshlytyped.nl/blog-srsly/</link><guid isPermaLink="false">5ab167114c1f5b347cc461a8</guid><dc:creator><![CDATA[Matej Konecny]]></dc:creator><pubDate>Mon, 29 Sep 2014 17:50:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>I never did the <em>blogging thing</em> but when I&apos;ve heard about <a href="http://openshift.com/?ref=blog.freshlytyped.nl">Openshift.com</a> and <a href="http://ghost.io/?ref=blog.freshlytyped.nl">Ghost.io</a> blogging system I though, as what the heck.</p>
<p>As Ghost currently doesn&apos;t support commenting out-of-box, I&apos;ve played a bit with <a href="https://disqus.com/?ref=blog.freshlytyped.nl">Disqus.com</a> and it seems to work.</p>
<p>Now I&apos;m here, writing a post. Maybe it will become something. Maybe I&apos;ll stop soon. Who knows!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>