<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Markus Weimer</title>
    <description>Building intelligent machines, one gradient at a time.</description>
    <link>https://www.weimo.de/</link>
    <atom:link href="https://www.weimo.de/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Thu, 04 Dec 2025 23:20:40 +0000</pubDate>
    <lastBuildDate>Thu, 04 Dec 2025 23:20:40 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Simple identity theft - the perfect crime?</title>
        <description>&lt;p&gt;Today, I learned a lesson about how crime does in fact pay and how ill-equipped we are to stop it.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;someone-spammed-me-and-bought-an-ipad-with-my-credit-card&quot;&gt;Someone spammed me and bought an iPad with my credit card&lt;/h2&gt;

&lt;p&gt;This morning, I woke up to more than 200 emails from various websites either confirming my sign-up or requesting my confirmation to do so. I also got an iMessage about picking up an iPad today I had not ordered. And Chase helpfully listed the $2,200 for my on my credit card bill as a pending transaction.&lt;/p&gt;

&lt;h2 id=&quot;i-knew-when-and-where-the-fraudster-would-be&quot;&gt;I knew when and where the fraudster would be&lt;/h2&gt;

&lt;p&gt;At this point, I knew that someone tried to steal the iPad and when and where they would need to be to pick it up. I knew this 3h before the pickup would happen. In fact, I am writing this 20 minutes before that pickup. Alas, I was unable to stop it:&lt;/p&gt;

&lt;h2 id=&quot;limiting-further-damage-to-myself&quot;&gt;Limiting further damage to myself&lt;/h2&gt;

&lt;p&gt;My first move was to lock my credit card. I also learned that one cannot mark pending charges as fraudulent, only posted ones.&lt;/p&gt;

&lt;p&gt;I also checked all my major accounts for suspcious logins. Thankfully, I could quickly rule out a sophisticated attack which circumvented my many layers of password managers and hardware tokens.&lt;/p&gt;

&lt;p&gt;Contacting the Apple Store in question did not work at this time, as they were not open yet.&lt;/p&gt;

&lt;h2 id=&quot;reporting-the-crime-that-is-about-to-happen&quot;&gt;Reporting the crime that is about to happen&lt;/h2&gt;

&lt;p&gt;I then proceeded to file a report with the Bellevue Police online. I have reason to believe that that is where my credit card information, phone number and email address where stolen: I dined at a restaurant there last night. I booked the table via OpenTable, which shared my email address and phone number with the restaurant. I paid with the card later used to pay for the iPad. That order contained my email address and phone number.&lt;/p&gt;

&lt;p&gt;I then called the Bellevue Police to follow up and let them know when &amp;amp; where the fraudster would be to pickup the iPad. Turns out it is not their jurisdiction because identity theft happens where you live from a legal standpoint regardless of where it happens in the real world. They connected me with the King County Sheriff who after verifying my address promised to send someone to my house. Not the Apple Store where the pickup is about to happen, to my house. Needless to say, they never showed.&lt;/p&gt;

&lt;h2 id=&quot;apples-reaction&quot;&gt;Apple’s reaction&lt;/h2&gt;

&lt;p&gt;Past 10AM, I was able to contact the Apple Store, and they were happy enough to cancel the order. Whether or not they would want to do something about the fraudster walking into their store soon is “up to the store”. Sure enough, they connected me with the store which told me that they can’t do anything without law enforcement and then put me on hold longer than I could wait.&lt;/p&gt;

&lt;h2 id=&quot;the-perfect-crime&quot;&gt;The perfect crime?&lt;/h2&gt;

&lt;p&gt;This particular fraud did not succeed, thankfully: The order is cancelled and the credit card used is deactivated and will be replaced. I will have to deal with the spam from the many websites in the next few months.&lt;/p&gt;

&lt;p&gt;However, the fraudster is going to be undiscovered and unpunished and can just try again. This is despite knowing when and where the fraudster would be 3h in advance of the crime. I am sure this play works for many people with less &lt;del&gt;anal&lt;/del&gt; prudent and entirely appropriate cyber security processes in place.&lt;/p&gt;

