<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Leon Adato</title>
    <description>The latest articles on DEV Community by Leon Adato (@leonadato).</description>
    <link>https://dev.to/leonadato</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F830558%2F63535160-bcf9-44d2-9565-f6b2891fd757.jpg</url>
      <title>DEV Community: Leon Adato</title>
      <link>https://dev.to/leonadato</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leonadato"/>
    <language>en</language>
    <item>
      <title>Software migration: Pain vs Risk</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 07 Sep 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/software-migration-pain-vs-risk-2nih</link>
      <guid>https://dev.to/leonadato/software-migration-pain-vs-risk-2nih</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“And the day came when the risk to remain tight in a bud was more painful than the risk it took to blossom.” – Anais Nin&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Over the course of my career, I’ve experienced my fair share of software upgrades, migrations, and replacements. Some have gone smoothly. Many have not. But none of them could be described as “easy”. The reason none were is is because, to paraphrase a famous sword-swinging Spaniard, “…that word doesn’t mean what you (non-IT people) think it means.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/10/the-princess-bride-inigo-montoya.gif?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0j9khs7fv9s2oarxgs6d.gif" alt="Inigoy Montoya, from the movie " width="300" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In tech, and especially on the subject of system migrations, “easy” connotes “without significant unexpected issues”. It rarely – possibly NEVER – means “without effort.”&lt;/p&gt;

&lt;p&gt;Nevertheless, the suggestion to upgrade (or migrate, or replace) is often thrown around by certain folks (usually business leaders and vendor sales) without a trace of understanding of what that truly entails. As a boots-on-the-ground IT practitioner, hearing it used in this way is nothing short of infuriating.&lt;/p&gt;

&lt;p&gt;Upgrades are such a monumental task that teams will go to almost any length to avoid them unless absolutely necessary. “Almost any length?” you ask. &lt;a href="https://www.linkedin.com/posts/informationtechleader_techleadership-itoperations-privateequity-activity-7377371893940707328-syIa" rel="noopener noreferrer"&gt;A recent LinkedIn post&lt;/a&gt;* illustrates just how bad it has to be for a customer to consider migrating:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;* I recognize readers might read this particular post and read into it a certain venting of grievances on my part, as a former SolarWinds employee. I want to be clear (and I spell it out below) that this is not the case because MANY vendors are making changes to pricing, causing MANY customer to feel similarly to the original poster. This post is just the most recent one to have crossed my timeline.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;SolarWinds, a major player in the technology infrastructure monitoring space, is attempting to force our company into a three-year deal that represents a 543% price increase from our 2023 costs. To put this in perspective. they’re charging 5.6 times the inflation rate. […] I’m now being asked to pay more to monitor our company’s infrastructure than I pay to support that infrastructure itself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If there is a lesson in this that avoids both showcasing the pain of others (in this case, Mr. DeMersseman) or pointing fingers at any specific vendor (because SolarWinds isn’t the only culprit here by a long shot), it’s that customers – despite the lack of meaningful updates or new capabilities; despite the jacked-up pricing and removal of flexibility; despite almost open hostility from the vendor C-suites – despite all of that and more,&amp;nbsp; &lt;em&gt;&lt;strong&gt;STILL haven’t migrated to another tool.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Why? Why would they do that? Because migrating is HARD. In this blog I want to outline just how much risk there is in “blossoming” (as a reference to the quote at the top of this post, by which I mean “migrating to something new”). So much that customers are willing to tolerate this level of pain to remain “tightly within the bud” of the current monitoring solution. I want to outline exactly what you* are asking of your team, when you are being courted by a new software vendor who is promising they can do everything the incumbent solution does (and more, and better) if only you’d switch to their solution. Making matters worse, you* are probably laboring under the belief that “we have too many tools already” (which is, to be honest, probably not entirely wrong.) and so you’ll only consider “…putting a brick in if we can also take a brick (or 2, or 3) out.”&lt;/p&gt;

&lt;p&gt;&lt;em&gt;* I’m assuming that YOU, dear reader, are part of the decision makers who buy the software. If you’re not, then I’m writing this to be shared with said decision makers. You’re welcome.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s break down exactly what a software migration looks like – at least in my experience and in my not-so-humble opinion.&lt;/p&gt;

&lt;p&gt;First, let’s be clear: I’m talking about the experience of an boots-on-the-ground IT practitioner who has found a tool that does something both important and essential. So much so that they’re willing to attempt the “business justification two-step”.&lt;/p&gt;

&lt;p&gt;Imagine being that regular IT pro walking into a room of executives asking questions like the ones Keith Townsend (&lt;a href="https://thectoadvisor.com/" rel="noopener noreferrer"&gt;CTO Advisor&lt;/a&gt;) describes in&amp;nbsp;&lt;a href="https://www.linkedin.com/posts/kltownsend_inside-a-tpyical-the-buyer-room-you-activity-7346242100516016131-u4qB/" rel="noopener noreferrer"&gt;this LinkedIn post&lt;/a&gt;. &lt;strong&gt;It’s not fun&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tech people hate (and therefore usually suck at) speaking in terms of the business, so these types of meetings usually devolve into the IT person passionately citing technical stats until the executive shuts them down or caves. For the sake of argument, let’s pretend they cave (spoiler: they never do).&lt;/p&gt;

&lt;p&gt;I’ll also remind readers that “I’m adopting a new tool” isn’t seen by most managers as a hall pass to get out of doing your regular job (which is typically 3-jobs-in-a-trench-coat that consumes 50+ hours a week).&lt;/p&gt;

&lt;p&gt;The ADDITIONAL work on top of the normal work includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Creating the forms for a largely un-necessary RFP.&lt;/li&gt;
&lt;li&gt;  Working with companies who don’t have a free tier to get a free trial going without making it sound like buying is a sure thing.&lt;/li&gt;
&lt;li&gt;  Apologizing to the CFO when an over-enthusiastic salesperson skips 2 or 3 levels and calls them directly to see if they can “push” the sale through.

&lt;ul&gt;
&lt;li&gt;  Yes, that happens. 2 different monitoring solution vendors have done it to me.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;  Begging for cash and scrounging spare parts to build a lab because nobody will (justifiably) let you test in production.&lt;/li&gt;
&lt;li&gt;  Setting up the lab yourself. Even the people who would benefit from the new tool usually can’t help because – SURPRISE – they are doing 3-jobs-in-a-trenchcoat too.&lt;/li&gt;
&lt;li&gt;  Doing the RFP – installing and configuring software for at least 3 companies plus the incumbent and doing detailed comparisons in an attempt to get an apples-to-apples understanding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But, ok, that’s ANY migration. So let’s wave our magic wand again say we get past the WEEKS (if not months) of effort. AND we’ll wave our wands yet again to ignore the weeks of back and forth with purchasing, who won’t understand what the tool does and nor they think the company needs it because it’s “just another piece of software.”&lt;/p&gt;

