<?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>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>
    <item>
      <title>HOW TO DEVREL: Fuel for Your Creativity</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Fri, 04 Jul 2025 01:54:58 +0000</pubDate>
      <link>https://dev.to/leonadato/how-to-devrel-fuel-for-your-creativity-1jia</link>
      <guid>https://dev.to/leonadato/how-to-devrel-fuel-for-your-creativity-1jia</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;&lt;a href="https://www.adatosystems.com/2025/03/31/how-to-devrel-what-i-learned-from-spider-man-the-musical/" rel="noopener noreferrer"&gt;In my last post&lt;/a&gt; I talked about re-factoring your content from one form into another (blog to video, video to conference talk, conference talk to podcast, etc.). Which is good as far as that idea goes, but there is so much more you can do.&lt;/p&gt;

&lt;p&gt;In fact, let’s do a thought exercise:&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea Engine Challenge
&lt;/h2&gt;

&lt;p&gt;Challenge #1: Put 1 minute on the timer, take your hands off your keyboard / phone (meaning: NO INTERNET!) and then:&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;name 10 (or more) sports teams&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How many did you get? How many more could you have come up with if you had more time? How many could you have gotten if you could have used the internet?&lt;/p&gt;

&lt;p&gt;Challenge #2: Put 3 minutes on the timer, take your hands off the internet, and then:&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;List 25 (or more) songs with the word “love” in the title&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Good work! Once again, take a moment to reflect: How many more could you have done with more time, with the internet, or if you could have worked with a partner.&lt;/p&gt;

&lt;p&gt;Challenge #3: Put 5 minutes on the timer, once again no internet, and then:&lt;br&gt;&lt;br&gt;
&lt;em&gt;&lt;strong&gt;List 50 (or more) recipes – just the name/title, not the ingredients&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And for the last time, take time to think about how many more you could have done with help (internet, friends, more time).&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Challenge
&lt;/h2&gt;

&lt;p&gt;Now give yourself a luxurious 10 minutes on the clock. You’re allowed to use the internet, or phone a friend, or whatever else you want. And see if you can:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;List 100 content ideas&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;OK, stop (whether it’s been 10 minutes, or 1 minute, or no minutes at all). If you’re like most folks, that challenge felt distinctly different, and not in a good way. If so, the first thing to understand is that it’s totally normal. Coming up with content ideas isn’t the same as coming up with city names or sports teams or song titles.&lt;/p&gt;

&lt;p&gt;The second thing to consider: Why? What was so different about coming up with content ideas versus songs or recipes? Likely, one of the primary reasons is that, whether consciously or not, you had a system in place for the first 3. You probably started listing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Sports teams from places where I’ve lived&lt;/li&gt;
&lt;li&gt;  Pop songs from high school (or some other significant period of your life)&lt;/li&gt;
&lt;li&gt;  Recipes I know how to make&lt;/li&gt;
&lt;li&gt;  …etc…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BUT… your brain, if it’s anything like mine, gave no such immediate framing when it came to the challenge for content. Again, if you’re like me, reading that question felt like opening a door onto a vast barren, featureless wasteland where there was very little to latch onto, to connect the dots with, to even build a series of ideas around.&lt;/p&gt;

&lt;h2&gt;
  
  
  Framework is the Key
&lt;/h2&gt;

&lt;p&gt;That is the brilliant observation behind Melanie Deziel’s book, “&lt;a href="https://www.melaniedeziel.com/the-content-fuel-framework" rel="noopener noreferrer"&gt;The Content Fuel Framework&lt;/a&gt;“. In the book, she outlines a few central issues with content creation, and then offers a single conceptual solution which is simple, repeatable, and effective.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.adatosystems.com/wp-content/uploads/2025/03/Content-Fuel-Framework-cover.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.amazonaws.com%2Fuploads%2Farticles%2Fv23k9m3lsvsptq5szl22.jpg" width="302" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m going to stop here and ask you to at least click the link and consider buying the book. I believe it’s that good. In fact, if you plan to buy the ebook or audiobook version, then your time will be better spent reading THAT instead of THIS. But if you’re still on the fence, by all means keep reading so that I hopefully convince you by the end of this post.&lt;/p&gt;

&lt;h2&gt;
  
  
  Format Follows Focus
&lt;/h2&gt;

&lt;p&gt;“I NEED AN 800-WORD BLOG POST ON ______!”&lt;/p&gt;

&lt;p&gt;These words, uttered by far too many of my managers over the years, are as frustratingly vague as they are common. I’ve taken to muttering (usually under my breath and after ensuring my zoom call is on mute) “Would you like fries with that?” When I’m feeling slightly less snarky I try to get some details. “OK, so you want 800 words on Kubernetes and IOT. Anything specific ABOUT kubernetes and IOT?”&lt;/p&gt;

&lt;p&gt;“Nope!” Chirps this (only slightly fictionalized) manager, “The SEO is trending on those two terms, so I just need you to, you know…” (and then they waggle their fingers at the computer screen as if casting a spell.)&lt;/p&gt;

&lt;p&gt;Ignoring the whole “SEO-term-driven content management strategy of doom” for a moment, a deeper issue is the belief that CONTENT == BLOG. Content can, obviously, take many forms. But equally problematic is when we are asked to “make me a video on ______”, or “Can you whip up a podcast episode about _______”.&lt;/p&gt;

&lt;p&gt;The issue, Ms. Deziel points out, isn’t the fact that they are asking for content, it’s that they (and we) are starting with the format, and working backward to a topic. Worst of all is that a distinct framing, or point of view, isn’t even part of the consideration.&lt;/p&gt;

&lt;p&gt;First and foremost, “The Content Fuel Framework” advises, we need to start with the FOCUS of the content piece.&lt;/p&gt;

&lt;p&gt;What do I (and more importantly, Ms. Deziel) mean by “focus”? It’s not the topic. Your topic can be kubernetes, or IOT, or mainframes, or kubernetes mainframes running on IOT, or whatever.&lt;/p&gt;

&lt;p&gt;Your Focus is&amp;nbsp;&lt;em&gt;“…the approach we take to sharing [our message].”&lt;/em&gt;&amp;nbsp;If you feel like that description is unhelpfully abstract, let me offer some examples. Your focus might be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Basics&lt;/li&gt;
&lt;li&gt;  Details&lt;/li&gt;
&lt;li&gt;  People&lt;/li&gt;
&lt;li&gt;  History&lt;/li&gt;
&lt;li&gt;  Opinion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first two are the easiest types of focus to understand. For “Basics”, just think of a content piece titled “Getting started with _____”. Meanwhile “Details” is the grown-up cousin of Basics. Imagine a title like “Everything you need to know about _____” or “A S]Step by Step Guide to _____.”&lt;/p&gt;

&lt;p&gt;But the other focus examples above are less obvious. “People” might include a title like “What led John Smith to invent the mainframe?” or “A profile of the top 3 movers and shakers in the world of kubernetes today”.&lt;/p&gt;

&lt;p&gt;In her book, the author shares 10 focus areas, with detailed descriptions of how they work. My goal today is to give you a sense of how a “focus” works, but not to outline them all.&lt;/p&gt;

&lt;p&gt;Once a focus is chosen, then (and, I’d argue, ONLY then) can you consider the &lt;strong&gt;&lt;em&gt;format&lt;/em&gt;&lt;/strong&gt;. Some of the formats are obvious – writing, audio, and video. Some might not have leapt to your mind but make sense once you see them – Infographic, timeline, Quiz. Others require explanation to fully understand, like “Tool” and “Map”.&lt;/p&gt;

&lt;p&gt;Again, my goal here isn’t to list or describe them all, but to indicate that as content creators, our habit of always reaching for the same old formats doesn’t serve us well. Expanding our range of options allows us to find new angles to tell familiar stories; and to find formats that better suit those stories rather than shoehorning everything into a blog or a stare-at-the-camera-and-talk style video.&lt;/p&gt;

&lt;h2&gt;
  
  
  Greater Than The Sum of It’s Parts
&lt;/h2&gt;

&lt;p&gt;“The Content Fuel Framework” offers 10 focuses (focii?), and 10 formats. These are somewhat interchangeable, meaning you could start with a “People” focus and create a blog, AND a video, AND a podcast, AND an image gallery, AND…&lt;/p&gt;

&lt;p&gt;I’m no Alfred Einstein when it comes to math, but I’m pretty sure that 10 x 10 gives us, theoretically, a single topic (Kubernetes and IOT) with 100 content pieces.&lt;/p&gt;

&lt;p&gt;Realistically, you’re not going to do that. Some focuses simply lend themselves to certain formats better than others. More importantly some core topics will more readily lend themselves to certain focuses than others.&lt;/p&gt;

&lt;p&gt;But having explained The Content Fuel Framework, I’d now ask you to scroll back and consider the challenge I set before you at the start of this blog: 100 content ideas in 10 minutes. As you think about how far you could get before the buzzer sounds, it’s my sincere hope that you feel better, if not equal to the challenge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Through Structure, Freedom
&lt;/h2&gt;

&lt;p&gt;It turns out that having a framework – a set of rules, guidelines, even limitations – can create clarity by eliminating ambiguity.&lt;/p&gt;

&lt;p&gt;I’m not implying that this is the only way, or even the One True Way to create content. “The Content Fuel Framework” is just one way to break out of a rut and find a new way to approach what is, for most of us, a significant part of the day to day work of DevRel. There are, of course, many others ways (feel free to share them in the comments).&lt;/p&gt;