&lt;p&gt;Stay vigilant!&lt;/p&gt;
</description>
        <pubDate>Fri, 22 Nov 2024 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/2024/11/22/identity-theft-the-perfect-crime/</link>
        <guid isPermaLink="true">https://www.weimo.de/2024/11/22/identity-theft-the-perfect-crime/</guid>
        
        
      </item>
    
      <item>
        <title>Setting up OpenSpeedTest on a Synology NAS with docker compose</title>
        <description>&lt;p&gt;&lt;a href=&quot;https://openspeedtest.com/&quot;&gt;OpenSpeedTest&lt;/a&gt; is handy to measure the performance of the local (W)LAN: It is like any other speed test service, but it runs locally. Setting it up on a Synology NAS is easy.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;Create a new Project in Container Manager as usual. Use this &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;docker-compose.yml&lt;/code&gt; to set it up.&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;3.3&apos;&lt;/span&gt;
&lt;span class=&quot;na&quot;&gt;services&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;speedtest&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
       &lt;span class=&quot;na&quot;&gt;environment&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
           &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;DOMAIN_NAME=ssyn2.markusweimer.com&lt;/span&gt;
       &lt;span class=&quot;na&quot;&gt;restart&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;unless-stopped&lt;/span&gt;
       &lt;span class=&quot;na&quot;&gt;container_name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;openspeedtest&lt;/span&gt;
       &lt;span class=&quot;na&quot;&gt;network_mode&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;host&quot;&lt;/span&gt;
       &lt;span class=&quot;na&quot;&gt;ports&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;80:3000&apos;&lt;/span&gt;
            &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;443:3001&apos;&lt;/span&gt;
       &lt;span class=&quot;na&quot;&gt;image&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;openspeedtest/latest&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This makes it so that OpenSpeedTest is available on port &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;3000&lt;/code&gt; of your NAS.&lt;/p&gt;
</description>
        <pubDate>Sat, 26 Oct 2024 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/2024/10/26/openspeedtest-on-synology/</link>
        <guid isPermaLink="true">https://www.weimo.de/2024/10/26/openspeedtest-on-synology/</guid>
        
        
      </item>
    
      <item>
        <title>Escaping email overload</title>
        <description>&lt;p&gt;I recently welcomed a group of new team members who were not used to the email centric culture. This can be overwhelming: We have dozens of email lists and automated systems sending status updates and alerts that everyone receives email from. Many of us who have lived this way for a long time have coping mechanisms. These are mine.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;filters-to-the-rescue&quot;&gt;Filters to the rescue&lt;/h2&gt;
&lt;p&gt;Just about every email system supports email rules or filters. We use Outlook (naturally), but other systems have equivalent functionality. These are the rules I find most helpful, in the order in which Outlook processes them for every email:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Mark emails &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;from:&lt;/code&gt; me as read: This may seem odd. But I often get email from “myself”: Some mailing lists send me a copy of my own email, I sometimes mail myself a note, … . In those cases, I can (still) confidently assert that I have read the email.&lt;/li&gt;
  &lt;li&gt;Put emails &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;to:&lt;/code&gt; me into the Inbox and stop processing: Messages that directly address me require my attention, one way or the other. They should stay in the Inbox and not be affected by any of the following rules.&lt;/li&gt;
  &lt;li&gt;Put emails &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cc:&lt;/code&gt; to me into the CC folder and stop processing: Messages that CC me explicitly are sent with the assumption that I will (eventually) be aware of their contents. The CC folder is my way of making sure of that. I read emails in the folder less often than in the Inbox, but I still at least skim them.&lt;/li&gt;
  &lt;li&gt;This is where all the custom email filters go: filter mailing lists into folders, delete emails from lists I somehow am unable to leave, … . This is an ever growing (and rarely shrinking) list of horrors.&lt;/li&gt;
  &lt;li&gt;Put the remaining emails into a “Not to me” folder: these are the emails that have me neither in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;to:&lt;/code&gt; nor &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cc:&lt;/code&gt; field, nor do I have a specific filter for them. In other words: this folder is my reminder to create more filters.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With these filters in place, I can confidently read and act upon the email in my Inbox, skim the ones in my CC folder and know which new filters I need based on the “Not to me” folder.&lt;/p&gt;