&lt;p&gt;Congratulations! You’re magically past those ulcer-inducing stages. NOW you – the beleaguered IT person – are on the hook to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Inventory all the systems that will be part of the pilot program.&lt;/li&gt;
&lt;li&gt;  Set up a QA environment for the new software, against the QA environment of the new application.&lt;/li&gt;
&lt;li&gt;  Explain to the vendor that you actually need TWO copies of the software, not one, and no you don’t have budget to pay for it twice, you need a free copy because it’s just QA.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once again, we’ll pretend the vendor just say “duhhhh okay!” (spoiler: they rarely say that). Next on the list is to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Install and configure the new vendor’s software.&lt;/li&gt;
&lt;li&gt;  Add the QA environment systems into the environment.&lt;/li&gt;
&lt;li&gt;  Manage and monitor the test, showing results to the application owners to prove your new software won’t destroy their app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you’ve passed those items, the work is not done. You now have to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Set up the new vendor’s software in the production system.&lt;/li&gt;
&lt;li&gt;  Add (not migrate) the application(s) to the new system.&lt;/li&gt;
&lt;li&gt;  Run the new system in parallel with the old one for a number of weeks, reporting comparative results to everyone up to the CFO’s&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=riqXhieWU3M" rel="noopener noreferrer"&gt;father’s, brother’s, nephew’s, cousin’s, former roommate&lt;/a&gt;&amp;nbsp;about how it’s going.&lt;/li&gt;
&lt;li&gt;  After that period, you can start to turn off (not delete, just turn off) the old vendor’s software. Note that your company is still PAYING for the old software, so exactly ZERO savings have been achieved. Try explaining THAT to the CFO.&lt;/li&gt;
&lt;li&gt;  During all of this, you are also responsible for re-creating all of the tests, alerts, reports, and dashboards in the old system that people now “&lt;em&gt;&lt;strong&gt;desperately need&lt;/strong&gt;&lt;/em&gt;” (even though they haven’t touched them in 2 years.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scroll back and review all those bullets one more time. Ask yourself what it would take to make you want to do that &lt;strong&gt;&lt;em&gt;on top of your existing work&lt;/em&gt;&lt;/strong&gt;. Most IT folks&amp;nbsp;go through that kind of experience ONCE, often because they don’t realize what they’re in for. After that, most learn their lesson and stop asking about (or for) new tools because very little would be worth all (or any) of that.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“But Leon, companies DO aquire new tools. All the time. How do you explain THAT?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Final spoiler: We wait for something to explode. We wait for a system we know is unstable to experience a surface-of-the-sun hot nuclear melt down. Because at that point, all the hurdles and bullshit clear away. The executives who were so picky before are now screaming bloody murder. They’ll do ANYTHING, agree to ANYTHING, to make sure that EXACT PRECISE problem never happens again,&lt;/p&gt;

&lt;p&gt;Then and only then can a tool be adopted quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7dqg651pq6ovuojrcut.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm7dqg651pq6ovuojrcut.gif" alt="motherly woman sternly saying " width="500" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is why we can’t have nice things. Or at least, this is why IT folks don’t jump up and down with joy when you suggest they migrate to a new monitoring tool, despite their frustration with the current one.&lt;/p&gt;

&lt;p&gt;So don’t be surprised when they don’t.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>software</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Cribl: Telemetry Gatherers</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 31 Aug 2026 17:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/cribl-telemetry-gatherers-1lgf</link>
      <guid>https://dev.to/leonadato/cribl-telemetry-gatherers-1lgf</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;(CriblCon is a month away, so I wanted to share a post - NOT about Cribl, or telemetry, or tech - but rather about the ways we IT folks sometimes find to combine whimsy and IT)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252F2rgSob6GAar09yAGiyTeyR%252F4a54b0220af89e06821bb8ebf705f96b%252Fbf704431-62bc-49be-b239-39472fb80ee2.png%26w%3D3840%26q%3D75" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252F2rgSob6GAar09yAGiyTeyR%252F4a54b0220af89e06821bb8ebf705f96b%252Fbf704431-62bc-49be-b239-39472fb80ee2.png%26w%3D3840%26q%3D75" alt="Cribl: Telemetry Gatherers - img 1" width="1503" height="743"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Honestly, it started off as a silly, wild-assed idea.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;"Wouldn't it be funny if we made some Magic the Gathering cards that use Cribl products as spells, and maybe some of the problems our users have as monsters! We could give them out for a laugh in the booth. “&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The problem - if you can really call it a problem - is that everyone at Cribl is really proud of our geeky heritage, and that includes MTG. We couldn't just joke about that idea. We had to jump in with both feet, burning our evening hours creating an ENTIRE FSCKING PLAY-ABLE SET. With boosters. And specialty cards. And counters. And… stuff.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;From that initial silly wild-ass idea, things just snowballed. We quickly realized Cribl products (and not JUST products - other aspects of the Cribl solution) weren't spells. They were artifacts! Lands! Enchantments! We had to come up with mechanics for pipelines and replay. And we needed to create artwork for the cards.&lt;/p&gt;

&lt;p&gt;SO. MUCH. ARTWORK.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252F5hXrT4M9FYpDQQ6bZIhr8z%252F8d48b81238e90a448f6ccc26bc3a86b8%252Fimage1.png%26w%3D640%26q%3D75" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252F5hXrT4M9FYpDQQ6bZIhr8z%252F8d48b81238e90a448f6ccc26bc3a86b8%252Fimage1.png%26w%3D640%26q%3D75" alt="Cribl: Telemetry Gatherers - card 1" width="250" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To speed things up, Justin des Lauriers (once of our engineers, of course) created a whole-ass Gemini "gem" that would streamline creating card mechanics from a simple prompt.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;And of course, once we had them, we had to playtest them. A lot. In multiple sessions that ran long into the night. Because we care. About authenticity. About game balance. But mostly, we care about maintaining the highest level of geek credibility we can have, and if it means forgoing sleep or proper hygiene, so be it!&amp;nbsp;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;We had a metric crap-tonne (that is a very technical measurement, by the way) of fun.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252FJORZkxzlVvNzpyGChzidz%252F595679759c37e477d6eb7c041d32fd65%252F8aea72f2-556f-4c30-8f09-f5d5fe3ba769.png%26w%3D3840%26q%3D75" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252FJORZkxzlVvNzpyGChzidz%252F595679759c37e477d6eb7c041d32fd65%252F8aea72f2-556f-4c30-8f09-f5d5fe3ba769.png%26w%3D3840%26q%3D75" alt="Cribl: Telemetry Gatherers - img 2" width="1503" height="571"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But as we played, we realized these cards could also teach people how Cribl did.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;It might not be as good as Cribl University (OK, it definitely isn’t. Check them out at &lt;a href="https://cribl.io/university/" rel="noopener noreferrer"&gt;https://cribl.io/university/&lt;/a&gt;) but if you want to get some concepts in your bones in a fun and off-beat way, you could do a lot worse.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252F7waLSAEmvkMUWZKMg96qbV%252Fb97c80416dddcb0c25aed70c7d187a8f%252Fimage8.png%26w%3D640%26q%3D75" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252F7waLSAEmvkMUWZKMg96qbV%252Fb97c80416dddcb0c25aed70c7d187a8f%252Fimage8.png%26w%3D640%26q%3D75" alt="Cribl: Telemetry Gatherers - card 2" width="250" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This should come as no surprise to anyone who has taught professionally (massive props to all the teachers out there!). It’s been clear for a long time that we all - adults as well as kids - learn better and retain information longer when it’s presented and experienced as a form of “play”. We sing the ABC song to memorize the alphabet. We have blocks, legos, and erector sets to learn spacial skills. We play dodgeball to learn to avoid flying wrenches.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;And now we can tell our loved ones that we have to play Magic the Gathering in order to build our skills in Cribl and uplevel our career. Which will earn us a raise. With which we can buy more MTG cards. It’s the circle of life, but for nerds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252F3xShDF44HKfv2T12nPl2wk%252F4c83c21b273189771a06b24a37632f3c%252FUntitled_design__1_.png%26w%3D3840%26q%3D75" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcribl.io%2F_next%2Fimage%2F%3Furl%3Dhttps%253A%252F%252Fimages.ctfassets.net%252Fxnqwd8kotbaj%252F3xShDF44HKfv2T12nPl2wk%252F4c83c21b273189771a06b24a37632f3c%252FUntitled_design__1_.png%26w%3D3840%26q%3D75" alt="Cribl: Telemetry Gatherers - img 3" width="1200" height="911"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My point in all of this is two fold:&amp;nbsp;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;You absolutely positively need Cribl’s Magic the Gathering card additions in your deck.&amp;nbsp;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Having these cards indisputably proves your credibility as an IT practitioner, a Cribl expert, and a geek.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where can you find them?
&lt;/h2&gt;

&lt;p&gt;We’ll be handing them out &lt;a href="https://cribl.io/events/" rel="noopener noreferrer"&gt;at conferences&lt;/a&gt;, &lt;a href="https://info.cribl.io/RM-FEV-FY27-CriblConnect_LP-Registration/" rel="noopener noreferrer"&gt;CriblConnects&lt;/a&gt;, and of course &lt;a href="https://criblcon.cribl.io/" rel="noopener noreferrer"&gt;CRIBLCONNNNNNNN&lt;/a&gt;! We will be looking for even more ways to share the MTG joy with the world in upcoming weeks and months.&lt;/p&gt;

</description>
      <category>magicthegathering</category>
      <category>conferences</category>
      <category>fun</category>
    </item>
    <item>
      <title>Monitoring versu… I mean AND Observability</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 31 Aug 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/monitoring-versu-i-mean-and-observability-1831</link>
      <guid>https://dev.to/leonadato/monitoring-versu-i-mean-and-observability-1831</guid>
      <description>&lt;p&gt;Chapter 3 of the&amp;nbsp;&lt;a href="https://www.oreilly.com/" rel="noopener noreferrer"&gt;O’Reilly&lt;/a&gt;&amp;nbsp;book I’m co-authoring with&amp;nbsp;&lt;a href="https://kentik.com/" rel="noopener noreferrer"&gt;Kentik&lt;/a&gt;&amp;nbsp;CEO&amp;nbsp;&lt;a href="https://www.linkedin.com/in/avifreedman/" rel="noopener noreferrer"&gt;Avi Freedman&lt;/a&gt;&amp;nbsp;is out today (you can download it here: &lt;a href="https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/" rel="noopener noreferrer"&gt;https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/&lt;/a&gt; and I wanted to share a bit that didn’t make it through the editing process, because even with the eBook edition, space (and reader attention) isn’t infinite.&lt;/p&gt;

&lt;p&gt;Nevertheless, I thought the longer version was worth a look, for some of the points it made.&lt;/p&gt;

&lt;p&gt;In the book, we wrote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In blog articles you’ll see the phrase “reason about”, as in “its more data than one person can reason about”, which is a fancy way of saying “keep it all in your head enough to be able to find patterns”. I mention this because one differentiations between “observability” from “monitoring” is not just the sheer volume of data, but also the disparity of that day that makes it difficult, if not impossible, to reason about it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But here’s the longer version that we had to cut down:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In order to really appreciate how Machine Learning (ML) and AI can improve observability, it’s necessary to (briefly) differentiate between it (meaning: “observability”) and “monitoring”.&lt;/p&gt;

&lt;p&gt;Monitoring is mostly concerned with “known unknowns”, by which I mean the things we know COULD potentially fail, but we don’t know WHEN. It’s comparatively trivial to understand what data needs to be collected, reported, and alerted on because we know where to look. Monitoring isn’t concerned with how unique the data is (i.e. “cardinality”) – whether we’re talking about an individual data point or a collection/grouping/slice of that data. And because of the two previous points (known unknowns and cardinality), correlation is usually manual – meaning humans who understand the combination of elements that indicate something is wrong are needed to craft the trigger for an alert or other action.&lt;/p&gt;

&lt;p&gt;Observability, on the other hand, is more biased toward “unknown unknowns” – we don’t know what could go wrong and we also have no idea when that failure might occur. That ties into observability’s focus on “high cardinality” data – when specific data points or various permutations have never (or rarely) been observed. To achieve this, massive amounts of data need to be collected, normalized, parsed, and pivoted to find those unique combinations. And because of those two things (unknown unknowns and cardinality), correlation cannot be trusted to a human. There is simply too much data, and too many possible combinations of that data, to “reason about” it (to use phrase popularized by Charity Majors and Liz Fong-Jones).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a comparison I make often when I’m giving conference talks – NOT because I think I have the One True Definition (far from it) but rather because I want folks to have the proper context.&lt;/p&gt;

&lt;p&gt;One additional point I make on both sides is “signals” – the data elements used to determine if the object of monitoring is healthy or not.&lt;/p&gt;

&lt;p&gt;In “traditional” monitoring, signals are domain-specific. The data points that tell you a network device is not performing well are measurably different from those that indicate a database is unhappy. Or a block of code. Or even a wifi environment.&lt;/p&gt;

&lt;p&gt;Meanwhile the philosophy of observability tries to standardize on the&amp;nbsp;&lt;a href="https://sre.google/sre-book/monitoring-distributed-systems/#xref_monitoring_golden-signals" rel="noopener noreferrer"&gt;“Four Golden Signals”&lt;/a&gt;&amp;nbsp;as established in the&amp;nbsp;&lt;a href="https://sre.google/sre-book/introduction/" rel="noopener noreferrer"&gt;SRE Handbook&lt;/a&gt;&amp;nbsp;– namely Latency, Traffice, Errors, and Saturation.&lt;/p&gt;

&lt;p&gt;To be clear: the title of this blog is a misnomer. It’s not (and never was) “versus”. Monitoring and Observability should be seen as a BOTH-AND rather than EITHER-OR proposition.&lt;/p&gt;

&lt;p&gt;With all that said, here’s a screenshot of the slide I use in my presentations, which lays it out (without the talk track). I hope you find it useful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/Screenshot-From-2025-09-29-12-46-46.png?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffefx23yubv6yu0qmndos.png" width="640" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>infrastructure</category>
      <category>monitoring</category>
      <category>sre</category>
    </item>
    <item>
      <title>HOW TO DEVREL: Content Funnel Done Right</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 24 Aug 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/how-to-devrel-content-funnel-done-right-2n74</link>
      <guid>https://dev.to/leonadato/how-to-devrel-content-funnel-done-right-2n74</guid>
      <description>&lt;p&gt;&lt;em&gt;DISCLAIMER: No, I don’t believe I’m the universe’s gift to DevRel. I don’t have all the answers, all the skills, or even all the Pokemon. What I have is my experiences, collected over the 11 years I’ve been doing this work. That – my experiences and observations – are what I’m sharing&amp;nbsp;&lt;a href="https://www.adatosystems.com/category/how-to-devrel/" rel="noopener noreferrer"&gt;in this series&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sales. Demand Generation. Product Marketing. Technical Marketing. Plain old MARKETING-Marketing.&lt;/p&gt;

&lt;p&gt;And then there’s Developer Relations.&lt;/p&gt;

&lt;p&gt;Depending on the company, the leadership, and sometimes the season, DevRel might be slotted into any one of those silos. Or more than one. Or all of them. For my money, it kind of doesn’t matter – at least not nearly as much as how the functions of a DevRel advocate fit into the overall conversation with the target audience, and how those conversational moments are carried over from one to the other.&lt;/p&gt;

&lt;p&gt;Maybe Demand Gen sets the direction, and Product Marketing (PMM), Marketing, and Sales follow their lead.&lt;/p&gt;

&lt;p&gt;Maybe Marketing creates the message and the other groups build on it.&lt;/p&gt;

&lt;p&gt;Maybe… well, maybe a lot of things. But I’ve been doing this a while and (with the caveat at the top of this post firmly in mind) I’ve hit upon a structure that allows each group to play to its strengths and more importantly creates a consistent and coherent “thread” of conversations with customers, prospects, and users.&lt;/p&gt;

&lt;h3&gt;
  
  
  Top of Funnel: DevRel
&lt;/h3&gt;

&lt;p&gt;At the top of the conversational funnel – meaning the broadest approach, the most varied set of topics, and (perhaps most importantly) the most vendor-agnostic type of conversation – sits DevRel. Their job – my job (our job if you’re also in DevRel) – is to talk about the problems, issues, and experiences faced by IT practitioners.&lt;/p&gt;

&lt;p&gt;The goal at this stage is to tell a story (not a fiction, but rather a narrative of an experience) that is so credible, so real-world, so on-the-nose that the reader has an almost visceral reaction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;OH MY DOG, that was ME last week! Were you looking in the window of my office?!? What did you do next????&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At that point, I might simply focus on the problem, leaving the solution up in the air. I’ve written about this before as part of the&amp;nbsp;&lt;a href="https://adatosystems.com/2025/03/24/how-to-devrel-the-texas-sharpshooter/" rel="noopener noreferrer"&gt;Texas Sharpshooter&lt;/a&gt;&amp;nbsp;technique.&lt;/p&gt;

&lt;p&gt;Or I might write about a an actual solution, putting it into the most vendor-agnostic terms. Even if the screenshots show my employer’s software, there’s a bit of latitude because my toolbox has to have SOMETHING in it, and these are just the tools I happen to have at my disposal. The key is to talk about the problem, the solution, and the techniques without mentioning the tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Same Story, More Detail: PMM
&lt;/h3&gt;

&lt;p&gt;Product Marketing Managers are – in my (not so) humble opinion – close relatives to the evangelist / developer relations advocate role described in the previous section. They should have just as much technical acumen, and should understand the problem space and the user personas just as well.&lt;/p&gt;

&lt;p&gt;In a different world, the PMM could write the same story as the evangelist. In fact, that’s exactly what they SHOULD do, with one tweak.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Last week, Leon wrote about (some particular problem). He brought up a lot of good points, but he wasn’t exactly specific about how to go about solving it in a particular tool – OUR tool, in fact. So today I want to revisit that blog but offer up some advice on how you can fix this issue, in XYZ’s software. Let’s get started…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Presuming the reader is coming to this blog having read the first one (or if they take a moment to read it now), the PMM has effectively earned the privilege to be vendor-specific. By virtue of their click, the reader has bought into the idea that THIS blog (compared to the last one) is going to talk about a product, feature, or module.&lt;/p&gt;

&lt;h3&gt;
  
  
  Offer More Value: Demand Gen
&lt;/h3&gt;

&lt;p&gt;So “Demand Generation” (or just “Demand Gen”) is, as the name would imply, the group that finds ways to get people into the sales funnel. While part of that job lies in promoting the content generated by the previous two sections, another action they can take is to track the folks who interact with those pieces and reach out to them directly, offering – no, NOT a sales pitch – but rather another “gift of knowledge”. That might be a whitepaper, related blog post or video, an ebook, an upcoming webinar, or something similar.&lt;/p&gt;

&lt;p&gt;It builds on the understanding that&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You’ve engaged with us on a specific topic, here are some additional ideas, use-cases, and solutions that we help you with.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At this stage, Demand Gen is both broadening the conversation and narrowing the funnel – helping the audience to self-select whether they are only interested in a single specific problem or use-case, or if their needs extend beyond that, into the realm of things a company would pay money to fix, if a solution was available.&lt;/p&gt;

&lt;h3&gt;
  
  
  Close The Conversation: Sales
&lt;/h3&gt;

&lt;p&gt;“Sales”, as a concept, doesn’t require much elaboration. What I want to emphasize is that, as the final stage of the previous sequence, it is a lot less intrusive and a lot more natural than other types of sales interactions.&lt;/p&gt;

&lt;p&gt;If the reader/audience has been engaged to this point, a call or email from sales makes sense. There’s a context to the conversation and, once again, the individual has more or less agreed that this is the next logical step. There’s no guarantee, of course, but there’s much less time that has to be spent on what the company does, what problems the prospective user is having, and so on. That all is a known quantity, because it was validated in the previous stages of this funnel.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Mostly Unnecessary Summary
&lt;/h3&gt;

&lt;p&gt;This framework is, (somewhat) obviously, not fool proof. It’s not the One True Sales Funnel that will win you the client every time. It is – much like the software your company sells – another valuable tool in your tool belt.&lt;/p&gt;

&lt;p&gt;But if you believe in speaking to users with an authentic, human voice; in telling stories that are problem-forward and put the user’s needs first, then it’s a framework you probably ought to consider.&lt;/p&gt;

</description>
      <category>community</category>
      <category>developer</category>
      <category>marketing</category>
    </item>
    <item>
      <title>HOW TO DEVREL: The Most Un-Natural Act</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 17 Aug 2026 04:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/how-to-devrel-the-most-un-natural-act-44oo</link>
      <guid>https://dev.to/leonadato/how-to-devrel-the-most-un-natural-act-44oo</guid>
      <description>&lt;p&gt;&lt;em&gt;DISCLAIMER: No, I don’t believe I’m the universe’s gift to DevRel. I don’t have all the answers, all the skills, or even all the Pokemon. What I have is my experiences, collected over the 11 years I’ve been doing this work. That – my experiences and observations – are what I’m sharing&amp;nbsp;&lt;a href="https://www.adatosystems.com/category/how-to-devrel/" rel="noopener noreferrer"&gt;in this series&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before this blog gets de-listed for potentially purile content, let me explain up-front what “un-natural act” I’m referring to:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Getting conference attendees to try your software during the conference&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Yeah, THAT un-natural act. Like… you’re at a conference, enjoying the talks, meeting new people, and having a great time. You decide to take a swing through the vendor space, mostly to see what combination of socks, t-shirts, pens, and charging cables you can snag for free.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Stopping at a booth, you’re chatted up by one of the staff, and they say… something clearly compelling. It might even border on mind-control. Your response is to pull out your laptop, head to the vendor’s website, start a free trial, and play around with their software.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This, my friends, is an absolute fever dream. I’m sorry, but I’m not giving up my time (to say nothing of my anonymity) for “a chance to win this Lego Millennium Falcon”. Anyone who thinks this would work has not hung around humans – and specifically humans working in the tech sector – enough. Short of something like “and you’ll immediately get a Lamborghini” (or 1 million dollars, or a lifetime supply of delicious chocolate cake), there’s nothing I can imagine a vendor saying to me that would get anyone to ACTUALLY do the deed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Opening scroll
&lt;/h3&gt;

&lt;p&gt;Or can you? It turns out, I’ve found a way to do just that. In fact, this technique – tested over 3 years at ~20 different events – consistently delivered a sign-up rate of 10% of the overall attendees. So if the event has 300 people, this technique got me ~30 sign-ups. But at a 3,000 person event, we saw 300 sign ups. Because you probably work in tech and love data, I will admit that there’s an upper-bound at around 5,000 people. Going to re:Invent (about 60,000 people) did NOT garner 6,000 sign ups. However I attribute that to the fact that all 60,000 people didn’t swing by the booth.&lt;/p&gt;

&lt;p&gt;But the point stands – this technique gets a non-zero number of folks to take a moment, RIGHT NOW, and sign up. If you’ve been working the booth at conferences for any amount of time, you know that’s worth a lot of $5-a-pair branded aviator glasses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 1: Make it a game
&lt;/h3&gt;

&lt;p&gt;The first thing I did was take my company’s software (remember, I work in monitoring and observability) and incorporated into a game. I found&amp;nbsp;&lt;a href="https://github.com/mwolfart/dangerous-dave" rel="noopener noreferrer"&gt;a existing 90’s style side-scroller&lt;/a&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/dave-game.jpg?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxvkslxkiyeiw91vb9g84.jpg" width="640" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and instrumented it with additional monitoring that collected everything from CPU, RAM, and network stats to the number of gems collected, the top level achieved, the speed of movement, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/dave-dash.png?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnxcvg3gl1kxjemjv097z.png" width="640" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 2: Make the back-end visible
&lt;/h3&gt;

&lt;p&gt;Then I took all those stats and built a dashboard around it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/Dave-Dashboard-Screen-Shot-v2-scaled.png?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnp59v7ffwowdlccamvva.png" width="640" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 3: Let attendees play AND see!
&lt;/h3&gt;

&lt;p&gt;I built a portable display that allowed someone to play the game AND ALSO see the dashboard in my company’s portal that showed all the monitoring statistics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/game_suitcase-scaled.jpg?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr9cx42blnikuaq4sbdxj.jpg" width="640" height="852"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;CUT SCENE – in-booth discussions&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once this is up and running in the conference booth, people will naturally gravitated to it. A game display is just too enticing NOT to stop and check out. It allowed me to not only invite people to play (and even compete against each other) but I also used the game as a springboard for conversations – describing HOW each of the game elements was instrumented, collected, and displayed, which naturally led to discussing real-world use cases that were closer to home for the attendee.&lt;/p&gt;

&lt;p&gt;The best part was that, because the example I used was a game, folks didn’t get hung up on “that’s not like my business” but also it got past the “what are you trying to sell me” resistance that everyone (myself included) feels when passing by a vendor booth at a conference.&lt;/p&gt;

&lt;p&gt;But it gets much better than that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 4: Pack it up
&lt;/h3&gt;

&lt;p&gt;Packaging everything up to use in the booth is one thing. But what if you made it so the users THEMSELVES could download the game, pre-instrumented, and load up the dashboard in your portal?&lt;/p&gt;

&lt;p&gt;That’s exactly what I did. First I made everything as simple as possible – bundling the game AND monitoring agent into a single downloadable bundle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 4: Provide a walk-through
&lt;/h3&gt;

&lt;p&gt;Next, I wrote up step-by-step instructions that talked folks through:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; creating a free account in my company’s portal&lt;/li&gt;
&lt;li&gt; downloading the game-and-monitoring bundle&lt;/li&gt;
&lt;li&gt; making any configuration changes to connect the game bundle to the free account&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The goal wasn’t to make any of this a guessing game or a quiz. If sample configs were needed, I gave them. If there were special add-ons needed for a specific operating system, I provided links. I wanted players to have the easiest, smoothest, fastest set-up experience possible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/Screenshot-From-2025-09-19-08-51-29.png?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9n9nvrn0cq0hjgug1pjf.png" width="640" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 5: Offer the Quest.
&lt;/h3&gt;

&lt;p&gt;After seeing the game in the booth, I would offer attendees the opportunity to download it for themselves and set up the exact same dashboard. That way they could enjoy the game AND see the real software (mine) in action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/dice.jpg?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7pmppxfiv5i1fip141f4.jpg" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But this, in fact, is the heart of the blog. THIS is the “most un-natural act”. Why on earth would they DO that??&lt;/p&gt;

&lt;h3&gt;
  
  
  Level 6: Collect Those Gems!
&lt;/h3&gt;

&lt;p&gt;If you’ve played any game ever, you know that hard work needs to be rewarded. I offered a prize to anyone who came back to the booth and showed me the installed game with the dashboard up and running. The prize was significant. Not “here’s a PS5” significant, but compelling. Over the years, I’ve handed out everything from Ember mugs to Raspberry Pis to light-up LED D&amp;amp;D dice.&lt;/p&gt;

&lt;p&gt;What I found is that the thing that compelled attendees to download and try the software wasn’t the expensiveness of the give-away, but the “cool” factor along with the guarantee that they’d get it. Nobody’s going to jump through hoops at a busy tech conference for a raffle ticket.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/player4.jpg?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzigy2fsednf4ezk8jwb6.jpg" width="640" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/player3.jpg?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9h9c2xrngsti9jmr78u6.jpg" width="640" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/player2.jpg?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Filbf9z4ihdk6kosfrjkh.jpg" width="640" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/player1.jpg?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5fyua024ywor4w2teskp.jpg" width="640" height="853"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that’s where the “10% of attendees” part fits in. That’s how many people, on average, were willing to take time (usually doing it while they were listening to one of the conference talks) and download the game bundle, set up the free account, and do the (minor, easy) configuration to connect the two things.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2025/09/results.jpg?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl5j1a5l33h4ulftu79hu.jpg" width="640" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Bonus Level: Beat the BFG
&lt;/h3&gt;

&lt;p&gt;We also had a big give away (yes, sometimes if actually was a PS5 or XBox), but I’m not a big fan of raffles. So we made it part of the entire engagement strategy.&lt;/p&gt;

&lt;p&gt;IF the attendee downloaded the game bundle and set up the dashboard…&lt;/p&gt;

&lt;p&gt;AND IF they showed us the dashboard (and got the cool prize).&lt;/p&gt;

&lt;p&gt;AND IF if they actually played the game during the event, and had the highest score at the end,&lt;/p&gt;

&lt;p&gt;THEN They’d win the prize.&lt;/p&gt;

&lt;p&gt;How would we know? Their score in the dashboard, of course.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hidden Level: The Kobiashi Maru
&lt;/h3&gt;

&lt;p&gt;What I discovered the very first time I did this activity was that I needed TWO big prizes.&lt;/p&gt;

&lt;p&gt;One for the person who played by the rules, who got the high score fair and square.&lt;/p&gt;

&lt;p&gt;And one for the inevitable group of folks who found a way to tweak and change something to create an impossibly high score. Maybe they adjusted the math on the dashboard display. Maybe they added a multiplier in the data collection process. Maybe both.&lt;/p&gt;

&lt;p&gt;Why? Why would I reward a cheater?&lt;/p&gt;

&lt;p&gt;Let me reframe that for you:&lt;/p&gt;

&lt;p&gt;What would you have to give someone at a conference to download a program, set up your software and a dashboard, and then EDIT AND MODIFY that setup to do something different? What’s the likelihood that ANYONE you asked for that kind of investment of time would do anything except walk away (possibly after laughing in your face)?&lt;/p&gt;

&lt;p&gt;But here, someone did all of that without you even asking. In marketing and sales terms, this makes them the most qualified of leads.&lt;/p&gt;

&lt;h3&gt;
  
  
  The End Credits
&lt;/h3&gt;

&lt;p&gt;The core of this idea is that I made a relatively boring, work-intensive piece of software more fun and engaging by associating it with something that was already fun and engaging, and then structuring the handouts and give-aways in such a way that rewarded the behaviors that helped me.&lt;/p&gt;

&lt;p&gt;It’s not exactly an epic action that can only be done when you’ve collected 1,000 mana points. But, based on the fact that I’ve seen precious few other vendors do anything like this, it’s still one of those little known power moves that anyone could capitalize on without being seen as derivative.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Punchline, or Gut-Punch?</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 10 Aug 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/punchline-or-gut-punch-4ngc</link>
      <guid>https://dev.to/leonadato/punchline-or-gut-punch-4ngc</guid>
      <description>&lt;p&gt;I was excited and also humbled to be given the chance to deliver the closing keynote talk at&amp;nbsp;&lt;a href="https://www.pyohio.org/" rel="noopener noreferrer"&gt;PyOhio&lt;/a&gt;&amp;nbsp;this year. You can see the&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=wB5JIT7rF0g" rel="noopener noreferrer"&gt;video of that talk here&lt;/a&gt;. But a conversation afterward offered me a chance to reconsider and – hopefully – improve both myself and that talk for the future.&lt;/p&gt;

&lt;p&gt;I set up a particular joke early in the talk: After establishing that “there really aren’t any poor technical choices”, I go on to qualify that statement with examples of demonstrably bad technical choices – things like not having backups, testing in production, etc. In that list I include the punchline:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Using Oracle for literally anything, ever.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Near the end of the talk I offer another list, this time technical decisions that sometimes leave us paralyzed with indecision. Near the end I ironically include the same line – “using Oracle for literally anything, ever”.&lt;/p&gt;

&lt;p&gt;Both lines never fail to get a laugh from the audience. First, because any sufficiently large, complex, storied, and difficult to manage technology would fit the bill. I could have chosen from a range of programming languages, platforms, or solutions and gotten almost the same type of laugh. But second, because Oracle – the company, and certainly it’s CEO – have made itself an easy target.&lt;/p&gt;

&lt;p&gt;And look, it’s a good joke, ok?&lt;/p&gt;

&lt;p&gt;What I failed to consider is that plenty of thoughtful, dedicated, committed IT folks work with Oracle every day. Some might have had taken jobs that covered a wide range of solutions, Oracle included. And some might have seen where the money was – that internally the big projects and big funding was going to an Oracle-based project – and decided to go in that direction because of the potential for promotion, bonuses, and stability.&lt;/p&gt;

&lt;p&gt;And in that moment, anyone in the audience who’d made that choice found themselves in an unintentional spotlight. Because, without my meaning to, I’d made them and their work the butt of a joke. At best, they now had to deal with folks winking at them and saying “using Oracle for literally anything, amirite?!?”. At worst, they had to explain why they had made a “poor technical choice”.&lt;/p&gt;

&lt;p&gt;Moreover, unlike any of the other technologies I mention in that talk, I hadn’t offered an “out”. Every other poor technical choice is presented in a “That’s bad! No that’s good!” type of framing.&lt;/p&gt;

&lt;p&gt;I wasn’t aware of any of this, although I’d given the talk several times, until someone at PyOhio stepped forward. Through the Code of Conduct grievance process (and massive props to the PyOhio team for having this process, and taking it seriously), they registered their discomfort, both in the moment and afterward. They related that, having built a career around their expertise with Oracle, they found themselves uncomfortable and conflicted about how to react during my talk. And after the talk was over they were uncertain about how (or whether) to mention their work to other attendees.&lt;/p&gt;

&lt;p&gt;They asked the organizers to ask me to consider my talk in from their perspective, and reconsider how willing I was to put other people in the same situation, all for the sake of a momentary laugh.&lt;/p&gt;

&lt;p&gt;It’s easy – too easy – to write off this one person as being overly sensitive, unable to take a joke, too self-absorbed or self-important to laugh at themselves. Upon even a moment’s reflection, it should be obvious that this would be both defensive and condescending. Who are we to normalize cruelty just or judge someone else’s response? “Nobody can take a joke any more.” Is (and, let’s be honest, always has been) the response of those who don’t want to bear responsibility for their words.&lt;/p&gt;

&lt;p&gt;The truth is the person who filed the complaint is the epitome of bravery. It takes strength of character and conviction to stand up and tell someone that what they’re doing is wrong. I applaud anyone who takes that kind of risk. I’m deeply grateful to the person who did so in this case, even though I’ll never know their name.&lt;/p&gt;

&lt;p&gt;SO… where does that leave me and my punchline? To be honest, I’m still not 100% sure. On the one hand, I could just modify the line to say “Oracle corporation”, separating the solution from the Law-firm-with-a-small-software-division that is the Oracle business. I could go searching from a different target that’s so old nobody would be offended – like Perl or XML. Or something that’s likely to be universally reviled – like Windows 8. Or I could cut the punchline out entirely. A conference talk doesn’t need to be a thinly veiled standup routine.&lt;/p&gt;

&lt;p&gt;So I’m not sure of HOW it will change, but I’m absolutely certain that it WILL change. I was given feedback that was specific, personal, and urgent. To ignore it would be more than just a poor technical choice. It would be a poor choice as a human being.&lt;/p&gt;

</description>
      <category>community</category>
      <category>discuss</category>
      <category>programming</category>
      <category>python</category>
    </item>
    <item>
      <title>HOW TO DEVREL: The 10x DevRel</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 03 Aug 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/how-to-devrel-the-10x-devrel-32al</link>
      <guid>https://dev.to/leonadato/how-to-devrel-the-10x-devrel-32al</guid>
      <description>&lt;p&gt;&lt;em&gt;DISCLAIMER: No, I don’t believe I’m the universe’s gift to DevRel. I don’t have all the answers, all the skills, or even all the Pokemon. What I have is my experiences, collected over the 11 years I’ve been doing this work. That – my experiences and observations – are what I’m sharing&amp;nbsp;&lt;a href="https://www.adatosystems.com/category/how-to-devrel/" rel="noopener noreferrer"&gt;in this series&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you’ve been anywhere near the coding side of tech within the last 8 or so years (and that includes just sitting with a programmer in the lunch room) you have probably heard of the “10x Engineer”.&lt;/p&gt;

&lt;p&gt;While the phrase is well known, the meaning remains somewhat murky. Does it mean an engineer who can develop 10x the volume of code? Develop an equal amount of code 10x faster? Create code that’s 10x higher quality? Or does 10x the number of functions?&lt;/p&gt;

&lt;p&gt;The IMPLICATION is that this is a person who can provide 10x the “value” (however you personally define it) compared to a regular run of the mill software engineer. It builds on an earlier version of the same trope – the Rock Star Engineer. An equally impossible bar which itself builds on a more realistic observation: we’ve all worked with certain folks who just seem to have it all together. Who know what they’re doing, make fewer mistakes, and knock out the work.&lt;/p&gt;

&lt;p&gt;The problem is that nobody is like that all the time. The people we remember as being brilliant made their fair share of mistakes – even on the days we thought they were knocking it out of the park. Rock stars hit bad notes sometimes. Sports legends miss the ball sometimes. 10x engineers get stuck.&lt;/p&gt;

&lt;p&gt;More than sometimes, all of those folks have the same experiences we do. A lot.&lt;/p&gt;

&lt;p&gt;So if they’re just regular mortals like us, what’s behind the myth?&lt;/p&gt;

&lt;p&gt;On one hand, I think it has something to do with what those folks do NEXT. Having made the mistake, found their code to be buggy, realized they have no idea how to proceed, etc… they keep going. They ask for help. They recognize (and even embrace) the opportunity to learn. Hell, the best engineers I know revel in the opportunity to learn something new, or even learn a new way to do an old thing.&lt;/p&gt;

&lt;p&gt;But there’s ONE aspect of the truly amazing folks that does qualify them as “10x”.&lt;/p&gt;

&lt;p&gt;My friend Yechiel Kalmenson&amp;nbsp;&lt;a href="https://blog.yechiel.me/are-you-a-10x-engineer-348aa74c82d5" rel="noopener noreferrer"&gt;put it best in a blog post back in 2019&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“A real 10x Engineer is an engineer who can boost the productivity of their team 10x. An engineer who mentors, uplifts, shares their knowledge, and ultimately brings ten other engineers up to their level.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The only realistic way to get 10x more out of someone is to give them the space to replicate what they do in others. To allow their spark to ignite the same passion and drive in the people around them.&lt;/p&gt;

&lt;p&gt;And so I finally come to the topic in the tile of this blog: the 10x DevRel.&lt;/p&gt;

&lt;p&gt;Having read this far, it’s self-evident that even the most experienced, gifted, driven Developer Relations Advocate can’t write 10x more posts, record 10x more videos, engage 10x more audiences, build 10x more communities, run 10x more hackathons, and so on.&lt;/p&gt;

&lt;p&gt;BUT… unlike the software engineers I described at the beginning of this post, DevRel folks are not usually surrounded by teams of other DevRel folks. There aren’t multiple teams of DevRels working in (and on) various aspects of the company’s offerings. In many cases, the DevRel you meet is the only one at their company. They are the proverbial “army of one”.&lt;/p&gt;

&lt;p&gt;So how could it be possible for that lone voice in the wilderness to level up their game?&lt;/p&gt;

&lt;p&gt;It starts by recognizing that everyone is the star of their own movie, everyone has a story to tell, and many of those folks would love a chance to tell that story but they don’t know how to get past the barriers in their way.&lt;/p&gt;

&lt;p&gt;Those barriers might be workload, or language, or confidence, or technical skills, or simply not having a platform.&lt;/p&gt;

&lt;p&gt;And our job as Advocates is to do internally what we already do for our customers: to listen to their stories. To encourage and uplift them. To help them recognize that their story is, in fact, worth telling.&lt;/p&gt;

&lt;p&gt;And then to help fill in the gaps for them so that they can tell their story in a way, in a place, and at a time that enables them to shine.&lt;/p&gt;

&lt;p&gt;Too much work? The Advocate can (and should) go to leadership and help explain how that story would attract new business. Is language an issue? The Advocate should encourage their colleage to tell their story in their words. The world is a multi-lingual place. The person doesn’t feel confident in their abilities? It’s the Advocates place to provide whatever support they need – co-authoring, co-speaking, editing, coaching, brainstorming, or simply offering an honest reflection of the work, but also promising not to stop helping until the story is ready to be told.&lt;/p&gt;

&lt;p&gt;A 10x DevRel is the person who sees the stories in the people around them, and then creates avenues for those new storytellers to speak their truth.&lt;/p&gt;

&lt;p&gt;A 10x DevRel is someone who takes the privileges they have – the credibility, the opportunity, the experience, the access – and uses it to open doors, not for themselves, but to then stand back and let those new voices step through and into the light.&lt;/p&gt;

&lt;p&gt;So my question to you (if you’re a DevRel) isn’t “Are you a 10x DevRel”. My question is: “Why AREN’T you a 10x DevRel?”&lt;/p&gt;

</description>
    </item>
    <item>
      <title>All Bait and No Fish</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 03 Aug 2026 04:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/all-bait-and-no-fish-3fnf</link>
      <guid>https://dev.to/leonadato/all-bait-and-no-fish-3fnf</guid>
      <description>&lt;p&gt;I’ve been helping a friend out with their job search for a couple of weeks, and got an email back from them the other day:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I applied for a few more with no response still. At this point it feels like throwing out a fishing line with no bait.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wanted to share some of my responses to them, in case you are feeling the same way. A lot of it echos things I’ve posted in the past, and I will link back to those earlier blogs when appropriate.&lt;/p&gt;




&lt;p&gt;First, to re-state what I said yesterday: Job hunting (especially these days)&amp;nbsp;&lt;a href="https://adatosystems.com/2023/11/13/lessons-from-a-6-month-job-search/" rel="noopener noreferrer"&gt;is a process that takes months&lt;/a&gt;, and your first response could take weeks, not days. I don’t like it, you don’t have to like it, but that’s the state of things irrespective of our feelings about it. The only way I’ve found to get past this is to just keep applying. The more things I shove into my end of the pipe, the more likely something comes out the end.&lt;/p&gt;

&lt;p&gt;SECOND – and again this is one of those “especially these days” things – the effort you put into a job application can be (not “is”, it’s not guaranteed, but it definitely helps and certainly doesn’t hurt) directly proportional to the value of the result.&lt;/p&gt;

&lt;p&gt;At one of the spectrum is LinkedIn’s “easy apply” button. It takes almost no effort at all, just a single click. And that’s just about the value you’ll get out of it: not much. You’re certainly not likely to get a callback, and even more likely the entire thing is just a process to feed the AI machines involved.&lt;/p&gt;

&lt;p&gt;At the OTHER end of the spectrum is maximum effort: You find a job posting and you first&amp;nbsp;&lt;a href="https://adatosystems.com/2024/01/16/culture-community-creation-calling/" rel="noopener noreferrer"&gt;research the company to see what they’re all about&lt;/a&gt;. Then you look through LinkedIn to see&amp;nbsp;&lt;a href="https://adatosystems.com/2023/11/27/jobsearch-sometimes-it-is-who-you-know/" rel="noopener noreferrer"&gt;if you know someone who is there&lt;/a&gt;. Let’s say you don’t. You then dig deeper to see if you can find people at the company who have professional interests that match up with yours. You reach out to them and ask, not for a job, but for a conversation. You just want to hear what the&amp;nbsp;&lt;a href="https://adatosystems.com/2024/01/16/culture-community-creation-calling/" rel="noopener noreferrer"&gt;company is about. The culture. The strengths and weaknesses.&lt;/a&gt;&amp;nbsp;(assuming they agree) You use that conversation to get that person to know you – not as a resume, but as a person. After 1 or 2 conversations about the company, the work, etc you mention the job posting and see if that person is willing to make an internal referral. If they are, you have a solid leg up on the process. It’s STILL not a sure-thing, but it’s better than just sending in your resume and hoping for the best.&lt;/p&gt;

&lt;p&gt;Now that (the second option) is A LOT of work. You can’t do that for every application. So how do you choose? You do&amp;nbsp;&lt;em&gt;some&lt;/em&gt;&amp;nbsp;work. You look at the company (and the role) and see if it’s a place where you not only feel like you can do the work, but that you would WANT to be part of that organization. You believe in what they make, what they do, their mission in the world. And if those things are true, you make the extra effort and do everything you can to ensure your application has the best possible chance.&lt;/p&gt;

&lt;p&gt;SO TO SUMMARIZE&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  You probably won’t hear responses from any job application for 2-3 weeks (and sometimes 5-6 weeks).&lt;/li&gt;
&lt;li&gt;  Having an inside contact at the company is a massive boost in the likelihood you’ll move to the next step&lt;/li&gt;
&lt;li&gt;  This is a volume game – you have to throw 100 resumes into the pipe to hear back from 1 or 2.&lt;/li&gt;
&lt;li&gt;  NONE of this is fun, nice, or enjoyable. It also isn’t the way tech has always worked. It’s also probably not the way it will always be&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But it is the way it is now, and we have to work with what we’ve got.&lt;/p&gt;

</description>
      <category>career</category>
      <category>hiring</category>
      <category>interviewing</category>
      <category>jobhunting</category>
    </item>
    <item>
      <title>Knowing What’s Under the Hood Helps</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 27 Jul 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/knowing-whats-under-the-hood-helps-3gf</link>
      <guid>https://dev.to/leonadato/knowing-whats-under-the-hood-helps-3gf</guid>
      <description>&lt;p&gt;I’m not a car guy. I can drive them, but I don’t know the first thing about fixing them, and not much about maintaining them. My son, on the other hand – who’s getting a degree in mechanical engineering – is most definitely a car guy. He’s learning a lot about cars, and he’s teaching me a lot about what I’ve been doing wrong, even with simple things like maintenance.&lt;/p&gt;

&lt;p&gt;I was thinking a lot about that as chapter 2 of my O’Reilly book, titled “Wrangling Telemetry” was being written. What book, you ask?&lt;/p&gt;

&lt;p&gt;A long, long time ago (it was April 21) in a blog post far, far away (you can find it&amp;nbsp;&lt;a href="https://www.adatosystems.com/2025/04/21/hybrid-cloud-the-worst-possible-option/" rel="noopener noreferrer"&gt;here&lt;/a&gt;) I wrote about the&amp;nbsp;&lt;a href="https://www.oreilly.com/" rel="noopener noreferrer"&gt;O’Reilly book&lt;/a&gt;&amp;nbsp;that&amp;nbsp;&lt;a href="https://www.linkedin.com/in/avifreedman/" rel="noopener noreferrer"&gt;Avi Freedman&lt;/a&gt;&amp;nbsp;and I are writing about Network Observability.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.adatosystems.com/wp-content/uploads/2025/04/oreilly_cover.png?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jls6o0kn8gkavlygsu7.png" width="571" height="805"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The book title is “Practical Guide to Modern Networking Telemetry”. The raw, “lightly edited”, somewhat unexpurgated version of chapter 2 is available today.&lt;/p&gt;

&lt;p&gt;You can find it here:&amp;nbsp;&lt;a href="https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/" rel="noopener noreferrer"&gt;https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I will briefly point out that it’s REALLY worth your time to download this copy because the final version will be about 120-150 pages (those O’Reilly editors don’t work for free!), but the raw version clocks in at 82 pages, and that’s just up to the end of chapter 2. So you really are getting a whole lot of extra content right now – content that will be lost to what looks to be a machete-and-chainsaw editing process later this year.&lt;/p&gt;

&lt;p&gt;But if those 80+ pages aren’t enough for you – if you want a little more behind-the-scenes extra content to close our your week – I wanted to expand on just one idea that I throw out there in the first couple of pages of chapter 2.&lt;/p&gt;

&lt;p&gt;On page 42 I wrote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Yes, it’s true that vendor solutions do a lot of heavy lifting behind the scenes. But this book is about exposing and elaborating on what that behind-the-scenes activity is. Part of the reason is so you can be a more informed customer. Knowing what happens inside the black box of observability solutions, HOW you get from “data comes in the left side” to “pretty charts come out the right side” allows you to make educated decisions about everything from OpenTelemetry methodology to aggregation options to pipeline management.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No matter how well the amazing folks at O’Reilly edit down chapter 2, the question remains: “Why should I read an entire chapter about how the observability sausage is made? Why do I care about enrichment, normalization, pipelines, data storage, and the rest. Like Avi and Leon SAY, RIGHT THERE IN THE BOOK, the vendor handles that shi…tuff.”&lt;/p&gt;

&lt;p&gt;Let’s go back to my car analogy. It seems I’ve been spending a lot – too much – on oil changes. I thought that natural oil was better than synthetic. It was also significantly cheaper. With his experience on&amp;nbsp;&lt;a href="https://cwrumotorsports.com/" rel="noopener noreferrer"&gt;two&lt;/a&gt;&amp;nbsp;&lt;a href="https://csuohiosae.wixsite.com/vikingracing" rel="noopener noreferrer"&gt;different&lt;/a&gt;&amp;nbsp;teams that compete in&amp;nbsp;&lt;a href="https://www.bajasae.net/" rel="noopener noreferrer"&gt;Baja SAE&lt;/a&gt;&amp;nbsp;he’s learned a lot. And – without getting into the nitty gritty (because I still don’t understand all of it, and this is a blog about observability not oil) the synthetic oil is better for the cars we have, and will last longer, and overall work better.&lt;/p&gt;

&lt;p&gt;That’s information I didn’t have because I didn’t choose to think about how my car operated on more than a surface level. I was content to let the vendor (the quicky-oil-change place) make my choice for me, and to make decisions based on price rather than effectiveness.&lt;/p&gt;

&lt;p&gt;I find – especially when it comes to monitoring and observability – that IT practitioners can fall into the same trap. We already have too much on our plate. We already carry a huge cognitive load. Learning about the internal process of a tool that – let’s be brutally honest for a moment – is often seen as little more than something we do to satisfy an audit doesn’t seem like a good use of our time.&lt;/p&gt;

&lt;p&gt;But – like that oil change analogy – it can have massive long-term impact. Understanding how your monitoring tools “wrangle” the data can&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  help you avoid cost overruns&lt;/li&gt;
&lt;li&gt;  understand why data doesn’t always match (what you expect or what other tools are telling you)&lt;/li&gt;
&lt;li&gt;  use your tools both effectively and for the right use cases&lt;/li&gt;
&lt;li&gt;  avoid wasting money replacing tools “that suck” when in fact they don’t suck, you’ve just been using them incorrectly.&lt;/li&gt;
&lt;li&gt;  and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With all of that said, I don’t believe that knowing how to wrangle your telemetry is as useless as some people think. With the rise of&amp;nbsp;&lt;a href="https://opentelemetry.io/" rel="noopener noreferrer"&gt;Open Telemetry&lt;/a&gt;, those pipelines – and all the techniques to normalize, filter, sample, and transport data that they perform – is becoming more important than ever to understand.&lt;/p&gt;

&lt;p&gt;So consider this chapter – in it’s full, lightly edited, unredacted form – to be Avi and my gift to you to become a better user of your monitoring tools.&lt;/p&gt;

&lt;p&gt;Once again, you can find the book – all 80+ pages at this link:&amp;nbsp;&lt;a href="https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/" rel="noopener noreferrer"&gt;https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>monitoring</category>
      <category>sre</category>
      <category>writing</category>
    </item>
    <item>
      <title>HOW TO DEVREL: The Bechdel Test for Community</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 20 Jul 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/how-to-devrel-the-bechdel-test-for-community-30g7</link>
      <guid>https://dev.to/leonadato/how-to-devrel-the-bechdel-test-for-community-30g7</guid>
      <description>&lt;p&gt;&lt;em&gt;DISCLAIMER: No, I don’t believe I’m the universe’s gift to DevRel. I don’t have all the answers, all the skills, or even all the Pokemon. What I have is my experiences, collected over the 11 years I’ve been doing this work. That – my experiences and observations – are what I’m sharing&amp;nbsp;&lt;a href="https://www.adatosystems.com/category/how-to-devrel/" rel="noopener noreferrer"&gt;in this series&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For those unfamiliar with it, the “Bechdel test” is named for the American cartoonist Alison Bechdel. In&amp;nbsp;&lt;a href="https://dykestowatchoutfor.com/wp-content/uploads/2014/05/The-Rule-cleaned-up.jpg" rel="noopener noreferrer"&gt;one strip&lt;/a&gt;&amp;nbsp;from her series “&lt;a href="https://dykestowatchoutfor.com/" rel="noopener noreferrer"&gt;Dykes to Watch Out For&lt;/a&gt;“, a character described their 3 basic requirements to go see a movie. The movie had to have:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; At least two women, who…&lt;/li&gt;
&lt;li&gt; …talk to each other…&lt;/li&gt;
&lt;li&gt; …about something other than a guy…&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The point is that an embarrassingly small number of movies (not to mention TV shows, books, comics, etc) can clear that fairly low bar.&lt;/p&gt;

&lt;p&gt;Equally embarrassing are the number of so-called “community forums” that fail to pass what I have termed my “Bechdel test for community”. In order to qualify as a real community, it would need to have:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; at least two (non-employee) accounts with fully filled out profiles…&lt;/li&gt;
&lt;li&gt; …talking with each other in a public area of the community forum…&lt;/li&gt;
&lt;li&gt; …about something other than the company (or it’s products).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Meaning: A true community is a space where two people with common interests or goals talk to each other about things that matter to them. It&amp;nbsp;&lt;em&gt;might&lt;/em&gt;&amp;nbsp;include the company who owns and runs the site, but it might not.&lt;/p&gt;

&lt;p&gt;And a true community is one that not only permits, but encourages and facilitates those interactions.&lt;/p&gt;

&lt;p&gt;Like the real Bechdel test, that bar seems low until you start surveying community sites. Most will have some form of a #random channel. Many will have other variations of #off-topic discussions. But those examples point to the flaw: often the things that permit a community to pass my test are the same things that are labeled “random” and “off-topic”, betraying the bias against having a true community.&lt;/p&gt;

&lt;p&gt;If this hits uncomfortably close to home, don’t let that discourage you. Because improvement is within anyone’s ability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Put&amp;nbsp;Baby&amp;nbsp;Product in a Corner
&lt;/h2&gt;

&lt;p&gt;One of the things I find vendors fail to recognize (or know, but then quickly forget) is that their name, logo, and product are ALL. OVER. THE. PLACE. There’s need to put the brand front-and-center, nor to make the products the focus. This is because both of those things are intuitive to anyone arriving at “TechBrand.Community.com.”&lt;/p&gt;

&lt;p&gt;Moving product-centric forums and their discussions – whether those are announcements or support discussions – into a corner effectively does the opposite of the #random channel I mentioned earlier. It makes a clear statement that “this space is for you, not for us.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Make It a Sales-Free Zone
&lt;/h2&gt;

&lt;p&gt;Closely related is a rule that I consider to be inviolable, both as a member of an online community and as someone closely involved with running them: A community space has to be completely free from sales activities.&lt;/p&gt;

&lt;p&gt;Never in the history of ever has someone in a community forum lamented, “If only I could find a sales person to take my money!”&lt;/p&gt;

&lt;p&gt;Like the point I made about product information, you have to recognize that community members will have no problem engaging with sales if they want it. There’s absolutely no need for sales to “check in” or “touch base” if they think a conversation is veering into sales-related territory.&lt;/p&gt;

&lt;p&gt;I promise you that if there’s even a hit that sales folks are lurking on those channels, waiting to swoop in (either in the comments or out-of-band via email, phone calls, or whatever) your membership will shrink to zero faster than your platform’s software will be able to track.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solicit Input, Not Free Labor
&lt;/h2&gt;

&lt;p&gt;If you’re like most tech practitioners, you probably have enough work to keep you and 3 clones busy basically forever. The people in your online community are no different. If you want to demonstrate your respect for their time, not to mention your appreciation for being part of the community the last thing you should do is ask them for free labor.&lt;/p&gt;

&lt;p&gt;That includes bug bounties, offering beta version (aka “free QA testing”), or community tech support. Even if they get points or swag.&lt;/p&gt;

&lt;p&gt;Instead, the emphasis should be on encourating the community to share opinions, ideas, and experiences in ways that don’t look or feel like free labor.&lt;/p&gt;

&lt;p&gt;That starts with problem-forward questions and discussions. Rather than asking how the audience uses a particular module or feature, center the conversation on “how many of you have experienced X?” (where x is a situation, issue, or problem). Or “How do you all deal with X?”&lt;/p&gt;

&lt;p&gt;By focusing on the experience (hopefully something that happens to IT practitioners with regularity) you are making it clear your not trolling for customer reference stories.&lt;/p&gt;

&lt;p&gt;Other conversation starters that might help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  What are some things nobody told you when you started working with (a certain technology); or in (a particular field)?&lt;/li&gt;
&lt;li&gt;  What’s a cool hack for solving X?&lt;/li&gt;
&lt;li&gt;  What issues slow you down every day that you wish you could make disappear?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…and so on.&lt;/p&gt;

&lt;p&gt;From a company standpoint, let your community be a place where you open the door for members to participate in UX/UI sessions. These are designed to show early ideas about a new technique or technology, but in a way that allows community folks to offer input that can directly impact (and even change) the product. It’s a win-win that is still surprisingly rare in the tech world. Very few companies allow their community to get involved in a way that allows them to say “You see that option? That’s included because I told them how important it was!”&lt;/p&gt;

&lt;h2&gt;
  
  
  Reward Participation
&lt;/h2&gt;

&lt;p&gt;That attitude – of valuing real engagement and contributions that benefit both the membership and you – should extend beyond your product to every aspect of the community. You should recognize and reward individuals any time they share their knowledge.&lt;/p&gt;

&lt;p&gt;The place to start is recognizing and rewarding when some ASKS a question, not just when they answer them. Asking good questions is actually the hardest and most valuable element of building a vibrant and engaged community. A good question is the thing that starts a conversation, or keeps it going, or makes the answer matter in the first place.&lt;/p&gt;

&lt;p&gt;Yes, you should also reward members who share snippets of code, scripts, dashboards, reports, and any other portable (meaning import/export-able) assets. And of course you should reward people for answering questions. But that shouldn’t be the primary focus or else you will once again fall into the trap of making the community space biased toward free labor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Feature Request System, as a Feature
&lt;/h2&gt;

&lt;p&gt;From a vendor standpoint, the most important question you can ask is “What do YOU need the product to do?”&lt;/p&gt;

&lt;p&gt;And, as I’ve mentioned earlier when talking about UX sessions, it has to be asked in a way and at a time when the feedback you receive actually makes a difference.&lt;/p&gt;

&lt;p&gt;For this reason, I strongly suggest making a public feature request page part of your community. This is a place where ANYONE (well, any verified community member, at least) can request a new capability.&lt;/p&gt;

&lt;p&gt;But not only that. It should be a place where people can comment on the request to add nuance or challenge assumptions. ask clarifying questions. It’s also a place where folks can up (or down) vote those feature request.&lt;/p&gt;

&lt;p&gt;This voting capability is more than just a popularity contest. Remember, these are requests from the public who uses your software. They are taking their time to tell you what they need (and why). When an FR gets a significant number of up-votes, it should be seriously considered by your developers. More than that, the developer staff should have to justify why those FR’s are NOT on the list, each and every development cycle.&lt;/p&gt;

&lt;p&gt;One piece of criticism I’ve heard about this idea is “what if they say, ‘make the product free’ or ‘buy me a pony’ ?” To clarify: I’m not saying you must slavishly execute on every FR. Of course there will be folks who put in requests as a lark or just to be funny. But the vast majority will be serious.&lt;/p&gt;

&lt;p&gt;Some – while serious – will not be possible. And that’s OK. But it’s valuable insight to know that a majority of your user base wants (for example) dark mode. If that’s something your dev team you can’t deliver, then it’s at least something your marketing team should address.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shall We Play a Game?
&lt;/h2&gt;

&lt;p&gt;Underlying all of this is a truth about online communities: the best ones make engagement and participation fun. Part of that is the content and conversations, but another part is endorphin-boosting rewards. Having a “gamified” online system that assigns points to users who answer (and ask!) questions; who upload resources; who particpate in quizes and missions; who engage in scavenger hunts and other activities… having a system that automatically tracks and tally’s reward points for those types of behaviors is important.&lt;/p&gt;

&lt;p&gt;Equally important is having something to DO with all those points. An online shop or other system that lets community members trade in points for swag may sound foolish, but it’s the sweet icing on the cake of community interactions for many of us. It helps give us a reason to hit YOUR site rather than one of the 3 dozen other options in front of us as we sit at our screens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Communities Are Worth It
&lt;/h2&gt;

&lt;p&gt;A vibrant, engaged, participatory community is more than just a gift of goodwill to the tech space at large (although it definitely is that). It’s also an engine for change, self-awareness, and profit for the sponsoring company. It is a valuable source of customer insight – from superfans to potential employees to canaries who give advance notice when something about your product has become toxic. In one company where I worked, over $1million of revenue per year could be directly attributed to community activities.&lt;/p&gt;

&lt;p&gt;But they require work. That includes moderation, content curation, and a careful hand when it comes to participation by the platform owner (that’s you and your colleagues) but not domination.&lt;/p&gt;

</description>
      <category>career</category>
      <category>community</category>
      <category>devjournal</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Hybrid Cloud – the Worst Possible Option</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 13 Jul 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/hybrid-cloud-the-worst-possible-option-1f4n</link>
      <guid>https://dev.to/leonadato/hybrid-cloud-the-worst-possible-option-1f4n</guid>
      <description>&lt;p&gt;I’m excited to share that I’m in the process of writing a book for &lt;a href="https://www.oreilly.com/" rel="noopener noreferrer"&gt;O’Reilly Media&lt;/a&gt;! You can check out the Introduction and first chapter of “&lt;a href="https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/" rel="noopener noreferrer"&gt;A Practical Guide to Modern Networking Telemetry&lt;/a&gt;” now. That link leads to an early release version, which means it’s been “lightly edited”. If you have comments, corrections, questions, or even kudos, let our editor know: &lt;a href="https://dev.to/cdn-cgi/l/email-protection"&gt;[email&amp;nbsp;protected]&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.adatosystems.com/wp-content/uploads/2025/04/oreilly_cover.png?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jls6o0kn8gkavlygsu7.png" alt="Cover for the O'Reilly book " width="571" height="805"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m co-authoring it with Avi Freedman, CEO of &lt;a href="https://kentik.com/" rel="noopener noreferrer"&gt;Kentik&lt;/a&gt;, and it’s a labor of love for both of us. As we wrote in the “About the Authors” section, the idea to write this arose first and foremost to get down on paper all of those samples, examples, stories, and lessons we usually share in at conferences, or in talks, or when helping customers; but also to provide a resource to the readers themselves: who might need to articulate those same lessons to colleagues, managers, or the odd (very odd) person at a dinner party.&lt;/p&gt;

&lt;p&gt;There’s one comment from the &lt;a href="https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/" rel="noopener noreferrer"&gt;introduction&lt;/a&gt; that I wanted to unwind a little bit in this blog. In the section titled, “What &lt;em&gt;IS&lt;/em&gt; the Network, Exactly”, I wrote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Back in 2023, in his book “&lt;a href="https://www.kentik.com/go/ebook/ultimate-guide-to-network-observability/" rel="noopener noreferrer"&gt;The Ultimate Guide to Network Observability&lt;/a&gt;“, Avi wrote,&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“People often refer to “the network” in their organizations, but in most cases the network isn’t one entity. It’s a complex, diverse, fragmented, and loosely interconnected set of physical and virtual links and equipment, and it’s housed in a variety of places, including data centers, corporate wide area networks (WANs), private and public clouds, the internet, container environments, and even inside hosts. Organizations own and control some of those resources but simply pay to use others.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Since that time, things remain largely the same. Sure, the cloud has gotten more cloudy (meaning opaque to users) even as it has become more ubiquitous within organizations large and small. And at the same time corporate LAN and WAN environments have not, by and large, become less complex (or sprawling, or expensive). In fact, the opposite has been true. Even as company’s investment in cloud has increased, so too has their investment in on-premises networking gone up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Why is that? Because the more we – businesses and IT professionals alike – use the cloud, the better we understand what the cloud should be used for; and conversely, where cloud should absolutely not be used, whether due to considerations of cost, complexity, or security. And in those cases, we have brought systems, applications, data, and solutions back into our data centers, and found new and creative ways to connect and combine it with the cloud infrastructure.&lt;/p&gt;

&lt;p&gt;And that – the cursed franken-network of modern IT: infrastructure that spans both cloud and on-prem environments, offering all the complexity, cost, and issues of both, while offering very little of the benefits.&lt;/p&gt;

&lt;p&gt;The sheer horrific nature of hybrid networking might not be intuitively obvious to folks reading this because we live and breathe in a technical context every day. So let me draw a parallel that might make it clearer: hybrid cars.&lt;/p&gt;

&lt;p&gt;Blending a traditional gas-powered combustion engine with a modern fully-electric motor sounds like a great idea on paper, but in practice it’s a nightmare. The design burdens the user with all the quirks and complexities of both systems; it also creates a completely new set of quirks and complexities on top of those; and offers only modest benefits – which are usually completely outweighed by the negative aspects of smushing the two technologies into one form factor.&lt;/p&gt;

&lt;p&gt;And that’s what hybrid networks are: the combined costs and complexities of on-premises and cloud networks, with a whole new layer of the same incurred by trying to make them play nicely together.&lt;/p&gt;

&lt;p&gt;The big difference between hybrid cloud and hybrid cars is, of course, that we IT practitioners don’t have much of a choice. As much as we wish – hell, as much as we TRIED over the last decade to push environments to fully-cloud or fully-on prem, hybrid is the reality we’re going to live in for the foreseeable future.&lt;/p&gt;

&lt;p&gt;And that means we – IT practitioners in general and folks who care about (and are responsible for) monitoring and observability in particular – have to improve the ways we ensure performance and reliability of those environments.&lt;/p&gt;

&lt;p&gt;And here, approximately 700 words into this blog, I’ve finally gotten to the problem I hope &lt;a href="https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/" rel="noopener noreferrer"&gt;“The Practical Guide”&lt;/a&gt; will help fix:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  the folks who are often responsible for building the cloud-based side of those environments often know very little about networking&lt;/li&gt;
&lt;li&gt;  and meanwhile, the teams who are often responsible for building the on-prem side of those environments often know very little about modern observability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The book offers a clear and complete explanation of everything from the types of devices that comprise a “network”; to the types of telemetry those devices emit; and continues from there to explain how to collect, transform, transmit, and use that telemetry.As I mentioned at the start of this blog, &lt;a href="https://www.kentik.com/go/ebook/oreilly-guide-to-modern-networking-telemetry/" rel="noopener noreferrer"&gt;chapter 1 is available&lt;/a&gt; in its early release version now. Go ahead and give it a look, and let me know what you think – either in the comments below, or by emailing my editor Gary at &lt;a&gt;[email&amp;nbsp;protected]&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Time Data Series: Written In Our Stars</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Wed, 08 Jul 2026 13:49:37 +0000</pubDate>
      <link>https://dev.to/leonadato/time-data-series-written-in-our-stars-2jhi</link>
      <guid>https://dev.to/leonadato/time-data-series-written-in-our-stars-2jhi</guid>
      <description>&lt;p&gt;&lt;a href="https://www.adatosystems.com/2024/10/07/time-data-series-the-rest-of-the-story/" rel="noopener noreferrer"&gt;Once upon a time&lt;/a&gt;&amp;nbsp;(i.e. way back in October 2024) I wrapped up a blog in&amp;nbsp;&lt;a href="https://www.adatosystems.com/?s=time+data+series" rel="noopener noreferrer"&gt;this series&lt;/a&gt;&amp;nbsp;with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Believe it or not, there’s still more to cover. In the&amp;nbsp;coming weeks&amp;nbsp;whenever I get to it, I’d like to cover ways to leverage the built-in astronomy functions for time calculations. Believe it or not, it can really matter in terms of having truly accurate times for things like the start and end of Shabbat and holidays, along with other observances.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And here we are in 2025, when it’s finally time for me to fulfill that promise, and talk about how the&amp;nbsp;&lt;a href="https://github.com/KosherJava/zmanim" rel="noopener noreferrer"&gt;KosherJava library&lt;/a&gt;&amp;nbsp;(and by extension, the&amp;nbsp;&lt;a href="https://github.com/zachweix/PhpZmanim" rel="noopener noreferrer"&gt;PHP Zmanim port&lt;/a&gt;&amp;nbsp;I’ll be using in this blog) can help you calculate and display what amount to straight astronomy in your application or web page.&lt;/p&gt;

&lt;p&gt;Once again I need to begin by expressing my deep gratitude to Zachary Weixelbaum and Eliyahu Hershfeld, who both continue to answer so many of my persistent (and often basic) questions with patience, care, and good humor.&lt;/p&gt;

&lt;h2&gt;
  
  
  The House of the Rising Sun
&lt;/h2&gt;

&lt;p&gt;The core aspect of what I’m showing is fairly simple: For a specific location (latitude/longitude, plus timezone) and date, find the time of day that the sun will be at a given elevation point.&lt;/p&gt;

&lt;p&gt;Or to be even more specific: At what time will the sun be at 20 degrees above the horizon on June 10, 2025 in Cleveland? So let’s break down the key elements of PHP Zmanim we’ll be focusing on today.&lt;/p&gt;

&lt;p&gt;These two lines load the parts of the PHP library we’ll be using.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PhpZmanim\Geo\GeoLocation&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PhpZmanim\Calendar\ComplexZmanimCalendar&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we set up a location object (using variables for location name, latitude, longitude, elevation, and time zone); and a calendar object (using the location object we just instantiated along with the year, month, and day):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GeoLocation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$locname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$long&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$elev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$tz&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$zmanim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ComplexZmanimCalendar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$location&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getyear&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getmonth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getday&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, the code that calculates and displays the results:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$sunrise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$zmanim&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getsunrise&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$twenty&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$zmanim&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getSunriseOffsetByDegrees&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"sunrise: &lt;/span&gt;&lt;span class="nv"&gt;$sunrise&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;20 degrees: &lt;/span&gt;&lt;span class="nv"&gt;$twenty&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If playing along at home, I should explain that I grabbed both the regular sunrise simply as a reference to the time at which the sun is 20 degrees up in the sky.&lt;/p&gt;

&lt;p&gt;I also need to explain that yes, I know that&amp;nbsp;&lt;code&gt;70&lt;/code&gt;&amp;nbsp;is not&amp;nbsp;&lt;code&gt;20&lt;/code&gt;, so how does THAT work out? The &lt;code&gt;getSunriseOffsetByDegrees&lt;/code&gt; function “thinks” of the sun as being at 0 degrees when it’s at its zenith, and 90 degrees at the horizon line. So for the purposes of this function going up (higher in the sky) causes the degree value to go down.&lt;/p&gt;

&lt;p&gt;The full code looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PhpZmanim\Zmanim&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;Carbon\Carbon&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PhpZmanim\Calendar\ComplexZmanimCalendar&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;use&lt;/span&gt; &lt;span class="nc"&gt;PhpZmanim\Geo\GeoLocation&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;# Set variables:&lt;/span&gt;
&lt;span class="c1"&gt;#41.4939407, -81.516709;&lt;/span&gt;
&lt;span class="nv"&gt;$locname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Beit Knesset Chochmat Shlomo, Beachwood, OH"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$lat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;41.4939407&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$long&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;81.516709&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$elev&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$tz&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'America/New_York'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$getyear&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"2025"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$getmonth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"06"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$getday&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"10"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;$location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GeoLocation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$locname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$long&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$elev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$tz&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$zmanim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ComplexZmanimCalendar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$location&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getyear&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getmonth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getday&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$sunrise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$zmanim&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getsunrise&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$twenty&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$zmanim&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getSunriseOffsetByDegrees&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"sunrise: &lt;/span&gt;&lt;span class="nv"&gt;$sunrise&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;20 degrees: &lt;/span&gt;&lt;span class="nv"&gt;$twenty&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  When the Night Has Come, and the Land is Dark…
&lt;/h2&gt;

&lt;p&gt;I’m sure there are useful reasons to know the time when the sun is at a certain point in the sky during the day, but from a religious perspective, there are far more reasons to want to know when the sun is below the horizon line. I say “religious” because I can think of at least two that care about the time of the sun’s position before sunrise: Judaism and Islam.&lt;/p&gt;

&lt;p&gt;Both have a concept of dawn that indicates the very first visible lightening of the sky in the east. This time is known as&amp;nbsp;&lt;em&gt;fajr&lt;/em&gt;&amp;nbsp;in Islam and&amp;nbsp;&lt;em&gt;alot hashachar&lt;/em&gt;&amp;nbsp;in Judaism.&lt;/p&gt;

&lt;p&gt;Because we’re talking about a matter of perception, it can be ferociously difficult to nail down, a matter not made any easier by the constant shifting of the sun over the year, and the differences due to latitude.&lt;/p&gt;

&lt;p&gt;However – and bypassing a huge swath of religious debate – let’s accept the opinion that the first light is visible by perceptive humans on a clear day when the sun is 18&lt;br&gt;&lt;br&gt;
degrees below the horizon. How can we calculate that?&lt;/p&gt;

&lt;p&gt;Honestly, it’s not hard now that you know the basic structure. In fact, we just have to change one thing:&lt;br&gt;&lt;br&gt;
&lt;code&gt;$dawn = $zmanim-&amp;gt;getSunriseOffsetByDegrees(90+18);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Yes, I could have just typed&amp;nbsp;&lt;code&gt;108&lt;/code&gt;&amp;nbsp;but I wanted to make it explicit that we’re calculating 18 degrees before sunrise (90 degrees from the zenith).&lt;/p&gt;
&lt;h2&gt;
  
  
  Get Me to the&amp;nbsp;Church&amp;nbsp;Synagogue on Time…
&lt;/h2&gt;

&lt;p&gt;To offer a more involved – not to mention specific – example of how this can be used, I’d like to explain one method of finding the time for “Tzeit haKochavim” (“nightfall”, which is more poetically described as the time when it’s dark enough to see 3 large stars in the sky). For this particular method, the following series of calculations are used:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Select the date of the equinox (spring or fall)&lt;/li&gt;
&lt;li&gt; Get the time for sunset&lt;/li&gt;
&lt;li&gt; Get the time when the sun is 3.86 degrees below the horizon (after sunset)&lt;/li&gt;
&lt;li&gt; Get the difference in minutes between those 2 times&lt;/li&gt;
&lt;li&gt; Select the current date&lt;/li&gt;
&lt;li&gt; Calculate “seasonal minutes” – an even division of daylight
6.1) Subtract sunset from sunrise to get the total amount of daylight
6.2) Divide that time into 12 even “seasonal hours”
6.3) Divide 1 seasonal hour into 60 even “seasonal minutes”&lt;/li&gt;
&lt;li&gt; multiply the clock minutes you got from the equinox day calculations and multiply them by seasonal minutes.&lt;/li&gt;
&lt;li&gt; And finally, add THAT number of minutes to sunset, to get the time of “nightfall” / “Tzeit haKochavim”&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Confused? Yep, me too. It took me a while to wrap my head around this. But here’s what it looks like in code:&lt;/p&gt;