&lt;p&gt;More importantly, your newfound confidence (however you got it) in generating ideas, angles, and implementations for content will translate to an improved ability to collaborate with the teams at work: First, you hopefully now have a structure you can use to teach &lt;strong&gt;&lt;em&gt;them&lt;/em&gt;&lt;/strong&gt; that there’s more to DevRel than writing a blog; and from there you have ways to help them tell the best possible stories. Stories that reach, help, and resonate with the greatest number of people.&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>creativity</category>
      <category>contentwriting</category>
    </item>
    <item>
      <title>HOW TO DEVREL: What I Learned From "Spider-Man, The Musical"</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Fri, 04 Jul 2025 01:53:33 +0000</pubDate>
      <link>https://dev.to/leonadato/how-to-devrel-what-i-learned-from-spider-man-the-musical-lh5</link>
      <guid>https://dev.to/leonadato/how-to-devrel-what-i-learned-from-spider-man-the-musical-lh5</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;You wrote a blog. You’re happy with it. Proud of it, even. You like the way you captured your voice and style in the written form. You also like what the blog says – what it teaches the reader. It’s a good little blog. In your imagination, you give it an affectionate little pat on the head. You click “Post” and make sure it shows up on the public-facing site. Maybe you even give it one more little read-through.&lt;/p&gt;

&lt;p&gt;OR… you deliver a conference talk. The slides keep people’s attention, your delivery and timing is spot-on. You get laughs at just the right moments, and there are plenty of questions for you at the end. As the applause ends and people head for the next session, you take a deep breath, unplug your equipment, and close the slide deck.&lt;/p&gt;

&lt;p&gt;OR… you created a video. Again, you’re happy with it – maybe even a little proud – for all the same reasons as I mentioned previously. You give it one more watch, then click “Publish”.&lt;/p&gt;

&lt;p&gt;Time to move on, right?&lt;/p&gt;

&lt;p&gt;Then you get a message. It might be from someone in the company, it might be a contact on social medial. Heck, it might even be your Mom. But the message says “You should turn this into a blog/video/conference talk!” Meaning, take it from the form it’s in now, and turn it into one of the other forms (or any one of a few different options that I’ll get to shortly).&lt;/p&gt;

&lt;p&gt;Should you though? I mean, you just SAID everything you have to say. Why say it again? Why water down the power, effectiveness, and presence of the initial form by creating a derivative work?&lt;/p&gt;

&lt;h2&gt;
  
  
  An Intertwining Web of Tales
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.adatosystems.com/wp-content/uploads/2025/03/Spider-Man_musical.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.amazonaws.com%2Fuploads%2Farticles%2Feqc3vhegnwxzk9zgv46m.jpg" alt="Poster for the Broadway musical " width="234" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the dilemma we (creative folks in general, and technical content creators in particular) face when we consider the idea of “re-use”. And I’ll tell you why you should do it. Or at least strongly consider doing it: Because “Spider-Man, The Musical” exists.&lt;/p&gt;

&lt;p&gt;Here’s tl;dr of what I mean: the story of “Spider-Man” exists in many many forms. But each format works in it’s own unique way that is complimentary to, but separate from, the others.&lt;/p&gt;

&lt;p&gt;Spider-Man, of course, began his life on the printed page. But even there, a single comic book series wasn’t enough. Since it’s inception in 1962 there have been more than 60 different serialized Spider-Man story-lines, with multiple series running simultaneously for much of that time.&lt;/p&gt;

&lt;p&gt;Then came the&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=4o29VoxtsFk" rel="noopener noreferrer"&gt;Saturday morning cartoon&lt;/a&gt;. It wasn’t better OR worse than the comic. It was DIFFERENT. It was able to do things the pulp fiction version couldn’t. And of course, there were things the paper version could do that could never make the translation to animation. Likewise the&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=gjgaf1sNz8E" rel="noopener noreferrer"&gt;1977 live-action tv series&lt;/a&gt;&amp;nbsp;was able to present things that were missing in both the printed and animated stories.&lt;/p&gt;

&lt;p&gt;And so it goes – from print to animated tv to live tv to live movies to animated moves and around and around, like a spider spinning it’s web – each form able to highlight and even elevate some aspects, but unable to depict others.&lt;/p&gt;

&lt;p&gt;I would continue this entire analogy to the musical, but in reality “Spider-Man: Turn Off the Dark” struggled in just about every way. So I’m going to pivot to a different story to continue my point&lt;/p&gt;

&lt;h2&gt;
  
  
  The Circle of Creative Content
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.adatosystems.com/wp-content/uploads/2025/03/thelionking.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.amazonaws.com%2Fuploads%2Farticles%2Ff4zcunzbmb1x9xy6yxha.jpg" alt="Disney's " width="540" height="810"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Lion King was an award winning movie, a magical experience for those who were a certain age in 1994 when it came out. When the musical was announced in 1997, I was skeptical. How could a live action portrayal of Simba’s journey ever capture the sweeping majesty and raw power of the movie? And of course, my skepticism was utterly unfounded. The musical took such a different, and equally majestic form that it captured imaginations in a way the movie could not.&lt;/p&gt;

&lt;p&gt;Pivoting further away from wall-crawling web-heads, there are plenty of other cases where an original creative work was transformed – either in it’s entirety or in it’s essence – to a different form that could arguably be said was as strong as, if not stronger, than the original. Just one such example is when Eric Clapton transformed the&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=DzdbAD-3a9c" rel="noopener noreferrer"&gt;wailing rock song “Laylla”&lt;/a&gt;&amp;nbsp;into a&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=Mm7GWGppDgg" rel="noopener noreferrer"&gt;jazzy and almost haunting acoustic version&lt;/a&gt;&amp;nbsp;for MTV’s “Unplugged”.&lt;/p&gt;

&lt;h2&gt;
  
  
  Revisiting the Question
&lt;/h2&gt;

&lt;p&gt;Coming back to the initial dilemma: Should you take your original content and transform it to a different format? My answer should be obvious: of course. Taking a video and blog-ifying; taking a video and blogging it; taking a conference talk and recording it; each of these modulations from one format to another will allow you to elevate, highlight, and showcase aspects of the core narrative in ways that the original delivery could not.&lt;/p&gt;

&lt;p&gt;Moreover, the work of transforming it will force you to consider things from an entirely different point of view, and this might shine a light on elements or ideas that you completely overlooked during your first pass – either because the original format couldn’t support it or because the very act of translation requires re-evaluation.&lt;/p&gt;

&lt;p&gt;Far from being watered down, you may discover that your story – whatever form it’s in – becomes stronger, more cohesive, more well-defined as a result.&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>contentwriting</category>
      <category>content</category>
      <category>creativity</category>
    </item>
    <item>
      <title>HOW TO DEVREL: The Texas Sharpshooter</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Thu, 03 Jul 2025 19:49:22 +0000</pubDate>
      <link>https://dev.to/leonadato/how-to-devrel-the-texas-sharpshooter-41p5</link>
      <guid>https://dev.to/leonadato/how-to-devrel-the-texas-sharpshooter-41p5</guid>
      <description>&lt;p&gt;&lt;em&gt;DISCLAIMER: I do not believe that I’m the universe’s gift to DevRel. I don’t have all the answers, all the experiences, all the skills, or even all the Pokemon. What I do have is my experiences, collected over 11 years of doing this work. That’s 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;Work at a software vendor (or really any group that creates features for a set of consumers – whether those consumers are internal users or external customers) for any length of time and inevitably you experience a moment when a new feature, module, or capability is released to the public, and the response is the human equivalent of this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.adatosystems.com/wp-content/uploads/2025/03/dex-ezekiel-fg8tdcxrkrA-unsplash-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.amazonaws.com%2Fuploads%2Farticles%2F84m272t50c7frlm0g1tq.jpg" width="640" height="984"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It becomes clear that the intended audience has no idea what the new feature is, why it’s there, or – most critically – what problem or use-case it addresses.&lt;/p&gt;

&lt;p&gt;This is not (or at least not always) because the feature is badly designed, ill conceived, or poorly executed. Sometimes, the response from users is because the problem hasn’t been socialized well enough. Nobody understands the nature of the disease, and therefore they can’t understand the importance of the cure.&lt;/p&gt;

&lt;p&gt;As a DevRel, almost as important as our work helping folks understand HOW (to install, to use, to extend) is explaining WHY: Why this capability is necessary? Why we decided to create this instead of 6 other things on our backlog? Why this feature provides an optimal way to solve a particular problem.&lt;/p&gt;

&lt;p&gt;But I’ll be honest: Explaining HOW is relatively easy. Explaining WHY can be a lot of work.&lt;/p&gt;

&lt;p&gt;One of the techniques I use that makes explaining WHY easier is a variation of the&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/Texas_sharpshooter_fallacy" rel="noopener noreferrer"&gt;Texas Sharpshooter story&lt;/a&gt;. While this is normally categorized as a logical fallacy (and, when used in data analysis or debate, it is), for Developer Relations Advocates it is actually a fairly useful technique.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Man, the Myth, the Legend
&lt;/h2&gt;

&lt;p&gt;I’ll start with the colorful story behind the evocative name:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Once there was a prince who was also an accomplished marksman, who was traveling through the land. Along the road he stopped at a village to rest his mount. He sat down under a tree—and right there in front of him was the side of a big barn. He couldn’t believe his eyes. That whole side of the barn was covered with little circles, drawn with chalk, and in the center of each circle was a bullet hole! He jumped up in amazement. Who is this sharpshooter around here who never misses? Maybe they could have a little contest while he was here.&lt;/p&gt;

&lt;p&gt;So he knocked on the door of the farmhouse and asked if they knew who the marksman was. Yes, they did. They brought him a barefoot boy of about twelve. ‘Here he is, Your Excellency, our son the sharpshooter!’ Of course, the prince was surprised. He asked the boy, ‘Tell me, young fellow, how do you manage to hit the bullseye all the time? Here, look at all these medals. I’ve just finished five years of training and even I couldn’t hit the target every single time.’&lt;/p&gt;

&lt;p&gt;‘Oh,’ said the boy, ‘there’s nothing to it. I just like to shoot. So I shoot at the side of the barn and then I take a piece of chalk and draw a circle around the hole.’&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Context Matters
&lt;/h2&gt;

&lt;p&gt;Shooting the bullet and then drawing the target later makes for a bad-faith argument, but it turns out it’s perfect for content-planning.&lt;/p&gt;