&lt;h2 id=&quot;archive-is-your-friend&quot;&gt;Archive is your friend&lt;/h2&gt;

&lt;p&gt;I treat the Inbox, CC and “Not to me” folders as todo lists: Email that is still there (read or not) requires an action from me: Respond, do some work, unsubscribe, you name it. Once that action is done, I move the email to the Archive folder. This is conveniently done via the single-key shortcut “e” in Outlook for the web. I try to, and usually do, get to an empty Inbox once a week.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;p&gt;This simple system of filters and ruthless archiving has so far allowed me to avoid email bankcuptcy. Maybe it helps you, too.&lt;/p&gt;
</description>
        <pubDate>Fri, 07 Apr 2023 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/2023/04/07/email/</link>
        <guid isPermaLink="true">https://www.weimo.de/2023/04/07/email/</guid>
        
        
      </item>
    
      <item>
        <title>Home Assistant: Housing the Raspberry Pi in an Argon One M.2 case</title>
        <description>&lt;p&gt;I am a fan of the &lt;a href=&quot;https://www.argon40.com/argon-one-m-2-case-for-raspberry-pi-4.html&quot;&gt;Argon One M.2 case&lt;/a&gt; raspberry Pi case. I finally got my
hands on one for the Raspberry Pi which runs my Home Assistant. The transfer
wasn’t entirely straight forward. The notes below might help the next person
doing this.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;create-a-backup&quot;&gt;Create a backup&lt;/h2&gt;

&lt;p&gt;The first step is to create a backup of your Home Assistant. You will need this
later after the new install.&lt;/p&gt;

&lt;h2 id=&quot;enable-usb-boot&quot;&gt;Enable USB boot&lt;/h2&gt;

&lt;p&gt;The SSD in the Argon One case is connected via USB. Since recently, the
Raspberry Pi can boot off of USB devices. You &lt;em&gt;might&lt;/em&gt; have to update the eeprom
of your Pi to make this work. Mine already had the newest version. You &lt;em&gt;will&lt;/em&gt;
have to change the settings of the Pi to boot from USB. I used a MicroSD card
with Raspberry Pi OS on it for this. The tool &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;raspi-config&lt;/code&gt; can do this.&lt;/p&gt;

&lt;h2 id=&quot;install-home-assistant&quot;&gt;Install Home Assistant&lt;/h2&gt;

&lt;p&gt;I used a USB A - USB A cable to connect the SSD portion of the case to my PC.
The Raspberry Pi images can be used to install Home Assistant as if it was a
MicroSD card. So far so easy.&lt;/p&gt;

&lt;h2 id=&quot;restore-the-backup&quot;&gt;Restore the backup&lt;/h2&gt;

&lt;p&gt;When booting this new Home Assistant installation for the first time from the
SSD, do not create a username and password. Instead, use the link at the bottom
to upload the backup created in step one. I had no feedback whether this worked
or not. But when I opened the Home Assistant UI after a few minutes, everything
was like it was at the time of the backup.&lt;/p&gt;

&lt;h2 id=&quot;quiet-the-fan&quot;&gt;Quiet the fan&lt;/h2&gt;

&lt;p&gt;The Argon One case has a fan. That is great, but noisy. On Raspbian OS, you can
just install the software for the case to regulate it. On Home Assistant, I
found this more challenging. Here is what worked for me:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Install the &lt;a href=&quot;https://community.home-assistant.io/t/add-on-hassos-i2c-configurator/264167&quot;&gt;HassOS I2C Configurator&lt;/a&gt;. I gave it &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;root&lt;/code&gt; rights by
disabling “protection mode”. I marked it to start at boot.&lt;/li&gt;
  &lt;li&gt;Reboot the Pi.&lt;/li&gt;
  &lt;li&gt;Reboot the Pi. (Yes, twice. The logs of the add-on said so)&lt;/li&gt;
  &lt;li&gt;Install the &lt;a href=&quot;https://github.com/adamoutler/HassOSArgonOneAddon&quot;&gt;Fan hat add-on&lt;/a&gt;. I configured it to start at boot.&lt;/li&gt;
  &lt;li&gt;Reboot the Pi.&lt;/li&gt;
  &lt;li&gt;Reboot the Pi. (This time, I did it just for good measure.)&lt;/li&gt;