&lt;p&gt;First, let’s set our location and today’s date:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$locname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Beit Knesset Chochmat Shlomo, Beachwood, OH"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$lat&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;41.4939407&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$long&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;81.516709&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$elev&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$tz&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'America/New_York'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$getdate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$getyear&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$getdate&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nv"&gt;$getmonth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'m'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$getdate&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nv"&gt;$getday&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'d'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$getdate&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, we’re going to create a location object, and use that location object to create a calendar object set to an equinox day (in this case March 20).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GeoLocation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$locname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$long&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$elev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$tz&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="nv"&gt;$eqzmanim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ComplexZmanimCalendar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$location&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getyear&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'20'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get sunset for that day, along with the time the sun is 3.86 degrees below the horizon&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$eqsunset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$eqzmanim&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getsunset&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$eqtzeit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$eqzmanim&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getSunsetOffsetByDegrees&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mf"&gt;3.86&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get the number of minutes between sunset and 3.86 degrees after sunset.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$tzeitmin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;number_format&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;float&lt;/span&gt;&lt;span class="p"&gt;)((&lt;/span&gt;&lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$eqtzeit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$eqsunset&lt;/span&gt;&lt;span class="p"&gt;))),&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OK, now it’s time to get some calculations for TODAY’S date. We’ll create a new calendar object and grab sunrise and sunset:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$todayzmanim&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ComplexZmanimCalendar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$location&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getyear&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getmonth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$getday&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$sunrise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$todayzmanim&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getsunrise&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;$sunset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$todayzmanim&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;getsunset&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we’ll divide the time between sunrise and sunset into 12 equal parts (a “sha’ah” in Hebrew), and then divide one sha’ah into 60 even parts. That will effectively give us the ratio of seasonal minutes to clock minutes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$stdshaamin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;number_format&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;float&lt;/span&gt;&lt;span class="p"&gt;)((&lt;/span&gt;&lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sunset&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sunrise&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'.'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$stdzmaniot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$stdshaamin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we multiply the number of minutes from our equinox day times the seasonal minute ratio.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$tzeitadjustment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$tzeitmin&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;$stdzmaniot&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And finally, we add that adjustment to today’s sundown (also note we have to multiply the adjustment * 60 to make the clock math work out).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$todaytzeit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Y-m-d G:i:s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;strtotime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$sunset&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nv"&gt;$tzeitadjustment&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And let’s output it to see what we get:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"sundown: &lt;/span&gt;&lt;span class="nv"&gt;$sunset&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;tzeit: &lt;/span&gt;&lt;span class="nv"&gt;$todaytzeit&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;adjustment: &lt;/span&gt;&lt;span class="nv"&gt;$tzeitadjustment&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For June 10, 2025, the output would look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sundown: 2025-06-10 20:59:34
tzeit: 2025-06-10 21:19:59
adjustment: 20.4228
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Good Night, My Someone
&lt;/h2&gt;

&lt;p&gt;Believe it or not, we’re reached the end of my “Time Data Series”. I will, of course, keep adding things as I learn them myself. But – unless you have something specific you’d like to see (which, by all means, please tell me about in the comments), I’m going to turn out the lights, take a moment to admire the stars both for their beauty and the breathtaking wonder at the complexity of their movements, and head to bed.&lt;/p&gt;

&lt;p&gt;Thank you for coming along on this ride with me.&lt;/p&gt;

</description>
      <category>java</category>
      <category>opensource</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