&lt;p&gt;When you work “inside”, meaning you are working with the developers of a product, you are actually existing weeks or even months in the future. What I mean is, your day to day thoughts and internal discussions are about a future version: how it will work, the problems it solves, etc. Whereas the users of the product only know about the features and capabilities they have today.&lt;/p&gt;

&lt;p&gt;It’s often a challenge to remember that your context – the problem you’ve been working on for weeks, the one that will be solved with this next release – is completely unknown and unexpected by the majority of users. They haven’t been pondering the complexities of the use case. THEY haven’t been investigating ways to remove friction, toil, or error.&lt;/p&gt;

&lt;p&gt;Your v-dot-now is their v-dot-next.&lt;/p&gt;

&lt;p&gt;The mistake many organizations (and the DevRel’s right along with them) make is releasing the new version with the expectation that everything – the problems, use cases, and purpose of the new version – will be intuitively obvious because, duh, we’ve been talking about it FOREVER, right?&lt;/p&gt;

&lt;p&gt;That’s how you get the German shepherd look when you do the big reveal.&lt;/p&gt;

&lt;p&gt;YOU know what the feature is going to do, what problems it will solve, what improvements it will bring. BUT… you also know it won’t be ready for a little while. Talking about it now, when features could slip, deadlines might be missed, priorities re-arranged… heck, when entire teams could be re-assigned… promoting the solution now would be asking for problems when things don’t go as planned.&lt;/p&gt;

&lt;p&gt;But you also can’t talk about nothing. And that’s where the Texas Sharpshooter technique comes in.&lt;/p&gt;

&lt;p&gt;The new feature is the metaphorical bullet. It’s already been shot, in the sense that development work is already happening. You know where it hit, so to speak. Despite the fact that nobody but your internal team can see it, the landing point is there, on the wall. You’re job right now is to draw a circle around that spot by socializing the problem. You draw attention to the problem, the point where the bullet WILL appear, by drawing a big old bull’s eye on that spot.&lt;/p&gt;

&lt;p&gt;In blogs, opinion pieces, panel conversations, videos, or whatever, your job as a DevRel is to talk up the challenge, cost, and toil of the issue – what it is, why it’s a problem, how much damage it does, and the current (imperfect, complex, kludge-y) solutions that exist.&lt;/p&gt;

&lt;p&gt;Period. That’s it. No parting of heavenly clouds, no angelic choir. Just you and the audience bonding over your shared experiences. You give a knowing look that says “Life in tech, amirite?”&lt;/p&gt;

&lt;p&gt;By doing this, you establish the context for the eventual unveiling.&lt;/p&gt;

&lt;h2&gt;
  
  
  TAMO (then a miracle occurred)
&lt;/h2&gt;

&lt;p&gt;The best part of this technique is that you can have multiple threads like this going at the same time. Because let’s face it, we’re in tech and we looooove to complain. And show off. And complain about showing off. And show of how we compla…. never mind. You get it.&lt;/p&gt;

&lt;p&gt;My point is that the companies where we typical work as DevRel Advocates usually have multiple new features, modules, and improvements in the pipeline at any given time. Maybe only a couple will hit GA soon, but we can get ahead of the curve by socializing those problems and fostering the online discussions, debates, counterpoints, etc long before the release date.&lt;/p&gt;

&lt;p&gt;More than just being a clever marketing ploy, the sharpshooter concept also allows the business to understand how customers and the community will ultimately react to the new release. By gauging the audience’s overall understanding of the technologies and techniques, the organization can have improved documentation documentation or educational resources ready to go. By listening to the specifics of the dialogue about the problem itself, adjustments (or even UX/UI sessions) can be added to the timeline.&lt;/p&gt;

&lt;p&gt;When used thoughtfully, this technique allows for a better overall product as well as a better overall release.&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>contentwriting</category>
    </item>
    <item>
      <title>HOW TO DEVREL: It Might Not Be New, but It's Yours</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Thu, 03 Jul 2025 19:47:08 +0000</pubDate>
      <link>https://dev.to/leonadato/how-to-devrel-it-might-not-be-new-but-its-yours-1m5d</link>
      <guid>https://dev.to/leonadato/how-to-devrel-it-might-not-be-new-but-its-yours-1m5d</guid>
      <description>&lt;p&gt;Lately, I’ve had several conversations about “how to DevRel”. Some of that is absolutely related to my current job search. But it’s also been a topic that comes regularly even when I’m settled into a company: When meeting folks at a conference who want to understand what my title (which has fluctuated between “DevRel Advocate”, “Technical Evangelist”, and even “Head Geek”) means; Or discussing specific techniques with other DevRels on our&amp;nbsp;&lt;a href="https://devrelcollective.fun/" rel="noopener noreferrer"&gt;super secret slack channel&lt;/a&gt;; Or justifying my existence internally because, even though&amp;nbsp;&lt;a href="https://en.wikipedia.org/wiki/Developer_relations" rel="noopener noreferrer"&gt;the role has existed since 1980&lt;/a&gt;&amp;nbsp;half the company still doesn’t know what the frak it is, nor what it involves.&lt;/p&gt;

&lt;p&gt;Although that last part is more due to the fact that “Developer Relations” is one of those five-jobs-in-a-trench-coat types of roles, so it’s understandable.&lt;/p&gt;

&lt;p&gt;In any case, I’ve been mulling over not just what DevRel&amp;nbsp;&lt;em&gt;IS&lt;/em&gt;, but also the ways I approach the work of DevRel, from writing to video to community to speaking to demos and onward. And I thought I’d blog about it for a bit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DISCLAIMER&lt;/strong&gt;: I do not believe, for a moment, that I am the universe’s gift to DevRel. I don’t have all the answers, all the experiences, all the skills, or even all the Pokemon. What I do have is MY experiences, and while they aren’t the last word in DevRel, they are uniquely MY word about DevRel, collected over 11 years of doing this work. That’s what I plan to share.&lt;/p&gt;

&lt;p&gt;We’ll call this my “How To DevRel” series, and see where it takes us. Today I want to address a common concern among content creators of all stripes, which is the fear that the thing you’re creating has already been created in some form by someone else, and who am I to take another swing at that topic now?&lt;/p&gt;

&lt;h2&gt;
  
  
  Nothing New Under the Sun
&lt;/h2&gt;

&lt;p&gt;I’ll start by selectively cut-quoting Marianne Williamson (you can read&amp;nbsp;&lt;a href="https://www.goodreads.com/quotes/928-our-deepest-fear-is-not-that-we-are-inadequate-our" rel="noopener noreferrer"&gt;the full quote here&lt;/a&gt;)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We ask ourselves, ‘Who am I to be brilliant, gorgeous, talented, fabulous?’ Actually, who are you not to be? […] Your playing small does not serve the world. There is nothing enlightened about shrinking so that other people won’t feel insecure around you. We are all meant to shine, as children do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You’re afraid you’ll say something that has been said before? That you’ll demonstrate a tool or technique that’s been covered a dozen (or a hundred, or a thousand) times by the original inventor, and by someone from the inventor’s company, and by 6 different IT luminaries, (and so on, all the way down to the inventor’s dog)?&lt;/p&gt;

&lt;p&gt;Let me put that worry into a different context to see if it still holds water:&lt;/p&gt;

&lt;p&gt;Do you remember when you heard the song “&lt;a href="https://www.youtube.com/watch?v=GJ36gbGlm8Y" rel="noopener noreferrer"&gt;White Christmas&lt;/a&gt;” that one time, and of course you never had to listen to it again, because you heard it already? How about the fact that Bing Crosby sang it just once, because he didn’t want to “be derivative”? And of course, nobody has ever sung “White Christmas” ever since, because of course Bing sang it and so it’s been sung and that’s all there is to it.&lt;/p&gt;

&lt;p&gt;Of course not. The premise that we experience art once, that the first rendition is the only authentic one, is ridiculous.&lt;/p&gt;

&lt;p&gt;Not only do we listen to the same recording over and over, many folks go out of their way to see the same performer sing the exact same song (or set of songs) multiple times. We go to hear cover bands play the exact same set but of course, with their own personal twist on things. We go to multiple renditions of a play or musical when they show up in our town.&lt;/p&gt;

&lt;p&gt;In short, a story (whether it’s written or spoken or sung or danced or painted) becomes more powerful, not less, when we hear it through the lens of a different person’s experience and style.&lt;/p&gt;

&lt;h2&gt;
  
  
  Imitation is…
&lt;/h2&gt;

&lt;p&gt;Yeah yeah, we all know &lt;a href="https://www.goodreads.com/quotes/558084-imitation-is-the-sincerest-form-of-flattery-that-mediocrity-can" rel="noopener noreferrer"&gt;that quote&lt;/a&gt;. And also the one &lt;a href="https://www.goodreads.com/quotes/629531-good-artists-copy-great-artists-steal" rel="noopener noreferrer"&gt;Picasso said about stealing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But here’s something important to understand: &lt;strong&gt;&lt;em&gt;Imitation&lt;/em&gt;&lt;/strong&gt; is when you do something that someone else has already done in the same way they did, without adding anything of your own, with the expressed intent of doing it that way BECAUSE the other person did it that way.&lt;/p&gt;

&lt;p&gt;For creative folks, pure imitation is actually really REALLY difficult. It’s nearly impossible NOT to add our own spin on something. Even comedians who do impressions of other people understand that the real humor lies in “doing” the other person with just enough of a twist that it’s not just different for the sake of being different, it’s different in a small, subtle, and unexpected way. That’s what makes it funny.&lt;/p&gt;