&lt;/ol&gt;

</description>
        <pubDate>Fri, 11 Feb 2022 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/homeautomation/2022/02/11/argon-one/</link>
        <guid isPermaLink="true">https://www.weimo.de/homeautomation/2022/02/11/argon-one/</guid>
        
        
        <category>HomeAutomation</category>
        
      </item>
    
      <item>
        <title>Home Assistant: Water leak detection and notification with the Aqara Water Leak Sensor</title>
        <description>&lt;p&gt;This week, I added a bunch of
&lt;a href=&quot;https://www.aqara.com/us/water_leak_sensor.html&quot;&gt;Aqara Water Leak Sensors&lt;/a&gt; to
my home assistant setup.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;pairing-the-aqara-water-leak-sensor-with-home-assistant&quot;&gt;Pairing the Aqara Water Leak Sensor with Home Assistant&lt;/h2&gt;

&lt;p&gt;The first hurdle was how to trigger pairing mode of the Aqara Water Leak Sensor.
The manual only describes this process for their own hub / app combination. I
run Home Assistant with a ZigBee stick and would rather not add a hub for each
device maker. Turns our the solution is simple: Press on the top of the sensor
till a blue light just below the water drop starts flashing. This switches the
device into pairing mode. I was able to pair the sensor as usual in the Zigbee
panel of Home Assistant.&lt;/p&gt;

&lt;h2 id=&quot;rename-the-sensors&quot;&gt;Rename the Sensors&lt;/h2&gt;

&lt;p&gt;The names chosen for the actual sensor entities were a bit random and hard to
parse for me. Hence, I renamed the sensor entities to something like
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;binary_sensor.water_leak_detector_kitchen_sink&lt;/code&gt; in the Home Assistant UI. This
makes subsequent references to them from YAML code a lot easier.&lt;/p&gt;

&lt;h2 id=&quot;test-the-sensor&quot;&gt;Test the sensor&lt;/h2&gt;

&lt;p&gt;When initially testing the sensor, they failed to detect water even when
submerged for a few minutes. When I repeated the same test a few minutes later,
they detected water in much smaller volume instantly. Not sure why this is.
Could be that the sensor calibrates itself after startup and needs some time to
do so.&lt;/p&gt;

&lt;h2 id=&quot;group-the-sensors&quot;&gt;Group the sensors&lt;/h2&gt;

&lt;p&gt;When thinking about water leak notification, I don’t actually care which sensor
is detecting a leak. I can look that up in the Home Assistant UI whenever I
want. Hence, I grouped the devices into one meta sensor using the
&lt;a href=&quot;https://www.home-assistant.io/integrations/binary_sensor.group/&quot;&gt;Binary Sensor Group&lt;/a&gt; platform like so in my &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;configuration.xml&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;binary_sensor&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;platform&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;group&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Water Leak&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;device_class&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;moisture&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;entities&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;binary_sensor.water_leak_detector_kitchen_sink&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;binary_sensor.water_leak_detector_main_bath_sink_right&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;binary_sensor.water_leak_detector_main_bath_sink_left&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;binary_sensor.water_leak_detector_main_bath_toilet&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;binary_sensor.water_leak_detector_utility_room&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;binary_sensor.water_leak_detector_washing_machine&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This creates a new sensor named &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Water Leak&lt;/code&gt; with the entity id
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;binary_sensor.water_leak&lt;/code&gt;. This sensor will detect a leak whenever any one of
the grouped sensors does so.&lt;/p&gt;

&lt;h2 id=&quot;setup-an-alert&quot;&gt;Setup an Alert&lt;/h2&gt;

&lt;p&gt;This new group then allows me to send alerts to my phone using the &lt;a href=&quot;https://www.home-assistant.io/integrations/alert/&quot;&gt;Alert&lt;/a&gt;
platform like so:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;alert&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;water_leak&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Water leak detected&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;message&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Water leak detected&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;done_message&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Water leak no longer detected&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;entity_id&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;binary_sensor.water_leak&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;on&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;repeat&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;notifiers&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;mobile_app_pixel_4_xl&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This will send a notification to my phone (entity &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mobile_app_pixel_4_xl&lt;/code&gt;) once
a minute while a leak is detected. It will send the “all clear” notification
when the leak is no longer detected. This might be a bit excessive, but better
safe than sorry :-).&lt;/p&gt;

