<?xml version="1.0" encoding="utf-8"?>

<feed xmlns="http://www.w3.org/2005/Atom">
<title>Tyler Cipriani: blog</title>
<link href="https://tylercipriani.com/blog/"/>
<link href="https://tylercipriani.com/blog/index.atom" rel="self" type="application/atom+xml"/>
<author>

<name>Tyler Cipriani</name>

</author>




<id>https://tylercipriani.com/blog/</id>

<subtitle type="html">Tyler Cipriani</subtitle>
<generator uri="http://ikiwiki.info/">ikiwiki</generator>
<updated>2022-12-24T02:34:00Z</updated>
<entry>
	<title>Writing raft</title>

	<id>https://tylercipriani.com/blog/2022/12/21/writing-raft/</id>

	<link href="https://tylercipriani.com/blog/2022/12/21/writing-raft/"/>

	<author><name>Tyler Cipriani</name></author>


	<rights type="html" xml:lang="en">

		Copyright © 2022 Tyler Cipriani

	</rights>


	<updated>2022-12-24T02:34:00Z</updated>
	<published>2022-12-21T01:30:25Z</published>


	<content type="html" xml:lang="en">
	&lt;p&gt;✏️⚡🔪&lt;br&gt;The club that’s write or die.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you want to be a writer, you must do two things above all others:
read a lot and write a lot.&lt;/p&gt;
&lt;p&gt;– Stephen King, “On Writing”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In 2022, I made a &lt;a
href=&quot;https://en.wikipedia.org/wiki/Ulysses_pact&quot;&gt;Ulysses pact&lt;/a&gt; to
force myself to write—either write or feel the white-hot shame of
(temporary) banishment.&lt;/p&gt;
&lt;p&gt;And it worked.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I wrote more blog posts in 2022 than in any previous
year—more than the last three years combined.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I eked out two blog posts a month, every month, for the whole of last
year. And I owe much of my success to my write-or-die crew—the writing
raft.&lt;/p&gt;
&lt;section id=&quot;what-is-a-writing-raft&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;⛵ What is a writing raft?&lt;/h2&gt;
&lt;p&gt;First proposed by &lt;a href=&quot;https://shime.sh/raft&quot;&gt;Hrvoje Šimić&lt;/a&gt;, a
writing raft is &lt;strong&gt;a club that forces you to write&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The rules are simple:&lt;/p&gt;
&lt;ol type=&quot;1&quot;&gt;
&lt;li&gt;You must publish a blog post by the end of the month.&lt;/li&gt;
&lt;li&gt;If you do not publish on time, you’re out of the club (for a
month).&lt;/li&gt;
&lt;li&gt;The club is limited to 5 members.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;https://filipin.eu/&quot;&gt;Željko Filipin&lt;/a&gt; conceived of our
little &lt;a href=&quot;https://en.wikipedia.org/wiki/Junto_(club)&quot;&gt;Junto&lt;/a&gt;
towards the &lt;a href=&quot;https://phabricator.wikimedia.org/T263660&quot;&gt;end of
2020&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today we have three members: Me, Željko, and &lt;a
href=&quot;https://www.kostaharlan.net/&quot;&gt;Kosta Harlan&lt;/a&gt;. And as of December
2022, &lt;strong&gt;the three of us have managed to stay on our raft for one.
full. year&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In honor of this milestone, we’re all posting about lessons we
learned over the past 12 months.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;lessons-from-a-year-of-writing&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;🍎 Lessons from a year of writing&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Blogs should be easy to read.&lt;/strong&gt; In 1997, Jakob Nielsen
succinctly summarized “&lt;a
href=&quot;https://www.nngroup.com/articles/how-users-read-on-the-web/&quot;&gt;How
Users Read on the Web&lt;/a&gt;”: &lt;strong&gt;“They don’t.”&lt;/strong&gt; I use short
sentences and omit needless words. And I try to make my blogs
&lt;strong&gt;look&lt;/strong&gt; easy to read to keep readers moving.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Get to the point.&lt;/strong&gt; Nobody has time for
throat-clearing—&lt;a
href=&quot;https://en.wikipedia.org/wiki/Inverted_pyramid_(journalism)&quot;&gt;start
with your point&lt;/a&gt;. If you need more details, add them later.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your unconscious mind is a better writer than you.&lt;/strong&gt;
Writing and publishing on the same day used to be my habit. Now, I let
my rough drafts sit for a day. And I often wake up with a better idea,
clearer point, or different direction—even if nobody gives me feedback.
My unconscious mind was working on my writing the whole time.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The core question is not how you do math but how does the unconscious
do it. How is it that it’s demonstrably better at it than you are?&lt;/p&gt;
&lt;p&gt;– Cormac McCarthy, “Stella Maris”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Practice in public. It’s the fastest way to improve.&lt;/strong&gt;
Another deal I made with myself this year is that after I publish a
post, I must link it somewhere online.&lt;/p&gt;
&lt;p&gt;Internet strangers are a fickle crowd, which makes them a great
litmus test for your writing. If a post generates nothing but
silence—why not tweak it?&lt;/p&gt;
&lt;p&gt;Figure out how to say it better and try again. And try to learn
something for next time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Peer pressure is a tool.&lt;/strong&gt; The writing raft has shown
me: I need someone to notice if I skip a month of writing. Writing the
&lt;a
href=&quot;https://wrd.as.uky.edu/sites/default/files/1-Shitty%20First%20Drafts.pdf&quot;&gt;first
draft&lt;/a&gt; is painful. Knowing I have a deadline keeps me moving through
the pain.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And conclusions&lt;/strong&gt;. I’m so bad at conclusions. But I’m
working on it &lt;code&gt;¯\_(ツ)_/¯&lt;/code&gt;.&lt;/p&gt;
&lt;hr /&gt;
&lt;ul&gt;
&lt;li&gt;Kosta’s post: &lt;a
href=&quot;https://www.kostaharlan.net/posts/a-year-of-writing-club/&quot;&gt;A year
of writing club&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Željko’s post: &lt;a
href=&quot;https://filipin.eu/two-years-of-blog-post-writing-club&quot;&gt;Two years
of blog post writing club&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;

	</content>


	<link rel="comments" href="//tylercipriani.com/blog/2022/12/21/writing-raft/#comments" type="text/html" />


	<link rel="comments" href="//tylercipriani.com/blog/2022/12/21/writing-raft/comments.atom" type="application/atom+xml" />