&lt;p&gt;On the other hand, even creations that were themselves inspired by other creations bring something new. “&lt;a href="https://www.youtube.com/watch?v=wh6yOC3rFes" rel="noopener noreferrer"&gt;It Ain’t Me Babe&lt;/a&gt;” by Bob Dylan was inspired by The Beatles “&lt;a href="https://www.youtube.com/watch?v=S302kF8MJ-I" rel="noopener noreferrer"&gt;She Loves You&lt;/a&gt;“. Sheryl Crow’s “&lt;a href="https://www.youtube.com/watch?v=ClbmWkbocoY" rel="noopener noreferrer"&gt;All I Wanna Do&lt;/a&gt;” was inspired by Wyn Cooper’s poem “&lt;a href="https://genius.com/Wyn-cooper-fun-annotated" rel="noopener noreferrer"&gt;Fun&lt;/a&gt;“. Claude Monet’s “&lt;a href="https://www.connaissancedesarts.com/musees/musee-orsay/le-dejeuner-sur-lherbe-de-monet-focus-sur-un-chef-doeuvre-11136978/" rel="noopener noreferrer"&gt;Déjeuner sur L’Herbe&lt;/a&gt;” was inspired by Edouard Manet’s &lt;a href="https://commons.wikimedia.org/wiki/File:Edouard_Manet_-_Le_D%C3%A9jeuner_sur_l%27herbe_%2852257507870%29.jpg" rel="noopener noreferrer"&gt;painting of the same name&lt;/a&gt;. To go a little further afield, the Broadway musical “&lt;a href="https://playbill.com/production/sunday-in-the-park-with-george-booth-theatre-vault-0000001686" rel="noopener noreferrer"&gt;Sunday in the Park with George&lt;/a&gt;” was, of course, inspired by the Seurat painting “&lt;a href="https://www.artic.edu/artworks/27992/a-sunday-on-la-grande-jatte-1884" rel="noopener noreferrer"&gt;Un dimanche après-midi à l’Île de la Grande Jatte&lt;/a&gt;” (A Sunday Afternoon on the Island of La Grande Jatte) .&lt;/p&gt;

&lt;p&gt;It’s OK to find inspiration and insight in the work of others, to build your story out of something you saw, read, or heard. Of course give credit where it’s due, but also trust that your creation is going to have it’s own new elements that make it fresh, valuable, and uniquely yours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Saying it With Your Voice Adds Power
&lt;/h2&gt;

&lt;p&gt;When you write (or make a video, or talk at a conference) about a new technique, technology, or experience – one that’s not NEW-new, but rather new-to-you – you open the door not only to folks who, like you, haven’t known about it but also you allow people who were already familiar with it the chance to see it through your eyes. Your excitement, curiosity, and enthusiasm cast the well-known into a new light. You also create the opportunity to review and re-think that topic, to reconsider it’s value or application today.&lt;/p&gt;

&lt;p&gt;I believe in this idea so strongly, I took one of my conference talks – “&lt;a href="https://www.youtube.com/watch?v=TPzrdHNsvGE&amp;amp;list=PL3xK3UeH8dybSKLkbS8SXqkLIrJgYWVEY&amp;amp;index=10" rel="noopener noreferrer"&gt;Looking Back at a Lifetime of Poor Technical Choices&lt;/a&gt;“, and made it open source. I realized that even using the exact same format and structure, everyone’s journey and choices would come out so differently, and resonate so powerfully, that you could do 5 of the same talk in the row and they would all be interesting, compelling, entertaining, and informative. You can find it (and download it, and make it your own) &lt;a href="https://github.com/LeonAdato/os_poor-tech-choices" rel="noopener noreferrer"&gt;here on my github repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So… If you find yourself asking, “Who am I to give this demo? To write about this topic? To host this podcast? To be on this panel?” then, to paraphrase Ms. Williamson, “…Who are you NOT to?”&lt;/p&gt;

&lt;p&gt;She continues, powerfully,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“As we let our own light shine, we unconsciously give other people permission to do the same. As we are liberated from our own fear, our presence automatically liberates others.”&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devrel</category>
      <category>creativity</category>
      <category>content</category>
    </item>
    <item>
      <title>OTel Me Why</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 07 Apr 2025 04:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/otel-me-why-15ma</link>
      <guid>https://dev.to/leonadato/otel-me-why-15ma</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;LIMITED TIME OFFER! I’m ready for my next adventure as a DevRel advocate / Technical Evangelist / IT Talespinner. If that sounds like something you need, drop me a line &lt;a href="//leon@adatosystems.com"&gt;in email&lt;/a&gt; or on &lt;a href="https://www.linkedin.com/in/leonadato/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;My &lt;a href="https://www.adatosystems.com/2025/02/10/who-the-hell-is-going-to-pay-for-this/" rel="noopener noreferrer"&gt;blog on pricing&lt;/a&gt; from the other day caught the attention of the folks over at &lt;a href="https://www.metricfire.com/" rel="noopener noreferrer"&gt;MetricFire&lt;/a&gt;, and we struck up a conversation about some of the ideas, ideals, and challenges swirling around monitoring, observability, and its place in the broader IT landscape.&lt;/p&gt;

&lt;p&gt;At one point, JJ, the lead engineer, asked, “&lt;a href="https://www.adatosystems.com/2025/02/04/o-can-you-tel-me-how-to-get/" rel="noopener noreferrer"&gt;You blogged&lt;/a&gt; about gearing up to get a &lt;a href="https://www.cncf.io/training/certification/otca/" rel="noopener noreferrer"&gt;certification in Open Telemetry&lt;/a&gt;. What is it about OTel that has you so excited?”&lt;/p&gt;

&lt;p&gt;I gave a quick answer, but JJ’s question got me thinking, and I wanted to put some of those ideas down here.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;OTel is the best thing since…&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Let me start by answering JJ’s question directly: I find Open Telemetry exciting because it’s the biggest change in the way monitoring and observability are done since Traces (which came out around 2000, but wasn’t widely used until 2010-ish).&lt;/p&gt;

&lt;p&gt;And Traces were the biggest change since… ever. Let me explain.&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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfP_QCEf4eBjgeHwg5gZtVr-5KX0BfvmeoHEp8EW7Boiru8KnzeUCpqnY0Ju-WnbN0GG22XvtAZn0MjCaMrF-Hus0nxtP6u6yv0tzSoXUk-dtSx-1sfKnVyTiL4M0nKWajw3ZvJTQ%3Fkey%3D4O3ZOMrIzdQ7qurGP2BDsCsk" 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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXfP_QCEf4eBjgeHwg5gZtVr-5KX0BfvmeoHEp8EW7Boiru8KnzeUCpqnY0Ju-WnbN0GG22XvtAZn0MjCaMrF-Hus0nxtP6u6yv0tzSoXUk-dtSx-1sfKnVyTiL4M0nKWajw3ZvJTQ%3Fkey%3D4O3ZOMrIzdQ7qurGP2BDsCsk" width="760" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See this picture? This was what it was like to use monitoring to understand your environment back when I started almost 30 years ago. What we wanted was to know what was happening in that boat. But that was never an option.&lt;/p&gt;

&lt;p&gt;We could scrape metrics together from network and OS commands, we could build some scripts and db queries that gave me a little bit more insight. We could collect and (with a lot of work) aggregate log messages together to spot trends across multiple systems. All of that would give us an idea of how the infrastructure was running, and infer the things that might be happening topside. But we never really knew.&lt;/p&gt;

&lt;p&gt;Tracing changed all that. All of a sudden we could get hard data (and get it in real time) about what users were doing, and what was happening in the application when they did it.&lt;/p&gt;

&lt;p&gt;It was a complete sea change (pun intended) for how we worked and what we monitored. Even so, tracing didn’t remove the need for metrics and logs. And famous (or infamous) “three pillars” of observability.&lt;/p&gt;

&lt;p&gt;Recently I started working through the book &lt;a href="https://learningopentelemetry.com/" rel="noopener noreferrer"&gt;“Learning OpenTelemetry”&lt;/a&gt; and one of the comments that struck me was that these aren’t “three pillars” in the sense that they don’t combine to hold up a unified whole. Authors &lt;a href="https://github.com/tedsuo" rel="noopener noreferrer"&gt;Ted Young&lt;/a&gt; and &lt;a href="https://aparker.io/" rel="noopener noreferrer"&gt;Austin Parker&lt;/a&gt; re-framed the combination of Metrics, Logs, and Traces as “The three browser tabs of observability” because many tools put the effort back on the user to to flip between screens and put it all together by sight.&lt;/p&gt;

&lt;p&gt;On the other hand, OTel outputs is able to present all 3 streams of data as a single “braid”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.adatosystems.com/wp-content/uploads/2025/02/OTel_braid.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%2F7rdxuxvjw5lqfjjyhotp.png" alt="3 lines labeled tracing, metrics, and logs with the lines interweaving to form a braid. " width="600" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;From Learning OpenTelemetry, by Ted Young and Austin Parker, Copyright © 2024. Published by O’Reilly Media, Inc. Used with permission.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;It should be noted that despite OTel’s ability to combine and correlate this information, the authors of the book point out later that many tools still lack the ability to present it that way.&lt;/p&gt;

&lt;p&gt;Despite it being a work in progress (but what, in the world of IT, isn’t?) I still feel that OTel has already proven its potential to change the face of monitoring and observability.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;OTel is the&lt;/strong&gt; &lt;a href="https://en.wikipedia.org/wiki/Esperanto" rel="noopener noreferrer"&gt;&lt;strong&gt;Esperanto&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;of Monitoring&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Almost every vendor will jump at the chance to get you to send all your data to them. They insist that theirs is the One True Observability Tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/www.adatosystems.com/wp-content/uploads/2025/02/OTel_Ring.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%2Fi46v0ivbraif0lp5mnbt.png" alt="Image of the One Ring from the Lord of the Rings, with words superimposed saying " width="640" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In fact, let’s get this out in the open: There simply isn’t a singular “best” monitoring tool out there any more than there’s one singular “best” programming language, or car model, or pizza style.&lt;strong&gt;&lt;em&gt;*&lt;/em&gt;&lt;/strong&gt; There isn’t a single tool which will cover 100% of your needs in every single use case.&lt;/p&gt;

