<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Others on dotnet.work</title>
        <link>https://dotnet.work/categories/others/</link>
        <description>Recent content in Others on dotnet.work</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-US</language>
        <managingEditor>dotnet@oles.cloud (Ole Albers)</managingEditor>
        <webMaster>dotnet@oles.cloud (Ole Albers)</webMaster>
        <copyright>Ole Albers</copyright>
        <lastBuildDate>Wed, 04 Feb 2026 18:17:00 +0100</lastBuildDate><atom:link href="https://dotnet.work/categories/others/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Use Claude AI in Home Assistant Studio</title>
            <link>https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/</link>
            <pubDate>Wed, 04 Feb 2026 18:17:00 +0100</pubDate><author>dotnet@oles.cloud (Ole Albers)</author>
            <guid>https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/</guid>
            <description>&lt;img src=&#34;https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_37_55-Home-Assistant-Mozilla-Firefox_hu_9daa82fb4ffbfdf5.png&#34; alt=&#34;Featured image of post Use Claude AI in Home Assistant Studio&#34; /&gt;&lt;p&gt;Sometimes you have to configure stuff in Home Assistant the &amp;ldquo;painful&amp;rdquo; way: Working with Yaml-Files instead of using the UI. Therefore Studio Code Server is the first choice for most of us. But Yaml isn&amp;rsquo;t fun. Yaml in hass.io especially isn&amp;rsquo;t fun.&lt;/p&gt;&#xA;&lt;p&gt;But there is ai for the rescue. AI isn&amp;rsquo;t always the solution, but working with ugly configuration formats is exactly where it is good at. So let&amp;rsquo;s add claude to the Studio Code Server&lt;/p&gt;&#xA;&lt;h2 id=&#34;studio-code-server&#34;&gt;&lt;a href=&#34;#studio-code-server&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Studio Code Server&#xA;&lt;/h2&gt;&lt;p&gt;I assume you already have installed the Studio Code Server. If you haven&amp;rsquo;t: It is a simple Add-On. Just follow the official instructions:&#xA;&lt;a class=&#34;link&#34; href=&#34;https://github.com/hassio-addons/addon-vscode/blob/main/vscode/DOCS.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://github.com/hassio-addons/addon-vscode/blob/main/vscode/DOCS.md&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Studio Code Server will then be installed as a docker container. (Don&amp;rsquo;t worry. No need to know anything about docker. This works in the background)&lt;/p&gt;&#xA;&lt;h2 id=&#34;preparing&#34;&gt;&lt;a href=&#34;#preparing&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Preparing&#xA;&lt;/h2&gt;&lt;p&gt;Claude needs NodeJs which isn&amp;rsquo;t in the studio code server docker. But don&amp;rsquo;t worry, this is easy to solve. You &lt;em&gt;could&lt;/em&gt; connect to the docker and install the required packages using app-get. But while this works this has two disadvantages. First it is a bit more complicated if you are not at home with Linux Systems and most important: Any update of the Addon would kill NodeJs and you would have to do this all over again.&lt;/p&gt;&#xA;&lt;p&gt;Thankfully the Add-On devs thought of an easy way to do that for you. Just go to &lt;em&gt;Settings - Add-Ons - Studio Code Server&lt;/em&gt;. There go to &lt;em&gt;Configuration&lt;/em&gt; and in the &amp;ldquo;packages&amp;rdquo; enter &amp;ldquo;npm&amp;rdquo; and then &amp;ldquo;nodejs&amp;rdquo;. Do not enter both at the time. Each one of them by enter. After that there should be two bubbles on top:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Setup Page&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;339px&#34; data-flex-grow=&#34;141&#34; data-title-escaped=&#34;Setup Page&#34; height=&#34;298&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_37_55-Home-Assistant-Mozilla-Firefox_hu_9daa82fb4ffbfdf5.png&#34; title=&#34;Setup Page&#34; width=&#34;421&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;If you prefer editing in yaml, here is your content:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;packages:&#xA;  - nodejs&#xA;  - npm&#xA;init_commands: []&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Save and restart the addon. Don&amp;rsquo;t be alarmed if this takes a LONG time. There will have big packages to be downloaded and installed into that container. This will take minutes even on a fast machine and especially if using a Raspberry Pi.&lt;/p&gt;&#xA;&lt;h2 id=&#34;adding-claude&#34;&gt;&lt;a href=&#34;#adding-claude&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Adding Claude&#xA;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&#34;Install Addon&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;880px&#34; data-flex-grow=&#34;366&#34; data-title-escaped=&#34;Install Addon&#34; height=&#34;260&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_42_17-Studio-Code-Server-Home-Assistant-Mozilla-Firefox_hu_8fee66ef6366d762.png&#34; srcset=&#34;https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_42_17-Studio-Code-Server-Home-Assistant-Mozilla-Firefox_hu_9257303b5683b41e.png 800w, https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_42_17-Studio-Code-Server-Home-Assistant-Mozilla-Firefox_hu_8fee66ef6366d762.png 954w&#34; title=&#34;Install Addon&#34; width=&#34;954&#34;&gt;&#xA;Now you can switch to the code server. Select &lt;em&gt;Extensions&lt;/em&gt; on the left side, enter &amp;ldquo;Claude&amp;rdquo; into the search and install &amp;ldquo;Claude Code for VS Code&amp;rdquo;. After that you should have that typical &amp;ldquo;Claude Star&amp;rdquo; on the top right corner. You will be greeted with the authentication method. Select the one that matches your account. (Most likely Claude.ai Subscription)&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Account selection from Claude&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;152px&#34; data-flex-grow=&#34;63&#34; data-title-escaped=&#34;Account Selection from Claude&#34; height=&#34;878&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_46_17-Studio-Code-Server-Home-Assistant-Mozilla-Firefox_hu_71d79e2b7d9c581c.png&#34; title=&#34;Account Selection from Claude&#34; width=&#34;559&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;If after using the Login clicking &amp;ldquo;Open&amp;rdquo; does not work because you get redirected to a local url use the url instead that is shown in the textbox:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Continue in Browser &#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;353px&#34; data-flex-grow=&#34;147&#34; data-title-escaped=&#34;Continue in Browser&#34; height=&#34;365&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_52_54-Studio-Code-Server-Home-Assistant-Mozilla-Firefox_hu_fe7c633de7eebace.png&#34; title=&#34;Continue in Browser&#34; width=&#34;538&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Just copy paste that url manually and paste the returning code into Studio Code.&lt;/p&gt;&#xA;&lt;h2 id=&#34;using-claude&#34;&gt;&lt;a href=&#34;#using-claude&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Using Claude&#xA;&lt;/h2&gt;&lt;p&gt;Now you can open Claude using the star and let him do the work&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Screenshot of Claude analyzing the configuration.yaml&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;281px&#34; data-flex-grow=&#34;117&#34; data-title-escaped=&#34;Claude analyzing the configuration.yaml&#34; height=&#34;839&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_56_46-Studio-Code-Server-Home-Assistant-Mozilla-Firefox_hu_5fc2475700b80717.png&#34; srcset=&#34;https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_56_46-Studio-Code-Server-Home-Assistant-Mozilla-Firefox_hu_fc58830bc1938829.png 800w, https://dotnet.work/blog/use-claude-ai-in-home-assistant-studio/2026-02-04-10_56_46-Studio-Code-Server-Home-Assistant-Mozilla-Firefox_hu_5fc2475700b80717.png 983w&#34; title=&#34;Claude analyzing the configuration.yaml&#34; width=&#34;983&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;That is it. Now you can use claude in Home Assistant Config Files&lt;/p&gt;</description>
        </item><item>
            <title>Grafana - Notifications for Mastodon</title>
            <link>https://dotnet.work/blog/grafana-notifications-for-mastodon/</link>
            <pubDate>Tue, 14 Oct 2025 12:28:00 +0200</pubDate><author>dotnet@oles.cloud (Ole Albers)</author>
            <guid>https://dotnet.work/blog/grafana-notifications-for-mastodon/</guid>
            <description>&lt;img src=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-21-45_hu_6d1258580808eff7.png&#34; alt=&#34;Featured image of post Grafana - Notifications for Mastodon&#34; /&gt;&lt;p&gt;Grafana is a very useful tool for monitoring your own programs, discovering silly bugs, or simply looking at beautiful graphs :)&lt;/p&gt;&#xA;&lt;p&gt;Another feature is &amp;ldquo;Alerts&amp;rdquo;. These can be configured arbitrarily, whether high CPU load, too many errors in the log, or similar should trigger an alarm.&lt;/p&gt;&#xA;&lt;p&gt;This post won&amp;rsquo;t be about the alerts themselves, but rather about sending already configured alerts to Mastodon. These are called &lt;em&gt;Contact Points&lt;/em&gt; in Grafana and initially don&amp;rsquo;t offer Mastodon integration. However, this can be worked around with a few simple steps.&lt;/p&gt;&#xA;&lt;h2 id=&#34;mastodon&#34;&gt;&lt;a href=&#34;#mastodon&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Mastodon&#xA;&lt;/h2&gt;&lt;p&gt;First, we need some preparation, because of course not just any random application can post to Mastodon under our name (thankfully).&lt;/p&gt;&#xA;&lt;p&gt;Therefore, we log into the instance of our choice, select &lt;em&gt;Settings&lt;/em&gt; and then &lt;em&gt;Development&lt;/em&gt;. This should look something like this:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Screenshot Applications&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;521px&#34; data-flex-grow=&#34;217&#34; data-title-escaped=&#34;Screenshot Applications&#34; height=&#34;922&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-21-45_hu_6d1258580808eff7.png&#34; srcset=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-21-45_hu_9918453b50955166.png 800w, https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-21-45_hu_8244dccb771d446b.png 1600w, https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-21-45_hu_6d1258580808eff7.png 2002w&#34; title=&#34;Screenshot Applications&#34; width=&#34;2002&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;(If the list is empty, it means you haven&amp;rsquo;t created any applications yet. If it&amp;rsquo;s not empty, you don&amp;rsquo;t need this part of the tutorial at all, because you&amp;rsquo;ve already done this before 😀)&lt;/p&gt;&#xA;&lt;p&gt;Click on &lt;em&gt;New Application&lt;/em&gt; here and choose a name. Leave the other two text fields as they are:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Application Detail View&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;480px&#34; data-flex-grow=&#34;200&#34; data-title-escaped=&#34;Application Detail View&#34; height=&#34;1024&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-29-08_hu_8eca63e246ece1fd.png&#34; srcset=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-29-08_hu_c566f4335b88bed5.png 800w, https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-29-08_hu_2067d1ad11c6660d.png 1600w, https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-29-08_hu_8eca63e246ece1fd.png 2052w&#34; title=&#34;Application Detail View&#34; width=&#34;2052&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;For permissions, you only need &lt;em&gt;&amp;ldquo;write:statuses&amp;rdquo;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You should now see a page showing the secrets. You only need the access token (bottom value) from this.&lt;/p&gt;&#xA;&lt;h2 id=&#34;grafana&#34;&gt;&lt;a href=&#34;#grafana&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Grafana&#xA;&lt;/h2&gt;&lt;p&gt;Now we can switch to Grafana. There&amp;rsquo;s a menu item called &lt;em&gt;Contact points&lt;/em&gt; under &lt;em&gt;Alerting&lt;/em&gt;. At least Email should already appear in the list. We now add a new destination with &lt;em&gt;&amp;quot;+ Create contact point&amp;quot;&lt;/em&gt;:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;Screenshot Contact Point&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;535px&#34; data-flex-grow=&#34;223&#34; data-title-escaped=&#34;Screenshot Contact Point&#34; height=&#34;1112&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-35-32_hu_b50144b7f683b82.png&#34; srcset=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-35-32_hu_34840b37b23bf79e.png 800w, https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-35-32_hu_6ceedc02f82f0213.png 1600w, https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-35-32_hu_5ea25a905a5f1942.png 2400w, https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-35-32_hu_b50144b7f683b82.png 2480w&#34; title=&#34;Screenshot Contact Point&#34; width=&#34;2480&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The name is of course freely selectable, for integration choose &lt;em&gt;Webhook&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;For the URL, enter the following:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;https://chaos.social/api/v1/statuses?access_token=&amp;lt;Secret&amp;gt;&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Instead of &lt;em&gt;&lt;Secret&gt;&lt;/em&gt;, enter the access token from Mastodon. If you now click on &lt;em&gt;Test&lt;/em&gt; (and leave the default values as they are), a new entry will already be created in Mastodon under your name:&#xA;&lt;img alt=&#34;Screenshot Test Notification&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;450px&#34; data-flex-grow=&#34;187&#34; data-title-escaped=&#34;Screenshot Test Notification&#34; height=&#34;352&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-39-18_hu_a2c4001f64561a4c.png&#34; title=&#34;Screenshot Test Notification&#34; width=&#34;660&#34;&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;getting-down-to-business&#34;&gt;&lt;a href=&#34;#getting-down-to-business&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Getting Down to Business&#xA;&lt;/h3&gt;&lt;p&gt;That&amp;rsquo;s nice for starters, but we obviously can&amp;rsquo;t do much with just &amp;ldquo;firing&amp;rdquo;. We want to see the actual error. Also, we probably don&amp;rsquo;t want to inform the whole world. It makes more sense to simply mention ourselves and set the visibility to &amp;ldquo;direct&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;To do this, we open &lt;em&gt;Optional Webhook Settings&lt;/em&gt;, set &lt;em&gt;HTTP Method&lt;/em&gt; to &lt;em&gt;POST&lt;/em&gt; and click the &amp;ldquo;Edit Payload Template&amp;rdquo; button next to &lt;em&gt;Custom Payload&lt;/em&gt;. A new window pops up and after we&amp;rsquo;ve selected &lt;em&gt;Enter custom payload template&lt;/em&gt; there, we can enter the following content:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{&#xA;  &amp;#34;status&amp;#34;: &amp;#34;Alert: {{ .CommonLabels.alertname }}\nStatus: {{ .Status }}\n{{ range .Alerts }}{{ .Annotations.summary }}{{ end }}&amp;#34;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now the alert is already a bit more meaningful:&#xA;&lt;img alt=&#34;Screenshot Alert&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;353px&#34; data-flex-grow=&#34;147&#34; data-title-escaped=&#34;Screenshot Alert&#34; height=&#34;448&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-44-36_hu_d60f4511809a5bfc.png&#34; title=&#34;Screenshot Alert&#34; width=&#34;660&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Still missing the private mode. This can be set via &lt;em&gt;Visibility&lt;/em&gt;. Additionally, it&amp;rsquo;s best to mention yourself. (I&amp;rsquo;ve modified my name slightly here so you don&amp;rsquo;t make a copy-paste mistake :) )&lt;/p&gt;&#xA;&lt;p&gt;While we&amp;rsquo;re at it, I&amp;rsquo;ve also used the &lt;em&gt;spoiler-text&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;{&#xA;  &amp;#34;status&amp;#34;: &amp;#34;@guacamoleeeee {{ .CommonAnnotations.summary }}&amp;#34;,&#xA;  &amp;#34;visibility&amp;#34;: &amp;#34;direct&amp;#34;,&#xA;  &amp;#34;sensitive&amp;#34;: false,&#xA;  &amp;#34;spoiler_text&amp;#34;: &amp;#34;🚨 {{ .CommonLabels.alertname }} {{ .Status }}&amp;#34;,&#xA;  &amp;#34;language&amp;#34;: &amp;#34;en&amp;#34;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The result is then as follows:&#xA;&lt;img alt=&#34;Screenshot Alert&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;254px&#34; data-flex-grow=&#34;106&#34; data-title-escaped=&#34;Screenshot Alert&#34; height=&#34;648&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/grafana-notifications-for-mastodon/Screenshot-from-2025-10-14-12-52-52_hu_6b769ac31c113ea0.png&#34; title=&#34;Screenshot Alert&#34; width=&#34;688&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;A complete list of Mastodon properties can be found here:&#xA;&lt;a class=&#34;link&#34; href=&#34;https://docs.joinmastodon.org/methods/statuses/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://docs.joinmastodon.org/methods/statuses/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;have-fun&#34;&gt;&lt;a href=&#34;#have-fun&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;Have Fun&#xA;&lt;/h2&gt;&lt;p&gt;Wishing you many alerts might be a bit strange, but I hope I could help with this.&lt;/p&gt;</description>
        </item><item>
            <title>Wayback Machine and 301 redirects</title>
            <link>https://dotnet.work/blog/wayback-machine-and-301-redirects/</link>
            <pubDate>Tue, 15 Nov 2016 12:00:00 +0100</pubDate><author>dotnet@oles.cloud (Ole Albers)</author>
            <guid>https://dotnet.work/blog/wayback-machine-and-301-redirects/</guid>
            <description>&lt;p&gt;As you might know: the wayback machine from archive.org saves snapshots of websites. It does this automatically or can be forced to do so. However. If you ever had a 301 redirect on your site you are very much doomed.&lt;/p&gt;&#xA;&lt;p&gt;Like browsers also the wayback-machine caches the redirect and does not continue to take snapshots from your sites. Even if you enter your url into the wayback-machine, you still will be redirected.&lt;/p&gt;&#xA;&lt;p&gt;You can however force it to ignore the cache by manually store your site again:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://web.archive.org/save/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://web.archive.org/save/&lt;/a&gt;[YOURSITE]&lt;/p&gt;&#xA;&lt;p&gt;for example:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://web.archive.org/save/http://blathering.de&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://web.archive.org/save/http://blathering.de&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Et voílà: Everything works nice from now on.&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;[Image is CC-BY-NC-ND © David Baldingerhttp://www.dbaldinger.com/opinion_cartoons/second_page/wayback.html]&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>Getting rid of Proxy limitations using Fiddler</title>
            <link>https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/</link>
            <pubDate>Fri, 16 Sep 2016 12:00:00 +0200</pubDate><author>dotnet@oles.cloud (Ole Albers)</author>
            <guid>https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/</guid>
            <description>&lt;img src=&#34;https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/proxyIE_hu_916867fbbfb567d9.png&#34; alt=&#34;Featured image of post Getting rid of Proxy limitations using Fiddler&#34; /&gt;&lt;p&gt;If you work in a company that uses Proxy authentication (aka forces you to enter a password to access websites) and are a developer you know my pain: Some Most applications just don&amp;rsquo;t really like proxies. Visual Studio itself for example does not like proxy authentication at all and responses with a wide variety of error codes (407 for example).&lt;/p&gt;&#xA;&lt;p&gt;You can get rid of all these errors through different workarounds, but these are a real PITA.&lt;/p&gt;&#xA;&lt;p&gt;In addition the application you code itself needs Internet access, for example if you develop Office365 AddIns, you are very much screwed.&lt;/p&gt;&#xA;&lt;p&gt;After a long research I finally found a solution using &lt;a class=&#34;link&#34; href=&#34;http://www.telerik.com/fiddler&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Fiddler&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Most developers already use Fiddler for debugging reasons so there isn&amp;rsquo;t even any software that needs to be installed.&lt;/p&gt;&#xA;&lt;p&gt;First of all:&lt;/p&gt;&#xA;&lt;p&gt;Start your computer. You should &lt;strong&gt;not&lt;/strong&gt; have been entered your Proxy credentials yet. Use Fiddler as proxy in your IE and enter your real Proxy in Fiddler:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;proxyie&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;272px&#34; data-flex-grow=&#34;113&#34; height=&#34;446&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/proxyIE_hu_916867fbbfb567d9.png&#34; width=&#34;506&#34;&gt; Default Proxy-Settings to use Fiddler&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;fiddlerproxy&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;410px&#34; data-flex-grow=&#34;171&#34; height=&#34;490&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/fiddlerproxy_hu_e1a07ea8d09b2f21.png&#34; srcset=&#34;https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/fiddlerproxy_hu_f28009f203e428a2.png 800w, https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/fiddlerproxy_hu_e1a07ea8d09b2f21.png 838w&#34; width=&#34;838&#34;&gt; Proxy-Settings in Fiddler&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Do not select &amp;ldquo;&lt;em&gt;System Proxy&amp;rdquo;&lt;/em&gt;.&lt;/strong&gt; Otherwise. Fiddler will enter itself here, because Fiddler is the System Proxy right now.&lt;/p&gt;&#xA;&lt;p&gt;Now open your favorite browser (except FireFox, as it uses its own proxy) and open any site that opens up the Proxy authentication window. Enter your credentials and load that site. In Fiddler you should now see (at least) one entry with response code 407 followed by a few entries with 200:&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;fiddler1&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;582px&#34; data-flex-grow=&#34;242&#34; height=&#34;440&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/fiddler1_hu_d3015f78c419550b.png&#34; srcset=&#34;https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/fiddler1_hu_2bd5f2b7748eace5.png 800w, https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/fiddler1_hu_d3015f78c419550b.png 1068w&#34; width=&#34;1068&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Select the entry with StatusCode 200 and display the Request Headers. Under &amp;ldquo;Security there now is a line with &amp;ldquo;Proxy-Authorization: &amp;ldquo;&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img alt=&#34;fiddler2&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;453px&#34; data-flex-grow=&#34;189&#34; height=&#34;364&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://dotnet.work/blog/getting-rid-of-proxy-limitations-using-fiddler/fiddler2_hu_f319efbd5e5a1b6e.png&#34; width=&#34;688&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Copy that line.&lt;/p&gt;&#xA;&lt;p&gt;Now Enter Ctrl-R in Fiddler to open the rules file. Look for&lt;/p&gt;&#xA;&lt;p&gt; static function OnBeforeRequest(oSession: Session) {&lt;/p&gt;&#xA;&lt;p&gt;in that file and add the following line directly at the top of the function:&lt;/p&gt;&#xA;&lt;p&gt;oSession.oRequest[&amp;ldquo;Proxy-Authorization&amp;rdquo;] = &amp;ldquo;Basic DBDDHKPadasdkahsdasd=&amp;rdquo;;&lt;/p&gt;&#xA;&lt;p&gt;where you replace the token behind &amp;ldquo;Basic&amp;rdquo; with the value you copied before.&lt;/p&gt;&#xA;&lt;p&gt;Now save CustomRules.js and from now on no application has to enter any more Proxy passwords (as long as you use Fiddler as System Proxy)&lt;/p&gt;&#xA;&lt;p&gt;If you are forced to change your Password, remove this line in the configuration file, and repeat the procedure from the beginning with the new password.&lt;/p&gt;&#xA;&lt;p&gt;That&amp;rsquo;s it, mostly. For more comfort I would recommend to use the &lt;a class=&#34;link&#34; href=&#34;http://proxyswitcher.net/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;proxy switcher&lt;/a&gt; if you have to change the proxy more often.&lt;/p&gt;&#xA;</description>
        </item><item>
            <title>It&#39;s because they at Microsoft hate web developers</title>
            <link>https://dotnet.work/blog/its-because-they-at-microsoft-hate-web-developers/</link>
            <pubDate>Tue, 14 Jun 2016 12:00:00 +0200</pubDate><author>dotnet@oles.cloud (Ole Albers)</author>
            <guid>https://dotnet.work/blog/its-because-they-at-microsoft-hate-web-developers/</guid>
            <description>&lt;p&gt;That remark isn&amp;rsquo;t mine, it is from StackOverflow. :)&lt;/p&gt;&#xA;&lt;p&gt;I had an issue that my Office365-App did not work correctly on the machine of ONE user. Sadly though that user was the Microsoft validation crew. I was unable to reproduce the error and did not even see any clue in the Server logs. Everything seemed to work fine.&lt;/p&gt;&#xA;&lt;p&gt;Finally I managed to reproduce the error. It only happened under the following conditions: 1. Internet Explorer 11; IE - what else :) 2. Caching in IE has to be on &amp;ldquo;Automatic&amp;rdquo; 3. Developer Console MUST NOT be open 3.1. In fact: Even if you open it and close it afterwards, the error does not appear anymore 4. I had to retract/reinstall the app each time to check this behaviour which took about 10 minutes every time&lt;/p&gt;&#xA;&lt;p&gt;I had issues with console on older IEs before, but at least angular uses some magic, so that issue is resolved. Nearly all questions in the web combining IE and console repeat the solution that you may not use &amp;ldquo;console.log()&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;But the real issue was: Caching. IE - in its wisdom - decided that the API-Call that returns the installation state should be cached. That cached value always responded that the app is not installed, even if it was. So the user kept receiving the &amp;ldquo;please install&amp;rdquo; - Page.&lt;/p&gt;&#xA;&lt;p&gt;Any other browser (Chrome, Firefox, &amp;hellip;) doesn&amp;rsquo;t cache these calls. And the IE doesn&amp;rsquo;t either when you open the Developer Console (what you do if you want to debug an application) which makes it really hard to track that error.&lt;/p&gt;&#xA;&lt;p&gt;So the solution is to make sure the call isn&amp;rsquo;t cached using No-Cache-Headers or just by adding a random value to the target address. And of course resist the urge to display a reminder to use another browser. That could be bad for the validation results :)&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