</description>
        <pubDate>Sat, 05 Feb 2022 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/homeautomation/2022/02/05/waterleak_detection/</link>
        <guid isPermaLink="true">https://www.weimo.de/homeautomation/2022/02/05/waterleak_detection/</guid>
        
        
        <category>HomeAutomation</category>
        
      </item>
    
      <item>
        <title>Home Assistant: Detect whether the TV is on based on power measure of a smart plug</title>
        <description>&lt;p&gt;I plugged my TV into a smart plug which conveniently also measures power flow
through it. I wanted to use this to detect whether the TV was on.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;&lt;strong&gt;The bad way:&lt;/strong&gt; Initially, I fumbled my way with an &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;input_boolean&lt;/code&gt; and two
automations: One triggered when more than 10W were flowing to set the
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;input_boolean&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;true&lt;/code&gt;. And another one to set it to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;false&lt;/code&gt; when power flow
was below 10W.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The better way:&lt;/strong&gt; Turns out there is a much easier way to do this with the
&lt;a href=&quot;https://www.home-assistant.io/integrations/template/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;template&lt;/code&gt;&lt;/a&gt; platform. Here is what I arrived at:&lt;/p&gt;

&lt;div class=&quot;language-yaml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;template&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;binary_sensor&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;TV&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;is&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;on&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;{{states(&apos;sensor.tv_power_switch_smartenergy_metering&apos;)|float&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;gt;10}}&quot;&lt;/span&gt;
      &lt;span class=&quot;na&quot;&gt;icon&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;mdi:television&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This creates a new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;binary_sensor&lt;/code&gt; in the system with name &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;TV is on&lt;/code&gt; and entity
ID &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;binary_sensor.tv_is_on&lt;/code&gt; that tracks whether or not the power flow through
the sensor &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sensor.tv_power_switch_smartenergy_metering&lt;/code&gt; is greater than &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;10&lt;/code&gt;.
The unit of measure for the smart plug I have is W.&lt;/p&gt;

&lt;p&gt;Next up is to give the same treatment to the washing machine.&lt;/p&gt;

</description>
        <pubDate>Sun, 30 Jan 2022 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/homeautomation/2022/01/30/tv_sensor/</link>
        <guid isPermaLink="true">https://www.weimo.de/homeautomation/2022/01/30/tv_sensor/</guid>
        
        
        <category>HomeAutomation</category>
        
      </item>
    
      <item>
        <title>Connecting a Webcam to a Hyper-V VM via RDP</title>
        <description>&lt;p&gt;As mentioned &lt;a href=&quot;/tipsandtricks/2020/10/19/hyperv-webcam/&quot;&gt;before&lt;/a&gt;, I run work on a VM on my
personal machine. I use Hyper-V as the hypervisor. For a while, struggled how to
get the webcam to be available in the VM. Turns out you can just use the Remote
Desktop Protocol (RDP) for this.&lt;/p&gt;

&lt;!--more--&gt;

&lt;p&gt;It isn’t quite as simple, however. When you enable “Enhanced Session” mode in
Hyper-V, you are in fact using RDP. But that path doesn’t allow for the webcam
forwarding for some reason (Microsoft friends: please enlighten me). Instead,
you have to use RDP over the network:&lt;/p&gt;

&lt;h2 id=&quot;step-1-enable-remote-desktop-in-the-vm&quot;&gt;Step 1: Enable Remote desktop in the VM&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/img/2022-01-30-enable-rdp.gif&quot; alt=&quot;Screen recording of enabling RDP&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;step-2-determine-the-ip-address-the-vm-has-on-the-local-network&quot;&gt;Step 2: Determine the IP address the VM has on the local network&lt;/h2&gt;

&lt;p&gt;Your rooter will be able to tell you. Or use the hostname. For me, it is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mweimer-homevm&lt;/code&gt;&lt;/p&gt;