&lt;p&gt;And for the larger tools, even the use cases that aren’t part of their absolute sweet spot are going to cost you (in terms of hours or dollars) to get right.&lt;/p&gt;

&lt;p&gt;So you’re going to have multiple tools. It goes without saying (or at least it should) that you’re not going to ship a full copy of all your data to multiple vendors. Therefore a big part of your work as a monitoring engineer (or team of engineers) is to map your telemetry to the use cases they support, and thus to the tools you need to employ in those use cases.&lt;/p&gt;

&lt;p&gt;That’s not actually a hard problem. Sure, it’s complex, but once you have the mapping, making it happen is relatively easy. But, as I like to say, it’s not the cost to buy the puppy that is the problem, it’s the cost to keep feeding it.&lt;/p&gt;

&lt;p&gt;Because the tools you have today are going to change down the road. That’s when things get CRAZY hard. You have to hope things are documented well enough to understand all those telemetry-to-use-case mappings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;(Narrator: they will not, in fact, have it documented well enough)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then you have to also hope your instrumentation is documented and understood well enough to know how to de-couple tool x and instrument tool y such that you maintain the same capabilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;(Narrator: this is not how it will go down.)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But OTel solves both the “buying the puppy” and the “feeding the puppy” problem. My friend Matt Macdonald-Wallace (Solutions Architect at Grafana) put it like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;OTEL does solve a lot of the problems around ‘Oh great! now we’re trapped with vendor x and it’s going to cost us millions to refactor all this code’ as opposed to ‘Oh, we’re switching vendors? Cool, let me just update my endpoint…’&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not only that, but OTels ability to create pipelines (for those who are not up to speed on that concept, it’s the ability to identify, filter, sample, and transform a stream of data before sending it to a specific destination) means you can send the same data stream to multiple locations selectively. Meaning your security team can get their raw unfiltered syslog while it’s still on-premises. Some of the data – traces, logs, and/or metrics – can go to one or more vendors.&lt;/p&gt;

&lt;p&gt;Which is why I say: OTel is the esperanto of observability.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;OTel’s Secret Sauce isn’t OTLP&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;…it’s standardization.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before I explain why the real benefit to Otel is not OTLP, I should take a second to explain what OTLP is:&lt;/p&gt;

&lt;p&gt;If you look up “What is Open Telemetry Line Protocol?” you’ll probably find some variation of &lt;em&gt;“…a set of standards, rules, and/or conventions that specify how OTel elements send data from the thing that created it to a destination”&lt;/em&gt;. This is technically true, but also not very helpful.&lt;/p&gt;

&lt;p&gt;Functionally, OTLP is the magic box that takes metrics, logs, or traces and sends them where they need to go. It’s not as low level as, say, TCP, but in terms of how it changes a monitoring engineer’s day, it may as well be. We don’t &lt;em&gt;use&lt;/em&gt; OTLP so much as we &lt;em&gt;indicate&lt;/em&gt; it should be used.&lt;/p&gt;

&lt;p&gt;Just to be clear, OTLP is amazingly cool and important. It’s just not (in my opinion) AS important as some other aspects.&lt;/p&gt;

&lt;p&gt;No, there are (at least) two things that, in my opinion, make OTel such an evolutionary shift in monitoring:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Collectors&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;First, it standardizes the model of having a 3-tier, collector (not agent) in the middle, architecture. For us old-timers in the monitoring space, the idea of a collector is nothing new. In the bygone era of everything-on-prem, you couldn’t get away with a thousand (or even a hundred) agents all talking to some remote destination. The shift to cloud architecture changed all that, but it’s still not the best idea.&lt;/p&gt;

&lt;p&gt;Having a single (or small number) of load-balanced systems that take all the data from multiple targets – with the added benefit of being able to then process that data, filtering, sampling, combining, etc – before sending it forward is not just A Good Idea™, it can have a direct impact on your bottom line by only sending the data you WANT (and in the form you want it) out the egress port that racks up such a big part of your monthly bill.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Semantics&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Look, I’ll be the first to tell you that I’m not the world’s best developer. So the issue of semantic terminology doesn’t usually keep me up at night. What &lt;em&gt;DOES&lt;/em&gt; keep me up is the inability to get at a piece of data that I know should be there, but isn’t.&lt;/p&gt;

&lt;p&gt;What I mean is that it’s fairly common that the same data point – say bandwidth – is referred to by a completely different name and location on devices from two different vendors. And maybe that doesn’t seem so weird.&lt;/p&gt;

&lt;p&gt;But how about the same data point being different on two different types of devices from the same vendor? Still not weird?&lt;/p&gt;

&lt;p&gt;Let’s talk about the same data point being different on the same device type from the same vendor, but two different models? Getting weird, right (not to mention annoying).&lt;/p&gt;

&lt;p&gt;But the real kicker is when the same data point is different on two different parts of the same DEVICE.&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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXd73GRG-yw2aUQPAHsZFBKWhv7TLCsS9eXGXKDu91zHUwEJqRmX5Oi008nLSWRyXr2OgLU-m024Kv74qjaZq0mX0yN45eTFTQLqVg1cZMMa8KW77wT60iSm13Ucf9V4ytUg5gZt2Q%3Fkey%3D4O3ZOMrIzdQ7qurGP2BDsCsk" 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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXd73GRG-yw2aUQPAHsZFBKWhv7TLCsS9eXGXKDu91zHUwEJqRmX5Oi008nLSWRyXr2OgLU-m024Kv74qjaZq0mX0yN45eTFTQLqVg1cZMMa8KW77wT60iSm13Ucf9V4ytUg5gZt2Q%3Fkey%3D4O3ZOMrIzdQ7qurGP2BDsCsk" width="360" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve run down that particular rabbit whole, you have a whole different appreciation for semantic naming. If I’m looking for CPU or bandwidth or latency or whatever, I would really REALLY like for it to be called the same thing and be found in the semantically same location.&lt;/p&gt;

&lt;p&gt;OTel does this, and does it as a core aspect of the platform. I’m not the only one to have noticed it, either.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Several years ago, during a meeting between the maintainers of Prometheus and OpenTelemetry, an unnamed Prometheus maintainer quipped, “You know, I’m not sure about the rest of this, but these semantic conventions are the most valuable thing I’ve seen in a while.” It may sound a bit silly, but it’s also true.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;From Learning OpenTelemetry, by Ted Young and Austin Parker, Copyright © 2024. Published by O’Reilly Media, Inc. Used with permission.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Summarizing the Data&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I’ll admit that OpenTelemetry is still very (VERY) shiny for me.&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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdDX52vz277JrKyj84h-VQNk3th_iZ_svwHnXeiv2BLo8VVFiC1WmWhJyvZ-BleRCXCoQYfp7Oo-v_vTrVBC2ftp-JMjoaVdbZqyEWoDjv0_qmJ5tC-d0M9Gm08mTbewVGYP-PZUQ%3Fkey%3D4O3ZOMrIzdQ7qurGP2BDsCsk" 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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdDX52vz277JrKyj84h-VQNk3th_iZ_svwHnXeiv2BLo8VVFiC1WmWhJyvZ-BleRCXCoQYfp7Oo-v_vTrVBC2ftp-JMjoaVdbZqyEWoDjv0_qmJ5tC-d0M9Gm08mTbewVGYP-PZUQ%3Fkey%3D4O3ZOMrIzdQ7qurGP2BDsCsk" width="500" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But I’ll also admit that the more I dig into it, the more I find to like. Hopefully this blog has given you some reasons to check out OTel, too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;* OK, I lied. 1) Perl 2) The 1967 Ford Mustang 390 GT/A and 3) deep dish from Tel Aviv Kosher Pizza in Chicago&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>opentelemetry</category>
      <category>monitoring</category>
      <category>observability</category>
      <category>programming</category>
    </item>
    <item>
      <title>What happened isn't the point. How you respond is.</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 31 Mar 2025 04:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/what-happened-isnt-the-point-how-you-respond-is-29ip</link>
      <guid>https://dev.to/leonadato/what-happened-isnt-the-point-how-you-respond-is-29ip</guid>
      <description>&lt;p&gt;The first thing to be clear about is that “it” can happen to anybody, and it can happen at any time. The fact that it happens isn’t what you need to focus on. The details of what happened, and even how it played out, isn’t important. The truly important part is this:&lt;/p&gt;

&lt;p&gt;How will you respond?&lt;/p&gt;

&lt;p&gt;You may be thinking, “Why? Why would that matter? That sounds patronizing and trite.”&lt;/p&gt;