</entry>
<entry>
	<title>Home temperature monitoring on the cheap</title>

	<id>https://tylercipriani.com/blog/2022/11/30/home-temperature-monitoring-on-the-cheap/</id>

	<link href="https://tylercipriani.com/blog/2022/11/30/home-temperature-monitoring-on-the-cheap/"/>

	<author><name>Tyler Cipriani</name></author>


	<rights type="html" xml:lang="en">

		Copyright © 2022 Tyler Cipriani

	</rights>



	<category term="computing" />


	<updated>2022-12-01T03:26:08Z</updated>
	<published>2022-12-01T01:05:02Z</published>


	<content type="html" xml:lang="en">
	&lt;blockquote&gt;
&lt;p&gt;One accurate measurement is worth a thousand expert opinions&lt;/p&gt;
&lt;p&gt;– Grace Hopper&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;
&lt;img
src=&quot;https://photos.tylercipriani.com/thumbs/29/572c7a17b2370f5a2a9e3b32760166/large.jpg&quot;
alt=&quot;One of my many AcuRite 06044M Wireless Temperature and Humidity Monitor Sensors&quot; /&gt;
&lt;figcaption aria-hidden=&quot;true&quot;&gt;One of my many AcuRite 06044M Wireless
Temperature and Humidity Monitor Sensors&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;As I meandered around our new house, it was apparent some rooms were
sweltering, others were freezing, and the thermostat was lying about
everything.&lt;/p&gt;
&lt;p&gt;I could &lt;strong&gt;feel&lt;/strong&gt; it.&lt;/p&gt;
&lt;p&gt;But I felt compelled to &lt;strong&gt;measure&lt;/strong&gt; it. I was struck by
the need to know:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The temperature of each room&lt;/li&gt;
&lt;li&gt;How it changed throughout the day&lt;/li&gt;
&lt;li&gt;And how to monitor changes over time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And I fulfilled my weird compulsion with a few simple tools:&lt;/p&gt;
&lt;ol type=&quot;1&quot;&gt;
&lt;li&gt;Cheap temperature and humidity sensors from Home Depot&lt;/li&gt;
&lt;li&gt;Home Assistant&lt;/li&gt;
&lt;li&gt;The original internet of things protocol: radio.&lt;/li&gt;
&lt;/ol&gt;
&lt;section id=&quot;cheap-temperature-sensors&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;Cheap temperature sensors&lt;/h2&gt;
&lt;figure&gt;
&lt;img
src=&quot;https://photos.tylercipriani.com/thumbs/a8/92ab5b5fa2723e87cab3c833b53dad/large.jpg&quot;
alt=&quot;My rtl-sdr.com-branded rtl2832u dvb-t dongle I’ve had since 2013&quot; /&gt;
&lt;figcaption aria-hidden=&quot;true&quot;&gt;My rtl-sdr.com-branded rtl2832u dvb-t
dongle I’ve had since 2013&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I have a handful of &lt;a
href=&quot;https://www.amazon.com/gp/product/B01G7BE9WK/ref=ox_sc_act_title_1?smid=ATVPDKIKX0DER&amp;amp;th=1&quot;&gt;AcuRite
sensors&lt;/a&gt; sprinkled throughout my house.&lt;/p&gt;
&lt;p&gt;These sensors are $16 today, but I bought mine around 2017 for $12
each at Home Depot.&lt;/p&gt;
&lt;p&gt;I know I could cobble together a cheaper temperature sensor:&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr class=&quot;odd&quot;&gt;
&lt;td&gt;&lt;a href=&quot;https://www.aliexpress.com/item/32678741657.html&quot;&gt;SHT30&lt;/a&gt;
temperature/humidity sensor&lt;/td&gt;
&lt;td style=&quot;text-align: left;&quot;&gt;$1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;even&quot;&gt;
&lt;td&gt;&lt;a
href=&quot;https://www.aliexpress.com/item/1005004005586872.html&quot;&gt;WeMos
esp8266&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: left;&quot;&gt;$5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;odd&quot;&gt;
&lt;td&gt;&lt;a href=&quot;https://aliexpress.com/item/32800979738.html&quot;&gt;D1Mini OLED
screen&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: left;&quot;&gt;$2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;even&quot;&gt;
&lt;td&gt;Shipping&lt;/td&gt;
&lt;td style=&quot;text-align: left;&quot;&gt;~$2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;odd&quot;&gt;
&lt;td&gt;A month of waiting for shipping&lt;/td&gt;
&lt;td style=&quot;text-align: left;&quot;&gt;priceless&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;So for like $10 + solder + a weekend fiddling, you could make a
craptastic internet-equipped temperature/humidity sensor.&lt;/p&gt;
&lt;p&gt;But I dreaded building it.&lt;/p&gt;
&lt;p&gt;Tinkering with electronic doodads is a fun hobby. But I just wanted
something cheapish that would work.&lt;/p&gt;
&lt;p&gt;And the AcuRites work.&lt;/p&gt;
&lt;p&gt;Plus, the AcuRites work forever on a couple AAAs because they eschew
power-hungry wifi in favor of squawking data on 433 MHz.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;mhz-the-original-iot-protocol&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;433 MHz, the original IoT protocol&lt;/h2&gt;
&lt;p&gt;Even though 433.92 MHz sits squarely in the 70cm ham band, tons of
electronic junk spews signals on that frequency.&lt;/p&gt;
&lt;p&gt;And with a &lt;a
href=&quot;https://www.amazon.com/NooElec-NESDR-Mini-Compatible-Packages/dp/B009U7WZCA/ref=sr_1_6&quot;&gt;$25
USB dongle&lt;/a&gt; and &lt;a
href=&quot;https://github.com/merbanan/rtl_433/blob/6e1f120212005a5549dc184d9cd18002d49fdd10/src/devices/acurite.c#L974&quot;&gt;free
software&lt;/a&gt;, it’s easy to decode messages chirped out by your AcuRite
temperature sensors.&lt;/p&gt;
&lt;p&gt;So far, this project had been cheap and simple. But the next step,
gathering the data into a time-series database, required more fiddling
than I’d expected.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;home-assistant-mqtt-prometheus-and-grafana.&quot;
class=&quot;level2&quot;&gt;
&lt;h2&gt;Home Assistant, MQTT, Prometheus, and Grafana.&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://photos.tylercipriani.com/2022-11-30_rtl-433.png&quot;
alt=&quot;rtl_433’s commandline output&quot; /&gt; &lt;img
src=&quot;https://photos.tylercipriani.com/2022-11-30_house-temp.png&quot;
alt=&quot;Grafana graph of rooms of my house&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It was a pain to get &lt;code&gt;rtl_433&lt;/code&gt; data into Home
Assistant.&lt;/p&gt;
&lt;p&gt;Maybe I’m missing something. But I ended up with a more complex
system than I wanted:&lt;/p&gt;
&lt;ol type=&quot;1&quot;&gt;
&lt;li&gt;a systemd unit running rtl_433 with syslog output over UDP:
&lt;code&gt;rtl_433 -F syslog:127.0.0.1:1433&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;a systemd unit relaying and filtering syslog output to MQTT (based
on &lt;a
href=&quot;https://github.com/merbanan/rtl_433/blob/54f0ebe4865327f89452d8e30ecb4c02fde065ae/examples/rtl_433_mqtt_relay.py&quot;&gt;this
upstream example&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;a systemd timer to restart rtl_433 when it unexpectedly hangs
(often)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After endless fiddling, the relay has an uptime measured in
months—it’s stable.&lt;/p&gt;
&lt;p&gt;From there, pushing data to Home Assistant, exposing it via the &lt;a
href=&quot;https://www.home-assistant.io/integrations/prometheus/&quot;&gt;Prometheus&lt;/a&gt;
plugin, and graphing it with Grafana was a breeze.&lt;/p&gt;
&lt;p&gt;Given all this work I’m happy to confirm what I’d long suspected:
&lt;strong&gt;some rooms in my house are hot while others are
cold&lt;/strong&gt;.&lt;/p&gt;
&lt;/section&gt;

	</content>


	<link rel="comments" href="//tylercipriani.com/blog/2022/11/30/home-temperature-monitoring-on-the-cheap/#comments" type="text/html" />


	<link rel="comments" href="//tylercipriani.com/blog/2022/11/30/home-temperature-monitoring-on-the-cheap/comments.atom" type="application/atom+xml" />

</entry>
<entry>
	<title>Git Notes: git&#x27;s coolest, most&#xA0;unloved&#xAD;&#xA0;feature</title>

	<id>https://tylercipriani.com/blog/2022/11/19/git-notes-gits-coolest-most-unloved-feature/</id>

	<link href="https://tylercipriani.com/blog/2022/11/19/git-notes-gits-coolest-most-unloved-feature/"/>

	<author><name>Tyler Cipriani</name></author>


	<rights type="html" xml:lang="en">

		Copyright © 2022 Tyler Cipriani

	</rights>



	<category term="computing" />


	<updated>2022-11-27T20:11:22Z</updated>
	<published>2022-11-19T22:43:37Z</published>


	<content type="html" xml:lang="en">
	&lt;blockquote&gt;
&lt;p&gt;the short of it is: they’re cool for appending notes from automated
systems (like ticket or build systems) but not really for having
interactive conversations with other developers (at least not yet)&lt;/p&gt;
&lt;p&gt;– Scott Chacon, &lt;a
href=&quot;https://github.blog/2010-08-25-git-notes-display/&quot;&gt;GitHub.blog&lt;/a&gt;,
Aug. 2010&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Git notes are almost a secret.&lt;/p&gt;
&lt;p&gt;They’re buried by their own distressing usability.&lt;/p&gt;
&lt;p&gt;But git notes are continually rediscovered by engineers trying to
stash metadata inside git.&lt;/p&gt;
&lt;figure&gt;
&lt;img
src=&quot;https://photos.tylercipriani.com/2022-10-30_simonw-git-notes.png&quot;
alt=&quot;Sun, 30 Oct 2022 11:05 @simonw&quot; /&gt;
&lt;figcaption aria-hidden=&quot;true&quot;&gt;Sun, 30 Oct 2022 11:05 &lt;a
href=&quot;https://twitter.com/simonw/status/1586766260842266625&quot;&gt;&lt;span
class=&quot;citation&quot; data-cites=&quot;simonw&quot;&gt;@simonw&lt;/span&gt;&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Git notes are powerful tools.&lt;/strong&gt; And they could solve
so many problems—if only they were better known and easier to use.&lt;/p&gt;
&lt;section id=&quot;what-are-git-notes&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;&lt;span&gt;🧐&lt;/span&gt; What are git notes?&lt;/h2&gt;
&lt;p&gt;A common use of git notes is tacking metadata onto commits.&lt;/p&gt;
&lt;p&gt;Once a commit cements itself in git’s history—that’s it. It’s
impossible to amend a commit message buried deep in a repo’s log&lt;a
href=&quot;https://tylercipriani.com/blog/#fn1&quot; class=&quot;footnote-ref&quot; id=&quot;fnref1&quot;
role=&quot;doc-noteref&quot;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But git notes enable you to amend new information about old commits
in a special namespace. And they’re capable of so much more.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes stow metadata about anything tracked by
git&lt;/strong&gt;—any object: commits, blobs, and trees. All without futzing
with the object itself.&lt;/p&gt;
&lt;p&gt;You add notes to the latest commit in a repo like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git notes add -m &amp;#39;Acked-by: &amp;lt;tyler@tylercipriani.com&amp;gt;&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then it shows up in &lt;code&gt;git log&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;commit 1ef8b30ab7fc218ccc85c9a6411b1d2dd2925a16
Author: Tyler Cipriani &amp;lt;thcipriani@gmail.com&amp;gt;
Date:   Thu Nov 17 16:51:43 2022 -0700

    Initial commit

    Notes:
        Acked-by: &amp;lt;tyler@tylercipriani.com&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/section&gt;
&lt;section id=&quot;git-notes-in-the-wild&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;&lt;span&gt;🥾&lt;/span&gt; Git notes in the wild&lt;/h2&gt;
&lt;p&gt;The git project itself offers an example of git notes in the wild.
They link each commit to its discussion on their mailing list.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;commit 00f09d0e4b1826ee0519ea64e919515032966450
Author: &amp;lt;redacted&amp;gt;
Date:   Thu Jan 28 02:05:55 2010 +0100

    bash: support &amp;#39;git notes&amp;#39; and its subcommands
    ...

Notes (amlog):
    Message-Id: &amp;lt;1264640755-22447-1-git-send-email-szeder@ira.uka.de&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This commit’s notes point intrepid users to the &lt;a
href=&quot;https://lore.kernel.org/git/1264640755-22447-1-git-send-email-szeder@ira.uka.de/&quot;&gt;thread
where this patch was discussed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Other folks are using notes for things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tracking time spent per commit or branch&lt;/li&gt;
&lt;li&gt;Adding review and testing information to git log&lt;/li&gt;
&lt;li&gt;And even fully distributed code review&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id=&quot;storing-code-reviews-and-test-results-in-git-notes&quot;
class=&quot;level2&quot;&gt;
&lt;h2&gt;&lt;span&gt;📦&lt;/span&gt; Storing code reviews and test results in git
notes&lt;/h2&gt;
&lt;p&gt;Here is a plea for all forges: make code review metadata available
offline, inside git.&lt;/p&gt;
&lt;p&gt;The &lt;a
href=&quot;https://gerrit.googlesource.com/plugins/reviewnotes/+/refs/heads/master/src/main/resources/Documentation/refs-notes-review.md&quot;&gt;reviewnotes&lt;/a&gt;
plugin for Gerrit&lt;a href=&quot;https://tylercipriani.com/blog/#fn2&quot; class=&quot;footnote-ref&quot; id=&quot;fnref2&quot;
role=&quot;doc-noteref&quot;&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; is an example of how to do this
well. It makes it easy to see who reviewed code in git log:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git fetch origin refs/notes/review:refs/notes/review
git log --show-notes=review&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The command above shows me all the standard git log info alongside
information about what tests ran and who reviewed the code. All without
forcing me into my browser.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;commit d1d17908d2a97f057887a4afbd99f6c40be56849
Author: User &amp;lt;user@example.com&amp;gt;
Date:   Sun Mar 27 18:10:51 2022 +0200

    Change the thing

Notes (review):
    Verified+1: SonarQube Bot
    Verified+2: jenkins-bot
    Code-Review+2: Reviewer Human &amp;lt;reviewerhuman@wikimedia.org&amp;gt;
    Submitted-by: jenkins-bot
    Submitted-at: Tue, 14 Jun 2022 21:59:58 +0000
    Reviewed-on: https://gerrit.wikimedia.org/r/c/mediawiki/core/+/774005
    Project: mediawiki/core
    Branch: refs/heads/master&lt;/code&gt;&lt;/pre&gt;
&lt;/section&gt;
&lt;section id=&quot;distributed-code-review-inside-git-notes&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;&lt;span&gt;💠&lt;/span&gt; Distributed code review &lt;u&gt;inside&lt;/u&gt; git notes&lt;/h2&gt;
&lt;p&gt;Motivated hackers can knead and extend git notes. Using them as
distributed storage for any madcap idea.&lt;/p&gt;
&lt;p&gt;Someone at Google cobbled together a full-on code review system
teetering atop git notes called &lt;a
href=&quot;https://github.com/google/git-appraise&quot;&gt;git-appraise&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Its authors have declared it a “fully distributed code
review”—independent of GitHub, GitLab, or any other code forge.&lt;/p&gt;
&lt;p&gt;This system lets you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Request review of a change&lt;/li&gt;
&lt;li&gt;Comment on a change&lt;/li&gt;
&lt;li&gt;Review and merge a change&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And you can do all this from your local computer, even if GitHub is
down.&lt;/p&gt;
&lt;p&gt;Plus, it’s equipped with an affectedly unaesthetic web interface, if
that’s your thing.&lt;/p&gt;
&lt;figure&gt;
&lt;img
src=&quot;https://photos.tylercipriani.com/2022-11-27_git-appraise-web.png&quot;
alt=&quot;The git-appraise web interface, in all its NaN-line-numbering glory.&quot; /&gt;
&lt;figcaption aria-hidden=&quot;true&quot;&gt;The git-appraise web interface, in all
its NaN-line-numbering glory.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/section&gt;
&lt;section id=&quot;no-one-uses-git-notes&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;&lt;span&gt;😭&lt;/span&gt; No one uses git notes&lt;/h2&gt;
&lt;p&gt;Git notes are a pain to use.&lt;/p&gt;
&lt;p&gt;And GitHub &lt;a
href=&quot;https://github.blog/2010-08-25-git-notes-display/&quot;&gt;opted to stop
displaying commit notes in 2014&lt;/a&gt; without much explanation.&lt;/p&gt;
&lt;p&gt;For commits, you can make viewing and adding notes easier using fancy
options in your gitconfig&lt;a href=&quot;https://tylercipriani.com/blog/#fn3&quot; class=&quot;footnote-ref&quot; id=&quot;fnref3&quot;
role=&quot;doc-noteref&quot;&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt;. But for storing notes about blobs
or trees? Forget it. You’d need to be comfortable rooting around in
git’s &lt;a
href=&quot;https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain&quot;&gt;plumbing&lt;/a&gt;
first.&lt;/p&gt;
&lt;p&gt;So, for now: &lt;strong&gt;git notes are relegated to obscurity&lt;/strong&gt;.
Forever hamstrung by an obscure and clunky interface and limited
adoption—I often forget they’re there.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;forge-independence&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;&lt;span&gt;🗽&lt;/span&gt; Forge independence&lt;/h2&gt;
&lt;p&gt;Git is a distributed code review system. But much of the value of git
repos ends up locked into forges, like GitHub.&lt;/p&gt;
&lt;p&gt;Git notes are a path toward an alternative.&lt;/p&gt;
&lt;p&gt;Git distributes the history of a piece of code. &lt;strong&gt;Git notes
could make it possible to distribute the history of an entire
project.&lt;/strong&gt;&lt;/p&gt;
&lt;/section&gt;
&lt;section class=&quot;footnotes footnotes-end-of-document&quot;
role=&quot;doc-endnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;
&lt;li id=&quot;fn1&quot; role=&quot;doc-endnote&quot;&gt;&lt;p&gt;Without having to endure the &lt;a
href=&quot;https://groups.google.com/g/jenkinsci-dev/c/-myjRIPcVwU/m/mrwn8VkyXagJ&quot;&gt;perils
of a force push&lt;/a&gt;, anyway.&lt;a href=&quot;https://tylercipriani.com/blog/#fnref1&quot; class=&quot;footnote-back&quot;
role=&quot;doc-backlink&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&quot;fn2&quot; role=&quot;doc-endnote&quot;&gt;&lt;p&gt;The code review system used for &lt;a
href=&quot;https://gerrit.wikimedia.org/r/&quot;&gt;a&lt;/a&gt; &lt;a
href=&quot;https://go-review.googlesource.com/&quot;&gt;couple&lt;/a&gt; of &lt;a
href=&quot;https://android-review.googlesource.com/&quot;&gt;bigish&lt;/a&gt; &lt;a
href=&quot;https://chromium-review.googlesource.com/&quot;&gt;projects&lt;/a&gt;.&lt;a
href=&quot;https://tylercipriani.com/blog/#fnref2&quot; class=&quot;footnote-back&quot; role=&quot;doc-backlink&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li id=&quot;fn3&quot; role=&quot;doc-endnote&quot;&gt;&lt;p&gt;Noteably by automagically fetching
notes and displaying them in &lt;code&gt;git log&lt;/code&gt; via:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ git config --add \
remote.origin.fetch \
&amp;#39;+refs/notes/*:refs/notes/*&amp;#39;
$ git config \
notes.displayRef \
&amp;#39;refs/notes/*&amp;#39;&lt;/code&gt;&lt;/pre&gt;
&lt;a href=&quot;https://tylercipriani.com/blog/#fnref3&quot; class=&quot;footnote-back&quot; role=&quot;doc-backlink&quot;&gt;↩︎&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;

	</content>


	<link rel="comments" href="//tylercipriani.com/blog/2022/11/19/git-notes-gits-coolest-most-unloved-feature/#comments" type="text/html" />


	<link rel="comments" href="//tylercipriani.com/blog/2022/11/19/git-notes-gits-coolest-most-unloved-feature/comments.atom" type="application/atom+xml" />

</entry>
<entry>
	<title>A tech lead guide to manager powers &#x1F9D9;</title>

	<id>https://tylercipriani.com/blog/2022/10/31/a-tech-lead-guide-to-manager-powers/</id>

	<link href="https://tylercipriani.com/blog/2022/10/31/a-tech-lead-guide-to-manager-powers/"/>

	<author><name>Tyler Cipriani</name></author>


	<rights type="html" xml:lang="en">

		Copyright © 2022 Tyler Cipriani

	</rights>



	<category term="work" />


	<updated>2022-11-01T04:14:29Z</updated>
	<published>2022-10-31T22:20:16Z</published>


	<content type="html" xml:lang="en">
	&lt;blockquote&gt;
&lt;p&gt;It took me two years as a manager to reach the “leadership is lonely”
phase.&lt;/p&gt;
&lt;p&gt;– Will Larson, An Elegant Puzzle&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When you jump from tech lead to manager: things change.&lt;/p&gt;
&lt;p&gt;Your deep understanding of the system evaporates and becomes shallow.
You’ll stop writing all the critical code. Your focus will shift.&lt;/p&gt;
&lt;p&gt;But for me the weirdest change was everyone treating me like a
manager all the time.&lt;/p&gt;
&lt;section id=&quot;managers-are-leaders-with-awkward-power&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;Managers are leaders with awkward power 😬&lt;/h2&gt;
&lt;p&gt;The transition from tech lead to manager is awkward.&lt;/p&gt;
&lt;p&gt;You know the work of the team as well as anyone.&lt;/p&gt;
&lt;p&gt;But moving to management grants you special powers—all new and
unfamiliar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You’ll set &lt;strong&gt;team goals and vision&lt;/strong&gt; for the
future&lt;/li&gt;
&lt;li&gt;You get to make &lt;strong&gt;hiring decisions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;You hold a &lt;strong&gt;budget&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;You &lt;strong&gt;organize special events&lt;/strong&gt; (and maybe day-to-day
events, depending on the support you have)&lt;/li&gt;
&lt;li&gt;You get to talk to the organization’s &lt;strong&gt;leadership&lt;/strong&gt;
more often than most on your team&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are superpowers. You should relish these opportunities—you’re
empowered to contribute to the team like no one else can.&lt;/p&gt;
&lt;p&gt;But your new powers may leave your team uneasy. And if you fail to
reckon with this new power imbalance, you risk alienating people.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;never-make-folks-worry-about-their-livelihood&quot;
class=&quot;level2&quot;&gt;
&lt;h2&gt;Never make folks worry about their livelihood 😟&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;The second you became their manager you forfeited the right to joke
around in any capacity about their employment at the company.&lt;/p&gt;
&lt;p&gt;– &lt;a
href=&quot;https://staysaasy.com/engineering/2020/06/09/Don%27t-Joke.html&quot;&gt;Stay
SaaSy&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can hire, and you can fire. This Sword of Damocles now dangles
over your relationships as a manager.&lt;/p&gt;
&lt;p&gt;“Oh, what’s the worst that can happen? We all get fired?” has ceased
to be light-hearted banter.&lt;/p&gt;
&lt;p&gt;Folks might laugh, but it leaves lingering doubt. And doubts chip
away at the trust teams need to do their job.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;contentless-pings-from-managers-are-scary&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;Contentless pings from managers are scary 😱&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;It may seem trivial, but asking your question before getting that
initial salutatory reply also allows for asynchronous communication.&lt;/p&gt;
&lt;p&gt;– &lt;a href=&quot;https://nohello.net/&quot;&gt;no hello&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now that you’re a manager, your &lt;a
href=&quot;https://github.com/lamby/contentless-ping/blob/master/contentless_ping.pl&quot;&gt;contentless
pings&lt;/a&gt; have transformed from annoying to panic-inducing.&lt;/p&gt;
&lt;p&gt;Sure, you should avoid saying nothing but “hi!” to someone in a
direct message.&lt;/p&gt;
&lt;p&gt;But you should never, ever say something like, “Do you have a minute
to jump on a call?” without context.&lt;/p&gt;
&lt;p&gt;“Do you have a minute to talk?” from your boss, out of nowhere,
immediately sets people’s minds racing.&lt;/p&gt;
&lt;p&gt;Is this about my project? Something with the budget? A policy change?
A change to my benefits? Am I being fired?&lt;/p&gt;
&lt;p&gt;Your manager powers will wreak havoc on people who tend to
catastrophize.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;youre-the-decider&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;You’re the decider ☑️&lt;/h2&gt;
&lt;p&gt;People expect you to be the decider. Even for small stuff.&lt;/p&gt;
&lt;p&gt;Folks may even be unaware they have this expectation.&lt;/p&gt;
&lt;p&gt;But it applies to everything from team vision to where we’re eating
dinner at the offsite. You can and should delegate decisions, but you
can’t abdicate.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;clarity-is-key&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;Clarity is key 🔑&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Clear is kind. Unclear is unkind.&lt;/p&gt;
&lt;p&gt;– Brené Brown, &lt;a
href=&quot;https://brenebrown.com/articles/2018/10/15/clear-is-kind-unclear-is-unkind/&quot;&gt;Dare
to Lead&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;When you leap from tech lead to manager, you have to learn about
people.&lt;/p&gt;
&lt;p&gt;And what people need most from you is clarity.&lt;/p&gt;
&lt;p&gt;So instead of striving to be liked, or striving to be funny: you
should strive to be clear.&lt;/p&gt;
&lt;/section&gt;

	</content>


	<link rel="comments" href="//tylercipriani.com/blog/2022/10/31/a-tech-lead-guide-to-manager-powers/#comments" type="text/html" />


	<link rel="comments" href="//tylercipriani.com/blog/2022/10/31/a-tech-lead-guide-to-manager-powers/comments.atom" type="application/atom+xml" />

</entry>
<entry>
	<title>f.lux, but for your house</title>

	<id>https://tylercipriani.com/blog/2022/10/17/whole-house-circadian-lighting-with-home-assistant/</id>

	<link href="https://tylercipriani.com/blog/2022/10/17/whole-house-circadian-lighting-with-home-assistant/"/>

	<author><name>Tyler Cipriani</name></author>


	<rights type="html" xml:lang="en">

		Copyright © 2022 Tyler Cipriani

	</rights>



	<category term="computing" />


	<updated>2022-10-18T21:35:21Z</updated>
	<published>2022-10-17T19:10:21Z</published>


	<content type="html" xml:lang="en">
	&lt;blockquote&gt;
&lt;p&gt;Artificial lighting is omnipresent in contemporary society with
disruptive consequences for human sleep&lt;/p&gt;
&lt;p&gt;– Sarah L Chellappa, &lt;a
href=&quot;https://doi.org/10.1093/sleep/zsaa214&quot;&gt;https://doi.org/10.1093/sleep/zsaa214&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;figure&gt;
&lt;img
src=&quot;https://photos.tylercipriani.com/thumbs/e3/bca0651e47a7d6aed643f9560bdd5c/large.jpg&quot;
alt=&quot;Night &amp;amp; Day – 🌛 left-side is 18:14 MDT (light color @ 2600 K); 🌞 right-side is 15:20 MDT (light color @ 4900 K)&quot; /&gt;
&lt;figcaption aria-hidden=&quot;true&quot;&gt;Night &amp;amp; Day – 🌛 left-side is 18:14
MDT (light color @ 2600 K); 🌞 right-side is 15:20 MDT (light color @
4900 K)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Light messes with my sleep, mood, and alertness.&lt;/p&gt;
&lt;p&gt;My house lights should auto-adjust themselves—like &lt;a
href=&quot;https://justgetflux.com/&quot;&gt;f.lux&lt;/a&gt; or &lt;a
href=&quot;http://jonls.dk/redshift/&quot;&gt;redshift&lt;/a&gt; on my laptop:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🌞 White/Blue, bright light during the day&lt;/li&gt;
&lt;li&gt;🌛 Red/Yellow, dim light at night&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was worried that getting this to work for my whole house meant
endless fiddling with &lt;a
href=&quot;https://twitter.com/internetofshit&quot;&gt;“smart”&lt;/a&gt; devices.&lt;/p&gt;
&lt;p&gt;But &lt;a href=&quot;https://www.home-assistant.io/&quot;&gt;Home Assistant&lt;/a&gt;
papered over the vendor and hardware woes and made setup simple.&lt;/p&gt;
&lt;section id=&quot;the-goals-of-my-house-lighting&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;The goals of my house lighting&lt;/h2&gt;
&lt;p&gt;I had the following goals for this project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Circadian lighting in all rooms&lt;/strong&gt; – Bright,
blue/white light during the day; dim, red/yellow light after
sunset.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control by switches&lt;/strong&gt; – I disdain fiddling with
tablets/phones to turn lights on and off. I’d also hoped to avoid an
always-on speaker listening to me.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic&lt;/strong&gt; – Light should shift temperature and
brightness automatically throughout the day.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ability to override&lt;/strong&gt; – I should be able to override
the automatic settings quickly with a switch. Sometimes it’s nice to be
able to see what you’re doing late at night—circadian rhythm be
damned.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Platform independent&lt;/strong&gt; – Because hue bulbs are
expensive, I need to be able to add to the system over time. Everything
from DIY light strips to hue bulbs to random smart bulbs from
Alibaba.com should work together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Self-hosted&lt;/strong&gt; – All software should live on my home
network and work with only a local network.&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id=&quot;the-results&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;The Results&lt;/h2&gt;
&lt;figure&gt;
&lt;img
src=&quot;https://photos.tylercipriani.com/thumbs/18/b3386a14e8de005cbb0460f590e51b/large.jpg&quot;
alt=&quot;Red light from my Taloya smart light in the bathroom, so I’m not blinded in the middle of the night&quot; /&gt;
&lt;figcaption aria-hidden=&quot;true&quot;&gt;Red light from my Taloya smart light in
the bathroom, so I’m not blinded in the middle of the night&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The effects have been subtle but noticeable.&lt;/p&gt;
&lt;p&gt;During the day, I’m sharp, and at night I’m ready to sleep.&lt;/p&gt;
&lt;p&gt;In the evenings, after the sun sets, the lights dim, and it gets
harder to read and work on projects—&lt;strong&gt;that’s a feature&lt;/strong&gt;.
It’s a signal that it’s time for bed.&lt;/p&gt;
&lt;p&gt;The most significant benefit I’ve noticed is that &lt;strong&gt;I can get
back to sleep&lt;/strong&gt; after getting up in the middle of the night—now
that I’m no longer blinded by harsh overhead light in the bathroom.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;home-assistant-setup&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;Home Assistant setup&lt;/h2&gt;
&lt;figure&gt;
&lt;img src=&quot;https://photos.tylercipriani.com/2022-10-18_HA-kitchen.png&quot;
alt=&quot;Home Assistant Lovelace card to control my Circadian Lighting&quot; /&gt;
&lt;figcaption aria-hidden=&quot;true&quot;&gt;Home Assistant Lovelace card to control
my Circadian Lighting&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Home Assistant made this possible.&lt;/p&gt;
&lt;p&gt;The &lt;a
href=&quot;https://github.com/claytonjn/hass-circadian_lighting&quot;&gt;Circadian
lighting component&lt;/a&gt; (available via &lt;a href=&quot;https://hacs.xyz/&quot;&gt;Home
Assistant Community Store (HACS)&lt;/a&gt;) computes solar noon based on my
location and auto-adjusts the brightness of my lights and the color
temperature based on the time of day.&lt;/p&gt;
&lt;figure&gt;
&lt;img
src=&quot;https://photos.tylercipriani.com/2022-10-17_circadian-lighting-grafana.png&quot;
alt=&quot;Grafana graph of all the lights in my house—brightness % vs. color temperature in Kelvin over a week&quot; /&gt;
&lt;figcaption aria-hidden=&quot;true&quot;&gt;Grafana graph of all the lights in my
house—brightness % vs. color temperature in Kelvin over a
week&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I use &lt;a href=&quot;https://www.zigbee2mqtt.io/&quot;&gt;Zigbee2MQTT&lt;/a&gt; to
capture events from my switches and send them to Home Assistant over &lt;a
href=&quot;https://www.home-assistant.io/integrations/mqtt&quot;&gt;MQTT&lt;/a&gt;—I found
this easier than adding a Zigbee gateway to Home Assistant directly.&lt;/p&gt;
&lt;p&gt;I have &lt;a
href=&quot;https://www.home-assistant.io/getting-started/automation/&quot;&gt;automation&lt;/a&gt;
that allows me to override circadian lighting when I need maximum
brightness or when I want the nightlight.&lt;/p&gt;
&lt;/section&gt;
&lt;section id=&quot;the-hardware-setup&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;The hardware setup&lt;/h2&gt;
&lt;figure&gt;
&lt;img
src=&quot;https://photos.tylercipriani.com/thumbs/b9/9dba616bfc80749e863e52bf110a24/large.jpg&quot;
alt=&quot;Tiny linux box for running Home Assistant VM + Conbee II Zigbee Gateway&quot; /&gt;
&lt;figcaption aria-hidden=&quot;true&quot;&gt;Tiny linux box for running Home Assistant
VM + Conbee II Zigbee Gateway&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Lights&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hue bulbs – I have a lot of hue bulbs.
&lt;ul&gt;
&lt;li&gt;Some are &lt;a
href=&quot;https://www.amazon.com/Philips-Hue-Bluetooth-compatible-Assistant/dp/B07QV9XB87/&quot;&gt;full-color
bulbs&lt;/a&gt;, while others do &lt;a
href=&quot;https://www.amazon.com/gp/product/B07QV9XLSD/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;amp;psc=1&quot;&gt;color
temperature&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Three different form factors—A19 bulbs, &lt;a
href=&quot;https://www.amazon.com/gp/product/B07WTJZCZL/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;amp;psc=1&quot;&gt;GU10s&lt;/a&gt;
for the &lt;a
href=&quot;https://www.ikea.com/us/en/p/tidig-ceiling-light-with-5-spotlights-nickel-plated-00262657/&quot;&gt;Ikea
Tidig&lt;/a&gt; in our kitchen, and the &lt;a
href=&quot;https://www.amazon.com/Philips-Hue-Bluetooth-compatible-activated/dp/B07VRF9NWK/&quot;&gt;Edison
bulb&lt;/a&gt; for our fancy dining room light.&lt;/li&gt;
&lt;li&gt;These are good light bulbs.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://www.amazon.com/gp/product/B07WY3VM1M/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;amp;psc=1&quot;&gt;Taloya
smart ceiling light&lt;/a&gt; – this is the bathroom light, integrated with
Home Assistant via &lt;a
href=&quot;https://github.com/rospogrigio/localtuya&quot;&gt;LocalTuya&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Buttons&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a
href=&quot;https://www.amazon.com/gp/product/B07D19YXND/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;amp;psc=1&quot;&gt;Aqara
mini switch&lt;/a&gt; – one each for me and my partner for controlling the
bedroom lamps.&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;https://www.amazon.com/gp/product/B099KDS3W9/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;amp;th=1&quot;&gt;MOES
Zigbee 4-gang switch&lt;/a&gt; – bathroom lights—one button for on/off, one
button for bright, one for dim, one for the red nightlight.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Other hardware&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a
href=&quot;https://www.amazon.com/gp/product/B07PZ7ZHG5/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;amp;psc=1&quot;&gt;Conbee
II Zigbee Gateway&lt;/a&gt; – Handles the incoming Zigbee signals.&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;section id=&quot;todo-finish-lighting&quot; class=&quot;level2&quot;&gt;
&lt;h2&gt;TODO: finish lighting&lt;/h2&gt;
&lt;p&gt;House lighting is never done. I have ideas for my lights that I’m
still pondering.&lt;/p&gt;
&lt;ol type=&quot;1&quot;&gt;
&lt;li&gt;&lt;strong&gt;SAD office light&lt;/strong&gt; – I’m lacking an extremely bright
office light—this is especially noticeable when winter brings darkness
at 4:30pm. I’m pondering building something that I can attach to this
system.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hyperion media lighting&lt;/strong&gt; – Ambiant bias lighting for
the TV via &lt;a
href=&quot;https://sequr.be/blog/2021/04/diy-ambilight-for-your-tv-or-computer-using-a-rpi-and-hyperion/&quot;&gt;Hyperion&lt;/a&gt;.
This is neat, but it’s a low priority since I don’t watch much TV (and
my TV is from 2012, anyway. I’m not fancy).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Moar WLED&lt;/strong&gt; – I added &lt;a
href=&quot;https://kno.wled.ge&quot;&gt;WLED&lt;/a&gt; strip lighting over the sink (which
works perfectly with Home Assistant), but I need more to brighten up the
whole space.&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;

	</content>


	<link rel="comments" href="//tylercipriani.com/blog/2022/10/17/whole-house-circadian-lighting-with-home-assistant/#comments" type="text/html" />


	<link rel="comments" href="//tylercipriani.com/blog/2022/10/17/whole-house-circadian-lighting-with-home-assistant/comments.atom" type="application/atom+xml" />

</entry>

</feed>