&lt;h2 id=&quot;step-3-connect-via-remote-desktop-client-and-forward-the-webcam&quot;&gt;Step 3: Connect via Remote Desktop Client and forward the webcam&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/img/2022-01-30-configure_rdp.gif&quot; alt=&quot;Screen recording of the needed configuration&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;step-4-maybe-make-sure-that-you-can-in-fact-log-in&quot;&gt;Step 4 (maybe): Make sure that you can in fact log in&lt;/h2&gt;

&lt;p&gt;The above did not work for me. That is because I wasn’t able to log in to the VM
using any credentials I could provide to the Remote Desktop Client. However, I
was able to circumvent this my disabling logging in via the Remote Desktop
Client. Instead, I now log in within the RDP session. To do so, open the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.rdp&lt;/code&gt;
file with a text editor and add the following lines:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;enablecredsspsupport:i:0
authentication level:i:2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; I don’t have this sort of knowledge at my disposal. A kind coworker
found my other post and shared these two magic lines with me.&lt;/p&gt;
</description>
        <pubDate>Sun, 30 Jan 2022 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/tipsandtricks/2022/01/30/hyperv-webcam/</link>
        <guid isPermaLink="true">https://www.weimo.de/tipsandtricks/2022/01/30/hyperv-webcam/</guid>
        
        
        <category>TipsAndTricks</category>
        
      </item>
    
      <item>
        <title>Home Automation: What works for me</title>
        <description>&lt;p&gt;Home automation has been an interest of mine for a while. Here, I collect notes
on what worked for me. Both as a reminder for myself and in the hopes that it is
useful to others dabbling in the space. This is &lt;strong&gt;not a tutorial&lt;/strong&gt; for any of
the devices mentioned. There are plenty of those available on the internet.&lt;/p&gt;

&lt;!--more--&gt;

&lt;h2 id=&quot;the-core-home-assistant-on-a-raspberry-pi&quot;&gt;The core: Home Assistant on a RaspBerry Pi&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt; is a piece of software which serves as the controller of
my home. There are many reasons why it is great (OSS, easy to use, supports
anything under the sun, …), but one blew me away as soon as I started using
it: Home Assistant bridges the various IoT ecosystems. Within minutes of
installing it, I had my Hue light switch switch of the lights (duh!) but &lt;em&gt;also&lt;/em&gt;
switch off the music on my Sonos players. That is the sort of thing we expect
home automation to do. But without a connector between the various vendor
ecosystems, it is plain impossible.&lt;/p&gt;

&lt;p&gt;I run Home Assistant on a &lt;a href=&quot;https://www.raspberrypi.com/&quot;&gt;Raspberry Pi 4 (8 GB)&lt;/a&gt;. This is way too much
hardware for my use case. But for others, it may be way too little as Home
Assistant can also integrate surveillance cameras and do computer vision on
those feeds. My RaspBerry Pi is in a &lt;a href=&quot;https://flirc.tv/more/raspberry-pi-4-case&quot;&gt;flirc&lt;/a&gt; case and boots off of a MicroSD
card. For larger installations, it is probably better to use a USB SSD in e.g.
the &lt;a href=&quot;https://www.argon40.com/argon-one-m-2-case-for-raspberry-pi-4.html&quot;&gt;Argone 40 One case&lt;/a&gt;. I use that case for another Pi and can
recommend it. It is powered by the USB port of a APC backup battery and
connected via ethernet to my home network to maximize reliability.&lt;/p&gt;

&lt;h2 id=&quot;stuff-i-already-had&quot;&gt;Stuff I already had&lt;/h2&gt;

&lt;p&gt;Home Assistant found a bunch of devices and Services in my home that it automatically integrated with:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Hue Lights&lt;/li&gt;
  &lt;li&gt;Sonos Speakers&lt;/li&gt;
  &lt;li&gt;Xbox&lt;/li&gt;
  &lt;li&gt;Synology NAS&lt;/li&gt;
  &lt;li&gt;pfSense router&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;the-magic-zigbee-or-z-wave-devices&quot;&gt;The magic: Zigbee or Z-Wave devices&lt;/h2&gt;

&lt;p&gt;Home assistant can not only control devices on the local network, but also via
the common home automation mesh networks Zigbee and Z-Wave. I picked Zigbee,
mostly because I have the Hue bulbs already. They are Zigbee devices and provide
a strong backbone for the mesh network. Starting fresh, there are good reasons
for Z-Wave as well.&lt;/p&gt;