&lt;p&gt;I don’t think so (then again, of course I don’t, I’m the one writing about it. &lt;a href="https://www.adatosystems.com/2017/06/21/its-not-about-what-happened/" rel="noopener noreferrer"&gt;In fact, I’ve written about it before.&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Throughout our life, things – good, bad, and somewhere in the middle – are going to happen. They’re going to happen to us, near us, and around us. There’s literally nothing anyone can do to stop things from happening. On the other hand, what is completely within our control is how we handle those things.&lt;/p&gt;

&lt;p&gt;Aside from that, or perhaps closely related to that, is the truth that nothing about what happens reflects on who we are. But how we react and respond absolutely does.&lt;/p&gt;

&lt;p&gt;(As a side note, remember that when you’re looking at something happening to someone else and consider making a judgement. THEY probably didn’t didn’t choose it either. But how are they responding? That’s a choice they’re making.)&lt;/p&gt;

&lt;p&gt;A famous story present across multiple cultures tells of a queen who asks her advisors for a totem, a phrase that can give her both hope in hard times, but also keep her humble at the height of her success. It needed to be short, she added, so it could be inscribed on a ring so she could wear it and keep it in her field of vision. The advisors came back with&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This, too, shall pass.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I think about that a lot when I’m going through low points (or high points) in my life. I’m thinking about it a lot, right now. What happened to me, today, to inspire this particular blog isn’t important. Curiously, how I responded also doesn’t matter. I’m happy to share it (and will share it, just like&amp;nbsp;&lt;a href="https://www.adatosystems.com/2023/11/13/lessons-from-a-6-month-job-search/" rel="noopener noreferrer"&gt;I did the last time&lt;/a&gt;&amp;nbsp;but that’s not the point today.&lt;/p&gt;

&lt;p&gt;Today, I want you to sit for a minute and imagine you get the call, and your job is over. What would you do? What would be your first, second, third step?&lt;/p&gt;

&lt;p&gt;More interestingly, what would you do if you KNEW it was coming? Maybe you wouldn’t have done anything differently, but it’s worth considering. As I like to remind people, “There’s never a bad time to look around the airplane and make sure you know where the exits are.”&lt;/p&gt;

&lt;p&gt;On the other hand, maybe you don’t have to imagine. Maybe that’s your lived reality right now. I’m VERY sympathetic to you, as it turns out.&lt;/p&gt;

&lt;p&gt;In which case my advice is to skip the “what would you do” question. It’s nothing but armchair quarterbacking. The moment has passed. Sure, at some point (probably later), you can reflect on what you did, and in light of what happened, think about what you might have done differently.&lt;/p&gt;

&lt;p&gt;But that’s for another day. Today, our job – yours and mine – is to focus on how we’re going to respond.&lt;/p&gt;

</description>
      <category>hiring</category>
      <category>career</category>
      <category>unexpected</category>
    </item>
    <item>
      <title>It Costs That Much Because it Takes Me F***ing Hours</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 24 Mar 2025 04:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/it-costs-that-much-because-it-takes-me-fing-hours-51hn</link>
      <guid>https://dev.to/leonadato/it-costs-that-much-because-it-takes-me-fing-hours-51hn</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;LIMITED TIME OFFER! I’m ready for my next adventure as a DevRel advocate / Technical Evangelist / IT Talespinner. If that sounds like something you need, drop me a line &lt;a href="//leon@adatosystems.com"&gt;in email&lt;/a&gt; or on &lt;a href="https://www.linkedin.com/in/leonadato/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Today’s blog title is inspired &lt;a href="https://www.youtube.com/watch?v=NGR20B2cEBQ" rel="noopener noreferrer"&gt;by this song&lt;/a&gt;. My daughter started singing it regularly after she opened &lt;a href="https://loveplusflour.com/" rel="noopener noreferrer"&gt;her bakery&lt;/a&gt;. Read on for details on that story, and how it relates to observability.&lt;/p&gt;

&lt;p&gt;I thought of it, and my daughter’s reasons for singing it, after a few responses to &lt;a href="https://www.adatosystems.com/2025/02/10/who-the-hell-is-going-to-pay-for-this/" rel="noopener noreferrer"&gt;last week’s blog post&lt;/a&gt;.&amp;nbsp;It touched a nerve, which was nice to see. This is an important, nuanced, and complex conversation. I believe that getting folks involved in this conversation is better for everyone.&lt;/p&gt;

&lt;p&gt;Some of the thoughtful responses included this one:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/posts/marc-robinson-1648ad_who-the-hell-is-going-to-pay-for-this-activity-7294864246641721345-DNGE" 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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXcOrnolWXjquE1ySgnKBWNsRqhySozDCDDXZDss3uggBTeM-Sp1EOskhuRfUg-VgZCi54z3orvCCOi7zVTnY2V7DtEr2QYunF7TN94m5nT8QwNlWlNSlp446sgoUyyjn2n4rOqmbw%3Fkey%3DEfy8l_hMi4BlDr65-rNzGduz" width="528" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And this one&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/posts/aminastaneh_saas-startups-softwareengineering-activity-7293362919759581184-yQwl" 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%2Fnae8i5nceijodhnq5nhw.png" width="531" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(NOTE: click each image to read the original post)&lt;/em&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;But apparently for some folks it touched the WRONG nerve. People misunderstood the point I was trying to make. Some people (and I’m not linking to those posts) took it as a reason to bash vendors for charging anything at all. To posit that all software (and especially all monitoring software) should be free.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;I wasn’t saying that monitoring tools should be free. I wasn’t even saying that vendors are charging too much. I was saying that &lt;em&gt;if there’s no plan for the observability data we collect, ANY cost seems like too much&lt;/em&gt;. The problem is in our lack of clear goals, not the cost of services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;If there’s no plan, you can’t manage (or even estimate) the costs.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let me explain by going back to the title of the blog, and &lt;a href="https://www.youtube.com/watch?v=NGR20B2cEBQ" rel="noopener noreferrer"&gt;the song that inspired it.&lt;/a&gt; My daughter tends to sing the catchy little ditty after one of the (unfortunately many) calls with a prospective customer, who tells her – with all the confidence of someone who’s baking expertise extends only as far as opening a box of Duncan Hines cake mix – that &lt;a href="https://loveplusflour.com/cakes/" rel="noopener noreferrer"&gt;her cakes&lt;/a&gt; are way too expensive, because, and I quote: “anyone could make them.”&lt;/p&gt;

&lt;p&gt;To her credit, my daughter (who’s run &lt;a href="https://loveplusflour.com/" rel="noopener noreferrer"&gt;Love Plus Flour Bakery&lt;/a&gt; for 8 years) remains professional (and calm, which is more than I would have managed).&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;“Free” isn’t (always) the right answer&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Monitoring and observability are ferociously difficult to get right, and the people who devote their time (and sometimes careers) to making it work – to say nothing about making it better – deserve all of our respect.&lt;/p&gt;

&lt;p&gt;They also deserve to be paid for their efforts.&lt;/p&gt;

&lt;p&gt;Like those folks who call my daughter’s bakery, you know who typically thinks they shouldn’t have to pay for observability? People who have only the most tenuous idea of what goes into it and how it works.&lt;/p&gt;

&lt;p&gt;For folks at the forefront of observability, like Liz, this is nothing new.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bsky.app/profile/lizthegrey.com/post/3lhc7obmq3s2f" 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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXdA4yLTg744DA2ZVZeCbXx3NIy1rGOfhGnxeNBePS27at0rXe-_PTBy0Ad3wBdde4EZGXoMGACxhCLR831j8FGk0vV6Epes2AYAvHbJ4TM6GDjPYETE7TWngcP9zc-a45TFFAGR0A%3Fkey%3DEfy8l_hMi4BlDr65-rNzGduz" width="581" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are those who will be quick to say, “But Leon, open source tools like Grafana are free! Why doesn’t everyone else do that?”&lt;/p&gt;



&lt;p&gt;OK, but hear me out. While the phrase “Linux is only free if your time has no value” is far less true than when &lt;a href="http://nomad.uk.net/articles/is-linux-is-only-free-if-your-time-has-no-value-still-valid.html" rel="noopener noreferrer"&gt;Jamie Zawinski wrote it back in 1998&lt;/a&gt;, the spirit of it still holds. A thing is only as free as the real total cost of it – inclusive of time, effort, and money.&lt;/p&gt;

&lt;p&gt;Lest you think I’m working my way toward the old “Car Triangle” conundrum&lt;/p&gt;

&lt;p&gt;&lt;a href="https://commons.wikimedia.org/wiki/File:Project_car_triangle.jpg" 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%2Fnar323m9hpqgjmmeyc6n.png" width="640" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…that’s NOT actually my point. It actually IS possible to have all three. My daughter can throw together a cake, or a loaf of challah, or a batch of cookies faster, better, and cheaper than she can buy them.&lt;/p&gt;

&lt;p&gt;But of course, that’s only if you discount all the time it took her to get to this point. I won’t waste your time sharing that complete (&lt;a href="https://calvincorreli.com/blog/1397-knowing-which-screw-to-turn" rel="noopener noreferrer"&gt;and oft-repeated&lt;/a&gt;) story of the itemized $10,000 repair bill which read&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Breakdown of Charges:&lt;br&gt;&lt;br&gt;
Turning the screw: $1&lt;br&gt;&lt;br&gt;
Knowing which screw to turn: $9,999&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The point stands – the only cheat code for the car triangle dilemma is if you place yourself in the middle of it, bridging the gaps.&lt;/p&gt;

&lt;p&gt;As the late 90’s commercial says, “For everything else, there’s MasterCard.”&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Not All Observability Data is Equal&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;So back to my original point – my post last week was not trying to say observability should be free, or that vendors are charging too much. Re-iterating my main point: if there isn’t a meaningful plan for the observability data you collect, any cost is too high. The corollary is that if you DO have a meaningful plan, you will also know what it’s worth to you to collect, process, and store it.&lt;/p&gt;

&lt;p&gt;But nothing in our lives as IT practitioners is ever as easy as coming up with a single plan for all our data and calling it a day. Different data types have different value propositions, and some of those value profiles are themselves variable based on outside factors like time of year (i.e. Black Friday).&lt;/p&gt;

&lt;p&gt;Or what has just happened. &lt;a href="https://cribl.io/blog/why-the-world-needs-cribl/" rel="noopener noreferrer"&gt;Cribl understood this all the way back in 2022&lt;/a&gt;, when they framed this idea succinctly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“As it happens, all of this high-fidelity data is completely worthless until it comes time for forensics, where it turns out to be invaluable. You have absolutely no need for such a high level of detail until the exact moment when you do need it – and you actually can’t do anything without it.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To expand on that idea a little: I don’t think the nice folks at Cribl are saying that lo-fi data is fine for daily ops monitoring and observability, and you only need high-fi data until you’re in the middle of a retro. Instead, I think it’s akin to something my friend Alec Isaacson, Solutions Architect at Grafana, once said:&amp;nbsp;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;em&gt;“Murphy’s law requires that you’re probably not collecting the data you need.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Unless, of course, you are.&amp;nbsp;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Cognitive (Data) Dissonance&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We don’t need all the data, until we do, and in that liminal moment it goes from worthless to desperately important. We don’t want to pay anything to collect, process, or store the data. Until there’s a crisis, at which point we’re willing to spare no expense.&lt;/p&gt;

&lt;p&gt;For the poor beleaguered monitoring engineer (and yes, I will die on the hill that this is a real job. Or should be.) this may feel like our professional Kobiyashi Maru scenario.&lt;/p&gt;

&lt;p&gt;But it’s not. I believe there’s a way to thread this needle, and in the next blog I’m going to explore exactly that, along with how OTel fits into all of this.&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>observability</category>
      <category>opentelemetry</category>
      <category>cost</category>
    </item>
    <item>
      <title>Who the Hell is Going to Pay For This?</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 17 Mar 2025 04:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/who-the-hell-is-going-to-pay-for-this-428l</link>
      <guid>https://dev.to/leonadato/who-the-hell-is-going-to-pay-for-this-428l</guid>
      <description>&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;LIMITED TIME OFFER! I’m ready for my next adventure as a DevRel advocate / Technical Evangelist / IT Talespinner. If that sounds like something you need, drop me a line &lt;a href="//leon@adatosystems.com"&gt;in email&lt;/a&gt; or on &lt;a href="https://www.linkedin.com/in/leonadato/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I’ve specialized in monitoring and observability for 27 years now, and I’ve seen a lot of tools and techniques come and go (RMon, anyone?); and more than a few come and stay (Rumors of the death of SNMP have been – and continue to be – greatly exaggerated.). Lately I’ve been exploring one of the more recent improvements in the space – OpenTelemetry (which I’m abbreviating to “OTel” for the remainder of this blog). &lt;a href="https://www.adatosystems.com/2025/02/04/o-can-you-tel-me-how-to-get/" rel="noopener noreferrer"&gt;I wrote about my decision to dive into OTel recently&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For the most part, I’m enjoying the journey. But there’s a problem that has existed with observability for a while now, and it’s something OTel is not helping. The title of this post hints at the issue, but I want to be more explicit. Let’s start with some comparison shopping.&lt;/p&gt;

&lt;p&gt;Before I piss off every vendor in town, I want to be clear that these are broad, rough, high level numbers. I’ve linked to the pricing pages if you want to check the details, and I acknowledge what you see below isn’t necessarily indicative of the price you might actually pay after getting a quote on a real production environment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  New Relic &lt;a href="https://newrelic.com/pricing" rel="noopener noreferrer"&gt;charges&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;  35¢ per GB for any data you send them.&lt;/li&gt;
&lt;li&gt;  …although &lt;a href="https://newrelic.com/pricing" rel="noopener noreferrer"&gt;the pricing page&lt;/a&gt; doesn’t make this particularly clear&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  Datadog has a veritable laundry list of options, but at a high level, they &lt;a href="https://www.datadoghq.com/pricing/list/" rel="noopener noreferrer"&gt;charge&lt;/a&gt;:

&lt;ul&gt;
&lt;li&gt;  $15-$34 per host&lt;/li&gt;
&lt;li&gt;  60¢ – $1.22 per million netflow records&lt;/li&gt;
&lt;li&gt;  $1.06-$3.75 per million log records&lt;/li&gt;
&lt;li&gt;  $1.27-$3.75 per million spans&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  Dynatrace’s &lt;a href="https://www.dynatrace.com/pricing/rate-card/" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt; sports a list almost as long as Datadog’s but some key items:

&lt;ul&gt;
&lt;li&gt;  15¢ per 100,00 metrics

&lt;ul&gt;
&lt;li&gt;  plus .07¢ per Gig per day for retention&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  2¢ per gig for logs

&lt;ul&gt;
&lt;li&gt;  plus .07¢- per gig per day to retain them&lt;/li&gt;
&lt;li&gt;  plus .035¢ per gig queried&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  Events have the same rate as logs&lt;/li&gt;

&lt;li&gt;  .014¢ per 1,000 spans&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;  Grafana, which – it must be noted – is open source and effectively gives you everything for free if you’re willing to do the heavy lifting of installing and hosting. But their &lt;a href="https://grafana.com/pricing/" rel="noopener noreferrer"&gt;pricing can be summed up as&lt;/a&gt;:

&lt;ul&gt;
&lt;li&gt;  $8.00 for 1k metrics, (up to 1/minute)&lt;/li&gt;
&lt;li&gt;  50¢ per gig for logs and traces them, with 30 days retention&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This list is neither exhaustive nor complete. I’ve left off a lot of vendors, not because they also don’t have consumption based pricing but because it would just be more of the same. Even with the ones above, the details here aren’t complete. Some companies not only charge for consumption (ingest), they also charge to store the data, and charge again to query the data (looking at you, New Relic). Some companies push you to pick a tier of service, and if you don’t they’ll charge you an estimated rate based on the 99th percentile of usage for the month (&lt;a href="https://www.finout.io/blog/part-2-the-magic-that-is-datadog-pricing" rel="noopener noreferrer"&gt;looking at you, Datadog&lt;/a&gt;).&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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXe8amRnzkBd34-vH1DU5ND_y0mFqfDVJA7eMVRdszt9veAlJ9PNxVVrGNHfzha-6BMbd8DY_9QG4XDEya0_oGaekVwloZc5QZtfN0YGrfuypX9fEIHpl366iltw2D9FugOnKE-b-Q%3Fkey%3DTZQJWeH5l2y4O27w6DqF2hNl" 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%2Flh7-rt.googleusercontent.com%2Fdocsz%2FAD_4nXe8amRnzkBd34-vH1DU5ND_y0mFqfDVJA7eMVRdszt9veAlJ9PNxVVrGNHfzha-6BMbd8DY_9QG4XDEya0_oGaekVwloZc5QZtfN0YGrfuypX9fEIHpl366iltw2D9FugOnKE-b-Q%3Fkey%3DTZQJWeH5l2y4O27w6DqF2hNl" width="666" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It should surprise nobody that what appears on their pricing page isn’t even the final word. Some of these companies are, even now, looking at redefining their interpretation of the “consumption based pricing” concept that might make things even more opaque (looking at you AGAIN, New Relic).&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Even with all of that said, I’m going out on a limb and stating for the record that each and every one of those price points is so low that even the word “trivial” is too big.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;That is, until the production workloads meet the pricing sheet. At that point those itty bitty numbers add up to real money, and quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Plural of Anecdote
&lt;/h2&gt;

&lt;p&gt;I put this question out to some friends, asking if they had real-world sticker-shock experiences. As always, my friends did not disappoint.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I did a detailed price comparison of New Relic with Datadog a couple years ago with Fargate as the main usage. New Relic was significantly cheaper until you started shipping logs and then Datadog was suddenly 30-40% cheaper even with apm. [But] their per host cost also factors in and makes APM rather unattractive unless you’re doing something serverless. We wanted to use it on kubernetes but it was so expensive, management refused to believe the costs with services on Fargate so I was usually showing my numbers every 2-3 months.”&lt;/em&gt;&lt;em&gt;– Evelyn Osman, Head of Platform at enmacc&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“All I got is the memory of the CFOs face when he saw the bill.”&lt;/em&gt;&lt;em&gt;– someone who prefers to remain anonymous, even though that quote is freaking epic.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And of course there’s the (now infamous, in observability circles) whodunit mystery of the &lt;a href="https://blog.pragmaticengineer.com/datadog-65m-year-customer-mystery/" rel="noopener noreferrer"&gt;$65 million Datadog bill&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The First Step is Admitting You Have a Problem
&lt;/h2&gt;

&lt;p&gt;Once upon a time (by which I mean the early 2000’s), the challenge with monitoring (observability wasn’t a term we used yet) was how to identify the data we needed, and then get the systems to give up that data, and then store that data in a way that made it possible (let alone efficient) to use in queries, displays, alerts, and such.&lt;/p&gt;

&lt;p&gt;That was where almost all the cost rested. The systems themselves were on-premises and, once the hardware was bought, effectively “free”. The result was that the accepted practice was to collect as much as possible and keep it forever. And despite the change in technology, many organizations reasoning has remained the same.&lt;/p&gt;

&lt;p&gt;Grafana Solutions Architect Alec Isaacson points out his conversations with customers sometimes go like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I collect CDM metrics from my most critical systems every 5 seconds because once, a long time ago, someone got yelled at when the system was slow and the metrics didn’t tell them why.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Today, collecting monitoring and observability data (“telemetry”) is comparatively easy, but – both as individuals and organizations – we haven’t changed our framing of the problem. So we continue to grab every piece of data available to us. We instrument our code with every tag and span we can think of; if there’s a log message, we ship it; hardware metrics? Better grab it because it’ll provide context; If there’s network telemetry (NetFlow, VPC Flow logs, Streaming Telemetry) we suck that up too.&lt;/p&gt;

&lt;p&gt;But we never take the time to think about what we’re going to do with it. Ms. Osman’s experience illustrates the result:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“[They] had no idea what they were doing with monitoring […] all the instrumentation and logging was enabled then there was lengthy retention “just in case”. So they were just burning ridiculous amounts of money”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To connect it to another bad behavior that we’ve (more or less) broken ourselves of: Back in the early days of “lift and shift” (often more accurately described as “lift and shit”) to the cloud, we not only moved applications wholesale; we moved it onto the biggest systems the platform offered. Why? Because in the old on-prem context you could only ask for a server once, and therefore you asked for the biggest thing you could get, in order to future-proof your investment. This decision turned out not only to be amusingly naive, it was horrifically expensive and it took everyone a few years to understand how “elastic compute” worked and to retool their applications for the new paradigm.&lt;/p&gt;

&lt;p&gt;Likewise, it’s high time we recognize and acknowledge that we cannot afford to collect every piece of telemetry data available to us, and moreover, that we don’t have a plan for that data even if money was no object.&lt;/p&gt;

&lt;h2&gt;
  
  
  Admit it: Your Problem Also Has a Problem
&lt;/h2&gt;

&lt;p&gt;Let me pivot to OTel for a moment. One of the key reasons – possibly THE key reason – to move to it is to remove, forever and always, the pain of vendor lock-in. This is something I explored &lt;a href="https://www.adatosystems.com/2025/02/04/o-can-you-tel-me-how-to-get/" rel="noopener noreferrer"&gt;in my last blog post&lt;/a&gt; and was echoed recently by a friend of mine:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;OTel does solve a lot of the problems around “Oh great! now we’re trapped with vendor x and it’s going to cost us millions to refactor all this code”&lt;br&gt;&lt;br&gt;
as opposed to “Oh, we’re switching vendors? Cool, let me just update my endpoint…”&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;– Matt Macdonald-Wallace, Solutions Architect, Grafana Labs&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To be very clear, OTel does an amazing job at solving this problem, which is incredible in its own right. BUT… there’s a downside to OTel that people don’t notice right away, if they notice it at all. That problem makes the previous problem even worse.&lt;/p&gt;

&lt;p&gt;OTel takes all of your data (metrics, logs, traces, and the rest), collects it up, and sends it wherever you want it to go. But OTel doesn’t always do it EFFICIENTLY.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 1: log messages
&lt;/h3&gt;

&lt;p&gt;Let’s take the log message below, which comes straight out of&amp;nbsp; syslog. Yes, good old RFC 5424. Born in the 80’s, standardized in 2009, and the undisputed “chatty kathy” of network message protocols. I’ve seen modestly-sized networks generate upwards of 4 million syslog messages per hour. Most of it was absolutely useless drivel, mind you. But those messages had to go somewhere and be processed (or dropped) by some system along the way. It’s one of the reasons I’ve suggested a syslog and trap “filtration system” &lt;a href="https://www.adatosystems.com/2017/05/29/logfile-monitoring-i-do-not-think-it-means-what-you-think-it-means/" rel="noopener noreferrer"&gt;since basically forever&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Nit picking about message volume aside, there’s value in some of those messages, to some IT practitioners, some of the time. And so we have to consider (and collect) them too.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;134&amp;gt;1 2018-12-13T14:17:40.000Z myserver myapp 10 - [http_method="GET"; http_uri="/example"; http_version="1.1"; http_status="200"; client_addr="127.0.0.1"; http_user_agent="my.service/1.0.0"] HTTP request processed successfully
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As-is that log message is 228 bytes – barely even a drop in the bucket of telemetry you collect every minute, let alone every day. But for what I’m about to do, I want a real apples-to-apples comparison, so here’s what it would look like if I JSON-ified it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
&amp;nbsp;&amp;nbsp;"pri": 134,
&amp;nbsp;&amp;nbsp;"version": 1,
&amp;nbsp;&amp;nbsp;"timestamp": "2018-12-13T14:17:40.000Z",
&amp;nbsp;&amp;nbsp;"hostname": "myserver",
&amp;nbsp;&amp;nbsp;"appname": "myapp",
&amp;nbsp;&amp;nbsp;"procid": 10,
&amp;nbsp;&amp;nbsp;"msgid": "-",
&amp;nbsp;&amp;nbsp;"structuredData": {
      "http_method": "GET",
      "http_uri": "/example",
      "http_version": "1.1",
      "http_status": "200",
      "client_addr": "127.0.0.1",
      "http_user_agent": "my.service/1.0.0"
      &amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;"message": "HTTP request processed successfully"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That bumps the payload up to 336 bytes without whitespace, or 415 bytes with. Now, for comparison, here’s a sample OTLP Log message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
   "resource": {
      "service.name": "myapp",
      "service.instance.id": "10",
      "host.name": "myserver"
      },
   "instrumentationLibrary": {
      "name": "myapp",
      "version": "1.0.0"
      },
   "severityText": "INFO",
 &amp;nbsp;&amp;nbsp;"timestamp": "2018-12-13T14:17:40.000Z",
 &amp;nbsp;&amp;nbsp;"body": {
      "text": "HTTP request processed successfully"
     &amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp; "attributes": {
      "http_method": "GET",
      "http_uri": "/example",
      "http_version": "1.1",
      "http_status": "200",
      "client_addr": "127.0.0.1",
      "http_user_agent": "my.service/1.0.0"
     &amp;nbsp;&amp;nbsp;}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That (generic, minimal) message weighs in at 420 bytes (without whitespace; it’s 520 bytes all-inclusive). It’s still tiny, but even so the OTel version with whitespace is 25% bigger than the JSON-ified message (with whitespace), and more than twice as large as the original log message.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;Once we start applying real-world data, things balloon even more. My point here is this: If OTel does that to every log message, these tiny costs add up quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 2: Prometheus
&lt;/h3&gt;

&lt;p&gt;It turns out that modern methods of metric management are just as susceptible to inflation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A typical prometheus metric, formatted in JSON, is 291 bytes.&lt;/li&gt;
&lt;li&gt;  But that same metric converted to OTLP metrics format weighs in at 751 bytes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s true, OTLP has a batching function that mitigates this, but that only helps with transfer over the wire. Once it arrives at the destination, many (not all, but most) vendors unbatch before storing, so it goes back to being 2.5x larger than the original message. As my buddy Josh Biggley has said,&amp;nbsp;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“2.5x metrics ingest better have a fucking amazing story to tell about context to justify that cost.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  It’s Not You, OTel, It’s Us. (But It’s Also You)
&lt;/h2&gt;

&lt;p&gt;If this all feels a little hyper-critical of OTel, then please give me a chance to explain. I honestly believe that OTel is an amazing advancement and anybody who’s serious about monitoring and observability needs to adopt it as a standard – that goes for users as well as vendors. The ability to emit the braid of logs, metrics, traces while maintaining its context, regardless of destination, is invaluable.&lt;/p&gt;

&lt;p&gt;(But…) OTel was designed by (and for) software engineers. It originated in that bygone era (by which I mean “2016”) when we were still more concerned about the difficulty of getting the data than the cost of moving, processing, and storing it. OTel is, by design, biased to volume.&lt;/p&gt;

&lt;p&gt;The joke of this section’s title notwithstanding, the problem really isn’t OTel. We really are at fault. Specifically our unhealthy relationship with telemetry. If we insist on collecting and transmitting every single data point, we have nobody to blame but ourselves for the sky-high bills we receive at the end of the month.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does This Data Bring You Joy?
&lt;/h2&gt;

&lt;p&gt;It’s easy to let your observability solution do the heavy lifting and shunt every byte of data into a unified interface. It’s easy to do if you’re a software engineer who (nominally at least) owns the monitoring and observability solutions.&lt;/p&gt;

&lt;p&gt;It’s even easier if you’re a mere consumer of those services, an innocent bystander. Folks who fall into this category include those closely tied to a particular silo (database, storage, network, etc); or helpdesk and NOC teams who receive the tickets and provide support but aren’t involved in the instrumentation nor the tools the instrumentation is connected to; or teams with more specialized needs that nevertheless overlap with monitoring and observability, like information security.&lt;/p&gt;

&lt;p&gt;But let’s be honest, if you’re a security engineer, how can you justify paying twice cost to ingest logs or metrics, versus the perfectly good standards that already exist and have served well for years? Does that mean you might be using more than one tool? Yes. But as I have pointed out (&lt;a href="https://www.adatosystems.com/2023/06/21/how-to-overcome-data-silos-in-open-source-server-monitoring/" rel="noopener noreferrer"&gt;time&lt;/a&gt; and &lt;a href="https://www.adatosystems.com/2021/11/01/four-ways-your-network-could-change-in-four-years/" rel="noopener noreferrer"&gt;time&lt;/a&gt; and &lt;a href="https://www.adatosystems.com/2020/12/14/distributed-computing-when-everyone-is-working-from-home/" rel="noopener noreferrer"&gt;time&lt;/a&gt; and &lt;a href="https://www.adatosystems.com/2019/08/13/icymi-why-do-we-put-up-with-monitoring-solutions-that-hurt-2/" rel="noopener noreferrer"&gt;time&lt;/a&gt; and &lt;a href="https://www.adatosystems.com/2019/03/13/icymi-monitoring-and-automation-its-easier-than-you-think/" rel="noopener noreferrer"&gt;time&lt;/a&gt; and &lt;a href="https://www.adatosystems.com/2019/03/06/icymi-the-cost-of-monitoring-with-the-wrong-tool/" rel="noopener noreferrer"&gt;time&lt;/a&gt; again) there is not (and never has been, and never will be) a one-size-fits-all solution. And in most situations there’s not even a one-size-fits-MOST solution. Monitoring and observability has always been about heterogeneous implementations. The sooner you embrace that ideal, the sooner you will begin building observability ecosystems that serve the needs of you, your team, and your business.&lt;/p&gt;

&lt;p&gt;To that end there’s a serious ROI discussion to be had before you go all in on OTel or any observability solution.&lt;/p&gt;

&lt;h2&gt;
  
  
   (for now)
&lt;/h2&gt;

&lt;p&gt;We’ve seen the move from per seat (or interface, or chassis, or CPU) pricing to a consumption model in the marketplace in the past. And we’ve also seen technologies move back (like the way cell service moved from per-minute or per-text to unlimited data with a per-month charge). I suspect we may see a similar pendulum swing back with monitoring and observability at some time in the future. But for now, we have to contend with both the prevailing pricing system as it exists today; and with our own compulsion – born at a different point in the history of monitoring – to collect, transmit, and store every bit (and byte) of telemetry that passes beneath our nose.&lt;/p&gt;

&lt;p&gt;Of course, cost isn’t the only factor. Performance, risk, (and more) need to be considered. But at the heart of it all is the very real need for us to start asking ourselves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  What will I do with this data?&lt;/li&gt;
&lt;li&gt;  Who will use it?&lt;/li&gt;
&lt;li&gt;  How long do I need to store it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And of course, &lt;strong&gt;Who the hell is going to pay for it?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>observability</category>
      <category>monitoring</category>
      <category>opentelemetry</category>
      <category>cost</category>
    </item>
  </channel>
</rss>