&lt;p&gt;To connect to these mesh networks, I use the well named
&lt;a href=&quot;https://www.amazon.com/gp/product/B01GJ826F8&quot;&gt;GoControl CECOMINOD016164 HUSBZB-1 USB Hub&lt;/a&gt;.
I found this product mentioned in one of the Home Assistant forums. It supports
both Zigbee and Z-Wave. I use only the Zigbee part of it. I haven’t done enough
research to judge whether this is the best or even good device. But it works for
me.&lt;/p&gt;

&lt;p&gt;With this device setup, I can connect sensors directly to Home Assistant without
using the vendor gateway. While this should work with the Hue lights, I have yet
to try it. Here are devices I was able to just use:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B07YDF7967&quot;&gt;Linkind Door Window Sensor&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B08BF9YQK1&quot;&gt;Sonoff SNZB-01 Zigbee Wireless Switch&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B08BFFJ69V&quot;&gt;Sonoff SNZB-03 ZigBee Motion Sensor&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B08BCJNDYQ&quot;&gt;Sonoff SNZB-02 ZigBee Mini Indoor Temperature and Humidity Sensor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(This list was last updated on 2022-01-11)&lt;/p&gt;
</description>
        <pubDate>Tue, 11 Jan 2022 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/homeautomation/2022/01/11/home_automation/</link>
        <guid isPermaLink="true">https://www.weimo.de/homeautomation/2022/01/11/home_automation/</guid>
        
        
        <category>HomeAutomation</category>
        
      </item>
    
      <item>
        <title>PerfGuard: deploying ML-for-systems without performance regressions, almost!</title>
        <description>&lt;p&gt;Remmelt Ammerlaan, Gilbert Antonius, Marc Friedman, H M Sajjad Hossain, Alekh Jindal, Peter Orenberg, Hiren Patel, Shi Qiao, Vijay Ramani, Lucas Rosenblatt, Abhishek Roy, Irene Shaffer, Soundarajan Srinivasan, &lt;strong&gt;Markus Weimer&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;abstract&quot;&gt;Abstract&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Modern data processing systems require optimization at massive scale, and
using machine learning to optimize these systems (ML-for-systems) has shown
promising results. Unfortunately, ML-for-systems is subject to over
generalizations that do not capture the large variety of workload patterns,
and tend to augment the performance of certain subsets in the workload while
regressing performance for others. In this paper, we introduce a performance
safeguard system, called PerfGuard, that designs pre-production experiments
for deploying ML-for-systems. Instead of searching the entire space of query
plans (a well-known, intractable problem), we focus on query plan deltas (a
significantly smaller space). PerfGuard formalizes these differences, and
correlates plan deltas to important feedback signals, like execution cost. We
describe the deep learning architecture and the end-to-end pipeline in
PerfGuard that could be used with general relational databases. We show that
this architecture improves on baseline models, and that our pipeline
identifies key query plan components as major contributors to plan disparity.
Offline experimentation shows PerfGuard as a promising approach, with many
opportunities for future improvement.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://www.weimo.de/files/pub/2021/2021-VLDB-PerfGuard&quot;&gt;Download PDF&lt;/a&gt;,
&lt;a href=&quot;https://dl.acm.org/doi/abs/10.14778/3484224.3484233&quot;&gt;ACM&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;/h2&gt;

&lt;div class=&quot;language-bibtex highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nc&quot;&gt;@article&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;10.14778/3484224.3484233&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;author&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{Ammerlaan, Remmelt and Antonius, Gilbert and Friedman, Marc and Hossain, H M   Sajjad and Jindal, Alekh and Orenberg, Peter and Patel, Hiren and Qiao, Shi and Ramani,   Vijay and Rosenblatt, Lucas and Roy, Abhishek and Shaffer, Irene and Srinivasan,   Soundarajan and Weimer, Markus}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;title&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{PerfGuard: Deploying ML-for-Systems without Performance Regressions, Almost!}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;year&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{2021}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;issue_date&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{September 2021}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;publisher&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{VLDB Endowment}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;volume&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{14}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;number&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{13}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;issn&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{2150-8097}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{https://doi.org/10.14778/3484224.3484233}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;doi&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{10.14778/3484224.3484233}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;abstract&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{Modern data processing systems require optimization at massive scale, and using   machine learning to optimize these systems (ML-for-systems) has shown promising results.   Unfortunately, ML-for-systems is subject to over generalizations that do not capture the   large variety of workload patterns, and tend to augment the performance of certain subsets   in the workload while regressing performance for others. In this paper, we introduce a   performance safeguard system, called PerfGuard, that designs pre-production experiments for   deploying ML-for-systems. Instead of searching the entire space of query plans (a   well-known, intractable problem), we focus on query plan deltas (a significantly smaller   space). PerfGuard formalizes these differences, and correlates plan deltas to important   feedback signals, like execution cost. We describe the deep learning architecture and the   end-to-end pipeline in PerfGuard that could be used with general relational databases. We   show that this architecture improves on baseline models, and that our pipeline identifies   key query plan components as major contributors to plan disparity. Offline experimentation   shows PerfGuard as a promising approach, with many opportunities for future improvement.}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;journal&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{Proc. VLDB Endow.}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;month&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{sep}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;pages&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{3362–3375}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;numpages&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{14}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
        <pubDate>Wed, 15 Sep 2021 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/publication/2021/09/15/VLDB-PerfGuard/</link>
        <guid isPermaLink="true">https://www.weimo.de/publication/2021/09/15/VLDB-PerfGuard/</guid>
        
        
        <category>Publication</category>
        
      </item>
    
      <item>
        <title>FLAML: A Fast and Lightweight AutoML Library</title>
        <description>&lt;p&gt;Chi Wang, Qingyun Wu, &lt;strong&gt;Markus Weimer&lt;/strong&gt;, Erkang Zhu&lt;/p&gt;

&lt;h2 id=&quot;abstract&quot;&gt;Abstract&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;We study the problem of using low computational cost to automate the choices
of learners and hyperparameters for an ad-hoc training dataset and error
metric, by conducting trials of different configurations on the given training
data. We investigate the joint impact of multiple factors on both trial cost
and model error, and propose several design guidelines. Following them, we
build a fast and lightweight library FLAML which optimizes for low
computational resource in finding accurate models. FLAML integrates several
simple but effective search strategies into an adaptive system. It
significantly outperforms top-ranked AutoML libraries on a large open source
AutoML benchmark under equal, or sometimes orders of magnitude smaller budget
constraints.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&quot;https://www.weimo.de/files/pub/2021/2021-MLSYS-FLAML.pdf&quot;&gt;Download PDF&lt;/a&gt;,
&lt;a href=&quot;https://proceedings.mlsys.org/paper/2021/hash/92cc227532d17e56e07902b254dfad10-Abstract.html&quot;&gt;MLSYS&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;bibtex&quot;&gt;BibTeX&lt;/h2&gt;

&lt;div class=&quot;language-bibtex highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nc&quot;&gt;@inproceedings&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;MLSYS2021_92cc2275&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;na&quot;&gt;author&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{Wang, Chi and Wu, Qingyun and Weimer, Markus and Zhu, Erkang}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;na&quot;&gt;booktitle&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{Proceedings of Machine Learning and Systems}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;na&quot;&gt;editor&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{A. Smola and A. Dimakis and I. Stoica}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;na&quot;&gt;pages&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{434--447}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;na&quot;&gt;title&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{FLAML: A Fast and Lightweight AutoML Library}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;na&quot;&gt;url&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{https://proceedings.mlsys.org/paper/2021/file/92cc227532d17e56e07902b254dfad10-Paper.pdf}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;na&quot;&gt;volume&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{3}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
 &lt;span class=&quot;na&quot;&gt;year&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;{2021}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
</description>
        <pubDate>Thu, 15 Apr 2021 00:00:00 +0000</pubDate>
        <link>https://www.weimo.de/publication/2021/04/15/MLSYS-FLAML/</link>
        <guid isPermaLink="true">https://www.weimo.de/publication/2021/04/15/MLSYS-FLAML/</guid>
        
        
        <category>Publication</category>
        
      </item>
    
  </channel>
</rss>
