<?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>Zmanin-WP: Common Codes, part 3</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 19 Oct 2026 04:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/zmanin-wp-common-codes-part-3-5740</link>
      <guid>https://dev.to/leonadato/zmanin-wp-common-codes-part-3-5740</guid>
      <description>&lt;p&gt;If you’ve been following this blog, you’ll know that I’ve been working on my&amp;nbsp;&lt;a href="https://wordpress.org/plugins/zmanim-wp/" rel="noopener noreferrer"&gt;Zmanim-WP plugin for WordPress&lt;/a&gt;&amp;nbsp;for a while now.&amp;nbsp;&lt;a href="https://adatosystems.com/category/zmanim/" rel="noopener noreferrer"&gt;This blog series&lt;/a&gt;&amp;nbsp;is designed to help you dig deeper into the plugin and understand what it does, how it works, and whether it’s right for your needs.&lt;/p&gt;




&lt;h2&gt;
  
  
  “Dancing in the Dark”
&lt;/h2&gt;

&lt;p&gt;If&amp;nbsp;&lt;a href="https://adatosystems.com/2026/01/12/zmanin-wp-common-codes-part-1/" rel="noopener noreferrer"&gt;part 1&lt;/a&gt;&amp;nbsp;was focused on the zmanim for the start of the day; and&amp;nbsp;&lt;a href="https://adatosystems.com/2026/01/19/zmanin-wp-common-codes-part-2/" rel="noopener noreferrer"&gt;part 2&lt;/a&gt;&amp;nbsp;looked afternoon times, it stands to reason that today we’ll check out the shortcodes that help calculate the end of the day.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Start of Bain HaShmashot ([zman_bain]) – The time between sunset (“shkia”, in halachic terms) and night (“tzait hakochavim”) is sort of a halachic no-man’s-land, and therefore a lot of things that can only be done during the day (or at night) are no longer permitted. For this reason you need to know when this time is to avoid accidentally crossing a line.&lt;/li&gt;
&lt;li&gt;  Tzait HaKochavim ([zman_tzait]) – The time when 3 stars are visible in the sky, signifying the arrival of “night time”&lt;/li&gt;
&lt;li&gt;  sunset ([zman_sunset]) – Nautical sunset, also called “shkia”.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above three are still “regular” zmanim – things that one might expect to see on a sheet of times. The last two (for this week) are “special” zmanim that I’ve included in the plugin because they are so darn useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  earlyshkia ([zman_earlyshkia]) – The earliest shkia for that week (see more on this below).&lt;/li&gt;
&lt;li&gt;  lateshkia ([zman_lateshkia]) – The latest shkia for that week (see more on this below).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll elaborate on these more in their own specific section.&lt;/p&gt;

&lt;p&gt;Same as the other posts, these shortcodes can be used as-is, or with the options described in&amp;nbsp;&lt;a href="https://adatosystems.com/2026/01/05/zmanim-wp-getting-started/" rel="noopener noreferrer"&gt;the first post of the series&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  [zman_bain date="saturday"]&lt;/li&gt;
&lt;li&gt;  [zman_tzait date="saturday" dateformat="g:i:s a"]&lt;/li&gt;
&lt;li&gt;  [zman_sunset offset=-20]&lt;/li&gt;
&lt;li&gt;  [zman_earlyshkia dateformat="g:i a"]&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Matter of Opinion
&lt;/h2&gt;

&lt;p&gt;Bain HaShmashot and Tzait haKochavim require you to select a shita – a Rabbinic opinion – for it’s calculation. I plan to elaborate on each of these items in another series, but some details can be found on the&amp;nbsp;&lt;a href="https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#getBainHashmashosRT13Point24Degrees()" rel="noopener noreferrer"&gt;KosherJava documentation site: https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#getBainHashmashosRT13Point24Degrees()&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Start of Bain HaShmashot ([zman_bain]) –
“bainHashmashosRT13Point24Degrees”,
“bainHashmashosRT58Point5Minutes”,
“bainHashmashosRT13Point5MinutesBefore7Point083Degrees”,
“bainHashmashosRT2Stars”,
“bainHashmashosYereim18Minutes”,
“bainHashmashosYereim3Point05Degrees”,
“bainHashmashosYereim16Point875Minutes”,
“bainHashmashosYereim2Point8Degrees”,
“bainHashmashosYereim13Point5Minutes”,
“bainHashmashosYereim2Point1Degrees”&lt;/li&gt;
&lt;li&gt;  Tzait HaKochavim ([zman_tzait]) –
“tzais72”,
“tzaisGeonim3Point7Degrees”,
“tzaisGeonim3Point8Degrees”,
“tzaisGeonim5Point95Degrees”,
“tzaisGeonim3Point65Degrees”,
“tzaisGeonim3Point676Degrees”,
“tzaisGeonim4Point61Degrees”,
“tzaisGeonim4Point37Degrees”,
“tzaisGeonim5Point88Degrees”,
“tzaisGeonim4Point8Degrees”,
“tzaisGeonim6Point45Degrees”,
“tzaisGeonim7Point083Degrees”,
“tzaisGeonim7Point67Degrees”,
“tzaisGeonim8Point5Degrees”,
“tzaisGeonim9Point3Degrees”,
“tzaisGeonim9Point75Degrees”,
“tzais60”,
“tzaisAteretTorah”,
“tzais72Zmanis”,
“tzais90Zmanis”,
“tzais96Zmanis”,
“tzais90”,
“tzais120”,
“tzais120Zmanis”,
“tzais16Point1Degrees”,
“tzais26Degrees”,
“tzais18Degrees”,
“tzais19Point8Degrees”,
“tzais96”,
“tzaisBaalHatanya”,
“tzais50”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Meanwhile, Sunset ([zman_sunset]), earlyshkia ([zman_earlyshkia]), and lateshkia ([zman_lateshkia]) don’t require any additional considerations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Early and Late?
&lt;/h2&gt;

&lt;p&gt;It’s not uncommon to want to set a time – for afternoon prayers, as an example – to be x minutes before sunset. The problem is that this time moves throughout the week – as much as a minute or even 2 per day!&lt;/p&gt;

&lt;p&gt;To make things more complicated, part of the year the earliest time will be on (or closer to Sunday; at a different time of the year it will be on (or closer to) Thursday.&lt;/p&gt;

&lt;p&gt;Shuls end up in a situation where they either have different times through the week (which is both confusing to the congregation and leads to many showing up late), OR they hedge their bets and set a time that’s leisurely at the start of the week but becomes faster and faster as the time for sunset gets shorter.&lt;/p&gt;

&lt;p&gt;To alleviate this, I created two shortcodes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  earlyshkia ([zman_earlyshkia]) will look at all the sunset times from Sunday through Thursday, and return the earliest one.&lt;/li&gt;
&lt;li&gt;  lateshkia ([zman_lateshkia]) will, as the name implies, look at all the sunset times from Sunday through Thursday and return the latest one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depending on your synagogue’s needs, you might need one or the other. And it’s important to note that both shortcodes also use the&amp;nbsp;&lt;code&gt;offset=&lt;/code&gt;&amp;nbsp;option. This allows you to set a service time that’s a set number of minutes before (or after) the earliest (or latest) sunset of the week.&lt;/p&gt;

&lt;p&gt;As I said in the last post, I know that this can feel like a lot. Use the codes that make sense, with the options that you need. If you have questions, you know where to find me.&lt;/p&gt;

&lt;p&gt;Until next time!&lt;/p&gt;

</description>
      <category>plugin</category>
      <category>softwaredevelopment</category>
      <category>webdev</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Zmanin-WP: Common Codes, part 2</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 12 Oct 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/zmanin-wp-common-codes-part-2-2ilf</link>
      <guid>https://dev.to/leonadato/zmanin-wp-common-codes-part-2-2ilf</guid>
      <description>&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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe2hcsm0hxj4yujl4s93s.png" 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%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe2hcsm0hxj4yujl4s93s.png" alt="alarm clock with hebrew letters on the face" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’ve been following this blog, you’ll know that I’ve been working on my&amp;nbsp;&lt;a href="https://wordpress.org/plugins/zmanim-wp/" rel="noopener noreferrer"&gt;Zmanim-WP plugin for WordPress&lt;/a&gt;&amp;nbsp;for a while now.&amp;nbsp;&lt;a href="https://adatosystems.com/category/zmanim/" rel="noopener noreferrer"&gt;This blog series&lt;/a&gt;&amp;nbsp;is designed to help you dig deeper into the plugin and understand what it does, how it works, and whether it’s right for your needs.&lt;/p&gt;




&lt;h2&gt;
  
  
  “Sunny Afternoon” – The Kinks
&lt;/h2&gt;

&lt;p&gt;The&amp;nbsp;&lt;a href="https://adatosystems.com/2026/01/12/zmanin-wp-common-codes-part-1/" rel="noopener noreferrer"&gt;last post&lt;/a&gt;&amp;nbsp;covered the zmanim for the morning hours so, logically, this one is going to focus on halachic times for the afternoon. As a reminder, the focus of this series of blogs is HOW to use each shortcode. I’m open to digging into the WHAT (and even the WHY) if you want. Let me know in the comments. For today, we’ll be looking at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Chatzot ([zman_chatzot]) – Solar noon, the point halfway through the available sunlight for that day.&lt;/li&gt;
&lt;li&gt;  Mincha Gedolah ([zman_gedola]) – The earliest time to pray Mincha (afternoon) prayers. This comes a half hour after mid-day (chatzot). But of course, “a half hour” is somewhat complicated.&lt;/li&gt;
&lt;li&gt;  Mincha Ketana ([zman_ketana]) – Some hold it’s better to wait further into the day for afternoon prayers. Mincha ketana happens at the last 2 1/2 hours before sunset.&lt;/li&gt;
&lt;li&gt;  Plag haMincha ([zman_plag]) – This time occurs halfway between Mincha Ketana and sunset and is yet another time some hold as preferable for afternoon prayers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As with the shortcodes in&amp;nbsp;&lt;a href="https://adatosystems.com/2026/01/12/zmanin-wp-common-codes-part-1/" rel="noopener noreferrer"&gt;part 1&lt;/a&gt;, they can be used as-is, or with the options I described in&amp;nbsp;&lt;a href="https://adatosystems.com/2026/01/05/zmanim-wp-getting-started/" rel="noopener noreferrer"&gt;the first post of the series&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  [zman_chatzot date="saturday"]&lt;/li&gt;
&lt;li&gt;  [zman_gedola date="saturday" dateformat="g:i:s a"]&lt;/li&gt;
&lt;li&gt;  [zman_ketana offset=-20]&lt;/li&gt;
&lt;li&gt;  [zman_plag dateformat="g:i a"]&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A Matter of Opinion
&lt;/h2&gt;

&lt;p&gt;Each of these shortcodes requires you to select a shita – a rabbinic opinion – for its calculation. I plan to elaborate on each of these items in another series, but some details can be found on the&amp;nbsp;&lt;a href="https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#getAlos60()" rel="noopener noreferrer"&gt;KosherJava documentation site: https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#getAlos60()&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are the shitot for the shortcodes we’re looking at in this post:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Chatzot

&lt;ul&gt;
&lt;li&gt;  chatzosAsHalfDay&lt;/li&gt;
&lt;li&gt;  fixedLocalChatzos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;  Mincha Gedolah

&lt;ul&gt;
&lt;li&gt;  minchaGedola&lt;/li&gt;
&lt;li&gt;  minchaGedola30Minutes&lt;/li&gt;
&lt;li&gt;  minchaGedola72Minutes&lt;/li&gt;
&lt;li&gt;  minchaGedola16Point1Degrees&lt;/li&gt;
&lt;li&gt;  minchaGedolaAhavatShalom&lt;/li&gt;
&lt;li&gt;  minchaGedolaGreaterThan30&lt;/li&gt;
&lt;li&gt;  minchaGedolaAteretTorah&lt;/li&gt;
&lt;li&gt;  minchaGedolaBaalHatanya&lt;/li&gt;
&lt;li&gt;  minchaGedolaBaalHatanyaGreaterThan30&lt;/li&gt;
&lt;li&gt;  minchaGedolaGRAFixedLocalChatzos30Minutes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;  Mincha Ketana

&lt;ul&gt;
&lt;li&gt;  minchaKetana&lt;/li&gt;
&lt;li&gt;  minchaKetana16Point1Degrees&lt;/li&gt;
&lt;li&gt;  minchaKetanaAhavatShalom&lt;/li&gt;
&lt;li&gt;  minchaKetana72Minutes&lt;/li&gt;
&lt;li&gt;  minchaKetanaAteretTorah&lt;/li&gt;
&lt;li&gt;  minchaKetanaBaalHatanya&lt;/li&gt;
&lt;li&gt;  minchaKetanaGRAFixedLocalChatzosToSunset&lt;/li&gt;
&lt;li&gt;  samuchLeMinchaKetanaGRA&lt;/li&gt;
&lt;li&gt;  samuchLeMinchaKetana16Point1Degrees&lt;/li&gt;
&lt;li&gt;  samuchLeMinchaKetana72Minutes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;  Plag haMincha

&lt;ul&gt;
&lt;li&gt;  plagHamincha&lt;/li&gt;
&lt;li&gt;  plagHamincha120MinutesZmanis&lt;/li&gt;
&lt;li&gt;  plagHamincha120Minutes&lt;/li&gt;
&lt;li&gt;  plagHamincha60Minutes&lt;/li&gt;
&lt;li&gt;  plagHamincha72Minutes&lt;/li&gt;
&lt;li&gt;  plagHamincha90Minutes&lt;/li&gt;
&lt;li&gt;  plagHamincha96Minutes&lt;/li&gt;
&lt;li&gt;  plagHamincha96MinutesZmanis&lt;/li&gt;
&lt;li&gt;  plagHamincha90MinutesZmanis&lt;/li&gt;
&lt;li&gt;  plagHamincha72MinutesZmanis&lt;/li&gt;
&lt;li&gt;  plagHamincha16Point1Degrees&lt;/li&gt;
&lt;li&gt;  plagHamincha19Point8Degrees&lt;/li&gt;
&lt;li&gt;  plagHamincha26Degrees&lt;/li&gt;
&lt;li&gt;  plagHamincha18Degrees&lt;/li&gt;
&lt;li&gt;  plagAlosToSunset&lt;/li&gt;
&lt;li&gt;  plagAlos16Point1ToTzaisGeonim7Point083Degrees&lt;/li&gt;
&lt;li&gt;  plagAhavatShalom&lt;/li&gt;
&lt;li&gt;  plagHaminchaAteretTorah&lt;/li&gt;
&lt;li&gt;  plagHaminchaBaalHatanya&lt;/li&gt;
&lt;li&gt;  plagHaminchaGRAFixedLocalChatzosToSunset&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I know that this can feel like a lot. A good rule to go by is that, if you don’t have a reason to choose otherwise, selecting the default won’t get you into too much trouble.&lt;/p&gt;

&lt;p&gt;Until next time!&lt;/p&gt;

</description>
      <category>php</category>
      <category>plugin</category>
      <category>software</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Zmanin-WP: Common Codes, part 1</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 05 Oct 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/-zmanin-wp-common-codes-part-1-2nb4</link>
      <guid>https://dev.to/leonadato/-zmanin-wp-common-codes-part-1-2nb4</guid>
      <description>&lt;p&gt;If you’ve been following this blog, you’ll know that I’ve been working on my&amp;nbsp;&lt;a href="https://wordpress.org/plugins/zmanim-wp/" rel="noopener noreferrer"&gt;Zmanim-WP plugin for WordPress&lt;/a&gt;&amp;nbsp;for a while now.&amp;nbsp;&lt;a href="https://adatosystems.com/category/zmanim/" rel="noopener noreferrer"&gt;This blog series&lt;/a&gt;&amp;nbsp;is designed to help you dig deeper into the plugin and understand what it does, how it works, and whether it’s right for your needs.&lt;/p&gt;




&lt;h2&gt;
  
  
  “…And There Was Morning…”
&lt;/h2&gt;

&lt;p&gt;There are a four shortcodes that help calculate times related to the start of the day.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Sunrise&lt;/li&gt;
&lt;li&gt;  Alot hashachar&lt;/li&gt;
&lt;li&gt;  Sof Zman Kria Shema&lt;/li&gt;
&lt;li&gt;  Sof Zman Tefilah&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve discussed some of these times&amp;nbsp;&lt;a href="https://adatosystems.com/2025/04/14/time-data-series-written-in-our-stars/" rel="noopener noreferrer"&gt;in other parts of this series&lt;/a&gt;&amp;nbsp;and I want to keep the focus of these blogs on HOW to use each shortcode. Feel free to let me know in the comments if you want a more explicit tutorial on each of these (and upcoming) times and when they are used.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Sunrise ([zman_sunrise])- this is, as the name implies, the time the sun rises. I covered the shortcode extensively in&amp;nbsp;&lt;a href="https://adatosystems.com/2026/01/05/zmanim-wp-getting-started/" rel="noopener noreferrer"&gt;the previous blog post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  Alot hashachar ([zman_alot]) – before “sunrise” (when the disk of the sun appears over the horizon) is “dawn”. This is a somewhat murky concept, but it basically relates to the time the first light of the sun can be seen coming over the horizon.&lt;/li&gt;
&lt;li&gt;  Sof Zman Kria Shema ([zman_shema]) – the latest time one can say the Shema prayer.&lt;/li&gt;
&lt;li&gt;  Sof Zman Tefilah ([[zman_tefilah]]) – the latest time one can say morning (shacharit) prayers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To these I’m going to add one more: The date itself ([zman_zmandate]).&lt;/p&gt;

&lt;p&gt;Each of those shortcodes can be used as-is, or with the options I described in&amp;nbsp;&lt;a href="https://adatosystems.com/2026/01/05/zmanim-wp-getting-started/" rel="noopener noreferrer"&gt;the previous blog post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  [zman_sunrise date="saturday"]&lt;/li&gt;
&lt;li&gt;  [zman_shema date="saturday" dateformat="g:i:s a"]&lt;/li&gt;
&lt;li&gt;  [zman_alot offset=-20]&lt;/li&gt;
&lt;li&gt;  [[zman_tefilah dateformat=”g:i a”]]&lt;/li&gt;
&lt;li&gt;  [zman_zmandate]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But, of course, there’s more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Special Options
&lt;/h2&gt;

&lt;p&gt;In addition to the standard options, there are special options that only apply to certan shortcodes. Today, I’m going to look at just one:&lt;/p&gt;

&lt;h3&gt;
  
  
  lang
&lt;/h3&gt;

&lt;p&gt;This let’s you control whether information displays in English (the default) or Hebrew. It works for the following shortcodes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Rosh Chodesh ([zman_chodesh])&lt;/li&gt;
&lt;li&gt;  the Molad ([zman_molad])&lt;/li&gt;
&lt;li&gt;  the Parsha ([zman_parsha]).&lt;/li&gt;
&lt;li&gt;  Shabbat Mevorchim ([zman_mevorchim])&lt;/li&gt;
&lt;li&gt;  the date ([zman_zmandate])&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the date ([zman_zmandate]) you can also specify “transliterated” (or “translit” or even “trans”) to give an English-ified version of the Hebrew date.&lt;/p&gt;

&lt;p&gt;So, while&amp;nbsp;&lt;code&gt;[[zman_date lang="hebrew"]]&lt;/code&gt;&amp;nbsp;would give you:&lt;br&gt;&lt;br&gt;
י״ד טבת תשפ״ו&lt;/p&gt;

&lt;p&gt;[&lt;code&gt;[zman_date lang="transliterated"]]&lt;/code&gt;&amp;nbsp;would render as:&lt;br&gt;&lt;br&gt;
14 Tevet, 5786&lt;/p&gt;

&lt;h2&gt;
  
  
  A Matter of Opinion
&lt;/h2&gt;

&lt;p&gt;Unlike my&amp;nbsp;&lt;a href="https://adatosystems.com/2026/01/05/zmanim-wp-getting-started/" rel="noopener noreferrer"&gt;last blog on the plugin&lt;/a&gt;, where I dug into the options, in this case the complexity comes from the initial setup:&lt;/p&gt;

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

&lt;p&gt;Most of the standard time options give you the chance to select the Rabbinic opinion (“shitah”) used for it’s calculations. For example, Alot hashachar could use any one of the following opinions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  alos72&lt;/li&gt;
&lt;li&gt;  alos60&lt;/li&gt;
&lt;li&gt;  alos72Zmanis&lt;/li&gt;
&lt;li&gt;  alos96&lt;/li&gt;
&lt;li&gt;  alos90Zmanis&lt;/li&gt;
&lt;li&gt;  alos96Zmanis&lt;/li&gt;
&lt;li&gt;  alos90&lt;/li&gt;
&lt;li&gt;  alos120&lt;/li&gt;
&lt;li&gt;  alos120Zmanis&lt;/li&gt;
&lt;li&gt;  alos26Degrees&lt;/li&gt;
&lt;li&gt;  alos18Degrees&lt;/li&gt;
&lt;li&gt;  alos19Degrees&lt;/li&gt;
&lt;li&gt;  alos19Point8Degrees&lt;/li&gt;
&lt;li&gt;  alos16Point1Degrees&lt;/li&gt;
&lt;li&gt;  alosBaalHatanya&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What each of these items mean, and what circumstances they should be used in, is the topic for another day (and probably another 5 blog posts). Until then, you can get some details on the&amp;nbsp;&lt;a href="https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#getAlos60()" rel="noopener noreferrer"&gt;KosherJava documentation site: https://kosherjava.com/zmanim/docs/api/com/kosherjava/zmanim/ComplexZmanimCalendar.html#getAlos60()&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here are the shitot for each of the shortcodes we’re covering today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Alot hashachar ([zman_alot])

&lt;ul&gt;
&lt;li&gt;  alos72&lt;/li&gt;
&lt;li&gt;  alos60&lt;/li&gt;
&lt;li&gt;  alos72Zmanis&lt;/li&gt;
&lt;li&gt;  alos96&lt;/li&gt;
&lt;li&gt;  alos90Zmanis&lt;/li&gt;
&lt;li&gt;  alos96Zmanis&lt;/li&gt;
&lt;li&gt;  alos90&lt;/li&gt;
&lt;li&gt;  alos120&lt;/li&gt;
&lt;li&gt;  alos120Zmanis&lt;/li&gt;
&lt;li&gt;  alos26Degrees&lt;/li&gt;
&lt;li&gt;  alos18Degrees&lt;/li&gt;
&lt;li&gt;  alos19Degrees&lt;/li&gt;
&lt;li&gt;  alos19Point8Degrees&lt;/li&gt;
&lt;li&gt;  alos16Point1Degrees&lt;/li&gt;
&lt;li&gt;  alosBaalHatanya&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;  Sof Zman Kria Shema ([zman_shema])
“sofZmanShmaMGA

&lt;ul&gt;
&lt;li&gt;  sofZmanShmaGra&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA19Point8Degrees&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA16Point1Degrees&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA18Degrees&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA72Minutes&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA72MinutesZmanis&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA90Minutes&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA90MinutesZmanis&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA96Minutes&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA96MinutesZmanis&lt;/li&gt;
&lt;li&gt;  sofZmanShma3HoursBeforeChatzos&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA120Minutes&lt;/li&gt;
&lt;li&gt;  sofZmanShmaAlos16Point1ToSunset&lt;/li&gt;
&lt;li&gt;  sofZmanShmaAlos16Point1ToTzaisGeonim7Point083Degrees&lt;/li&gt;
&lt;li&gt;  sofZmanShmaKolEliyahu&lt;/li&gt;
&lt;li&gt;  sofZmanShmaAteretTorah&lt;/li&gt;
&lt;li&gt;  sofZmanShmaFixedLocal&lt;/li&gt;
&lt;li&gt;  sofZmanShmaBaalHatanya&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA18DegreesToFixedLocalChatzos&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA16Point1DegreesToFixedLocalChatzos&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA90MinutesToFixedLocalChatzos&lt;/li&gt;
&lt;li&gt;  sofZmanShmaMGA72MinutesToFixedLocalChatzos&lt;/li&gt;
&lt;li&gt;  sofZmanShmaGRASunriseToFixedLocalChatzos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;  Sof Zman Tefilah ([[zman_tefilah]])

&lt;ul&gt;
&lt;li&gt;  sofZmanTfilaMGA&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaGra&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA19Point8Degrees&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA16Point1Degrees&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA18Degrees&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA72Minutes&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA72MinutesZmanis&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA90Minutes&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA90MinutesZmanis&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA96Minutes&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA96MinutesZmanis&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaMGA120Minutes&lt;/li&gt;
&lt;li&gt;  sofZmanTfila2HoursBeforeChatzos&lt;/li&gt;
&lt;li&gt;  sofZmanTfilahAteretTorah&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaFixedLocal&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaBaalHatanya&lt;/li&gt;
&lt;li&gt;  sofZmanTfilaGRASunriseToFixedLocalChatzos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My goal here is not to overwhelm you. Rather, I want to emphasize that, for each of the different shortcodes, you should look over, consider, and select the opinion that best fits your needs.&lt;/p&gt;

&lt;p&gt;Until next time!&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>tutorial</category>
      <category>webdev</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>Zmanim-WP: Getting Started</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 28 Sep 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/zmanim-wp-getting-started-1cmm</link>
      <guid>https://dev.to/leonadato/zmanim-wp-getting-started-1cmm</guid>
      <description>&lt;p&gt;If you’ve been following this blog, you’ll know that I’ve been working on my&amp;nbsp;&lt;a href="https://wordpress.org/plugins/zmanim-wp/" rel="noopener noreferrer"&gt;Zmanim-WP plugin for WordPress&lt;/a&gt;&amp;nbsp;for a while now.&lt;/p&gt;

&lt;p&gt;If you haven’t, you can check out everything written so far using&amp;nbsp;&lt;a href="https://adatosystems.com/category/zmanim/" rel="noopener noreferrer"&gt;this link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And, while the&amp;nbsp;&lt;a href="https://wordpress.org/plugins/zmanim-wp/#description" rel="noopener noreferrer"&gt;docs&lt;/a&gt;&amp;nbsp;will give you a high level overview, I realized that some folks might want a more detailed set of instructions. That’s what this blog series is going to be about – showing off each aspect or feature of the plugin with details on how to use it.&lt;/p&gt;

&lt;p&gt;In this blog, we’ll just take a look at a couple of the features that are both simple and, at the same time, also allow you to explore a lot of options that are common across the plugin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sunrise, Sunset
&lt;/h2&gt;

&lt;p&gt;More than a&amp;nbsp;&lt;a href="https://www.youtube.com/watch?v=nLLEBAQLZ3Q" rel="noopener noreferrer"&gt;catchy lyric from a popular 1963 Broadway musical&lt;/a&gt;, sunrise and sunset form the basis of almost every other time calculation. So it makes sense to start with those two commands. The most basic usage is the shortcode itself:&lt;/p&gt;

&lt;p&gt;‘[zman_sunrise]‘&lt;br&gt;&lt;br&gt;
or&lt;br&gt;&lt;br&gt;
‘[zman_sunset]‘&lt;/p&gt;

&lt;p&gt;When added to a page, post, widget, newsletter, (etc), this will display the time of those events on the date it is viewed for the location you indicated on the main options page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i0.wp.com/adatosystems.com/wp-content/uploads/2026/01/sunrise-sunset-usage.png?ssl=1" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3j3m9wx7shceh8itfjfe.png" width="471" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Location, Location, Location
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;…this will display the time of those events on the date it is viewed for the location you indicated on the main options page.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let’s break down some of the parts of that sentence:&lt;/p&gt;

&lt;h3&gt;
  
  
  “on the date it is viewed”
&lt;/h3&gt;

&lt;p&gt;The Zmanim-WP plugin works in realtime. If you put ‘[zman_sunrise]‘ on a WordPress page and look at that page on a Monday, you’ll get sunrise for Monday. If you go back and look at it on Tuesday, you’ll get sunrise for that Tuesday.&lt;/p&gt;

&lt;p&gt;At least by default. There are ways to be more specific, and we’ll get to that shortly.&lt;/p&gt;

&lt;h3&gt;
  
  
  “for the location you indicated on the main options page”
&lt;/h3&gt;

&lt;p&gt;Before the Zmanim-WP plugin will work at all, you have to fill out the fields on the Main Options page. These include your location (the latitude and longitude) as well as the time zone. There are other options on that page, but for any time calculation to work, you need to these items in place.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Shortcode Options
&lt;/h2&gt;

&lt;p&gt;In addition to the shortcode itself, Zmanim-WP supports options that let you change everything from the display language to the date shown and beyond.&lt;/p&gt;

&lt;p&gt;The parameters which are available across all (or at least most) Zmanim WP shortcodes are:&lt;/p&gt;

&lt;h3&gt;
  
  
  date
&lt;/h3&gt;

&lt;p&gt;This lets you set a date other than “whatever date it is when I look at it. Valid options include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  today – This shows the zman for the current date (when the page / post is being viewed). Yes, it’s the default action and you don’t actually NEED to include this. But I added it into the program for the sake of completeness.&lt;/li&gt;
&lt;li&gt;  tomorrow: This will show the time for the day after the current date.&lt;/li&gt;
&lt;li&gt;  sunday, monday, tuesday, etc: This will give the time for the next upcoming weekday of that name. So if it’s Tuesday and you used&amp;nbsp;&lt;code&gt;[6:03 am&lt;/code&gt;]&amp;nbsp;then you’ll get sunrise for the NEXT Monday, not the one that just passed.&lt;/li&gt;
&lt;li&gt;  (an actual date): Any reasonable date format (2023-01-20, Jan 20, 2023, 1/20/23, etc.) will show the time for that specific date.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&amp;nbsp;&lt;code&gt;[6:00 am&lt;/code&gt;]&lt;br&gt;&lt;br&gt;
Example:&amp;nbsp;&lt;code&gt;[7:47 am&lt;/code&gt;]&lt;/p&gt;

&lt;h3&gt;
  
  
  offset
&lt;/h3&gt;

&lt;p&gt;This lets you get a time plus or minus the number of minutes (including fractions – i.e. 10.5) you specify. This can be useful if, for example, weekday Mincha starts at 20 minutes before sunset each day.&lt;/p&gt;

&lt;p&gt;Example: [zman_sunset offset=-10]&lt;br&gt;&lt;br&gt;
Example: [zman_sunset offset=20]&lt;br&gt;&lt;br&gt;
Example: [zman_sunset offset=+20]&lt;/p&gt;

&lt;h3&gt;
  
  
  dateformat
&lt;/h3&gt;

&lt;p&gt;Sometimes you want the date to show DAY mm/dd (i.e. “Mon 3/15”). Sometimes you want it to show as yyyy-dd-mm (i.e. “2025-03-15”). Or you want the time to show as hh:mm:ss am/pm (i.e. “09:15:22 am”). The “dateformat” option lets you specify what the output should look like, using the standard PHP date/time formatting codes. Use this link to see all your options:&amp;nbsp;&lt;a href="https://www.php.net/manual/en/datetime.format.php" rel="noopener noreferrer"&gt;https://www.php.net/manual/en/datetime.format.php&lt;/a&gt;&amp;nbsp;and this tutorial for more information:&amp;nbsp;&lt;a href="https://www.tutorialrepublic.com/php-tutorial/php-date-and-time.php" rel="noopener noreferrer"&gt;https://www.tutorialrepublic.com/php-tutorial/php-date-and-time.php&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Example: [zman_sunrise dateformat="m/d/Y h:i:s a"]&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting it all together
&lt;/h2&gt;

&lt;p&gt;When used in combination, these options allow a significant level of control.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  [zman_sunset date="friday"] – gives sunset for the upcoming Friday&lt;/li&gt;
&lt;li&gt;  [zman_sunset offset=+45 date="saturday"] This will give the time that is 45 minutes after sunset on the upcoming Saturday&lt;/li&gt;
&lt;li&gt;  [zman_sunset offset=+72 dateformat="m/d/Y h:i:s a"] this would give the time 72 minutes after sunset, in the format of month/day/year hour:minute:second am/pm.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  We’ve only just started getting started
&lt;/h2&gt;

&lt;p&gt;Sunrise and Sunset are only the first two of a long list of shortcodes available in the&amp;nbsp;&lt;a href="https://wordpress.org/plugins/zmanim-wp/" rel="noopener noreferrer"&gt;Zmanim-WP plugin for WordPress&lt;/a&gt;. I’m going to continue to explore them in the coming weeks.&lt;/p&gt;

&lt;p&gt;If you have questions about the plugin or anything I’ve shared, feel free to reach out in the comments and ask!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>showdev</category>
      <category>tutorial</category>
      <category>wordpress</category>
    </item>
    <item>
      <title>…And Sometimes the Bear Gets You</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 21 Sep 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/and-sometimes-the-bear-gets-you-3l3o</link>
      <guid>https://dev.to/leonadato/and-sometimes-the-bear-gets-you-3l3o</guid>
      <description>&lt;p&gt;I got scammed.&lt;/p&gt;

&lt;p&gt;This isn’t a story about how “…once upon a time, I got scammed.” It wasn’t a younger, less experienced, more trusting me.&lt;/p&gt;

&lt;p&gt;No. The person who got scammed was the “now-me”. The one who was just a few hours younger than the one who’s writing this blog.&lt;/p&gt;

&lt;p&gt;True to the title of this post, it was one of those moments where impulse control (not enough) and desire (too much) conspired to blind me to multiple moments that should have been big flashing caution signs.&lt;/p&gt;

&lt;p&gt;I’m writing this because sometimes&amp;nbsp;&lt;a href="https://adatosystems.com/2017/02/22/showing-your-scars/" rel="noopener noreferrer"&gt;showing your scars&lt;/a&gt;&amp;nbsp;is the quickest and easiest way to help others avoid making the same mistake. I’m also writing this because it can (and does) happen to every one. When I filed the police report, the office said “I work in this department, and&amp;nbsp;&lt;em&gt;&lt;strong&gt;I’ve&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;gotten scammed.”&lt;/p&gt;

&lt;p&gt;So point #1 of this blog is: If it’s happened to you, I hope this gives you comfort knowing you’re not alone.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;“Get to the point, Leon. What happened?”&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’m starting a new job (which is a story for another day) and got a stipend for home-office improvements. I’ve wanted a Sony zv-e10 for&amp;nbsp;&lt;a href="https://adatosystems.com/articles/#videos" rel="noopener noreferrer"&gt;all the video work I’ve been doing&lt;/a&gt;. So last week I started scanning the bargain sites just to see if I could find a deal. One of the sites I checked Craigslist.&lt;/p&gt;

&lt;p&gt;Now before I go further, this isn’t a slam on Craigslist at all. It’s a nice site that has a place in the internet ecosystem that I’ve used to both buy and sell in the past. I’m only mentioning it because it’s NOT the same as eBay or Amazon marketplace or some of the other more sophisticated sites. It’s effectively the local newspaper’s “For Sale/Trade” section. And I’m here to tell you it should ONLY be used when you can meet up IRL. Because as soon as you consider shipping the item, the guardrails are gone and fraud quickly enters the picture.&lt;/p&gt;

&lt;h1&gt;
  
  
  AskMeHowIKnow.
&lt;/h1&gt;

&lt;p&gt;To make a long story short, I found a bargain that was too good to be true; agreed to buy with too little skeptical consideration; and paid too quickly with too few protections. It was only after the money was out of my account and the person on the other side started trying to squeeze me for more cash that I stopped and considered what had happened.&lt;/p&gt;

&lt;p&gt;If I’m being brutally honest, it hurt. I broke out in a cold sweat driven by sheer disbelief. In the moment when it dawned on me that I – a person who’s been terminally online since before “online” was even a thing – had been had, my emotions were no more sophisticated or insightful than a rank novice.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“You don’t rise to the occasion, you sink to the level of your training.”&lt;br&gt;&lt;br&gt;
– Archilochus&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While I basically live online; and use sites (including Craigslist) to buy and sell; and know that the risk of scams is ever-present; despite all of that, it became clear that I’d never trained or prepared to ACTUALLY be on the receiving end of one.&lt;/p&gt;

&lt;p&gt;If you ignore or forget everything else in this blog, please remember this point: If you don’t spend time thinking through how a scam would realistically play out in your situation – if you don’t work through your potential actions, re-actions, and contingencies – then you’ll fall to your most basic reactions. Which are, in most cases (and certainly in my case), neither pretty nor particularly sophisticated.&lt;/p&gt;

&lt;p&gt;The thing that I found most insidious and surprising was my own desire make the scam not happen by willfully ignoring that it had happened. I wanted so very much NOT to be the victim of a scam that I let myself continue the conversation long past the point where I should have blocked and moved on. Thankfully I didn’t let that desire drive me to throw good money after bad, but I need to be clear with you that if it wasn’t for a few lucky glitches in the payment system – which slowed me down just enough for reason to overtake shame, I might have let the situation continue in the vain hope that it would somehow turn itself around.&lt;/p&gt;

&lt;p&gt;With the goal of informing folks who haven’t been through this, here are a few of the warning signs I could have (and should have) paid closer attention to.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  I only communicated with this person via text. Once there was an agreement to buy, I should have called to verify the number was answered by a human. When I finally DID call the number, it went to a completely different state than the area code indicated, and nobody answered.&lt;/li&gt;
&lt;li&gt;  When I asked the person to call me (very late in this process, after I was all but certain I was being scammed) the scammer insisted the call wasn’t going through.&lt;/li&gt;
&lt;li&gt;  The scammer sent me screenshots of shipping costs, but I didn’t double-check them from my side. It turns out they were digitally manipulated.&lt;/li&gt;
&lt;li&gt;  To pay, I was given an email that was clearly a randomized hotmail account: &lt;a href="https://dev.to/cdn-cgi/l/email-protection"&gt;[email&amp;nbsp;protected]&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  My initial attempt to pay failed, and resulted in my account being locked until I called the provider. That doesn’t happen by accident, I tripped one of their systems that warned of potential fraud. But again, I&amp;nbsp;&lt;em&gt;really&lt;/em&gt;&amp;nbsp;wanted that camera, so I willfully ignored it.&lt;/li&gt;
&lt;li&gt;  To pay for shipping, I was given a different person, with a different email: &lt;a href="https://dev.to/cdn-cgi/l/email-protection"&gt;[email&amp;nbsp;protected]&lt;/a&gt; – this payment failed completely. So they gave me another email to try: &lt;a href="https://dev.to/cdn-cgi/l/email-protection"&gt;[email&amp;nbsp;protected]&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By this point, I’d gotten over my initial denial and was certain this was a scam. The correct action at this point is to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Document everything&lt;/li&gt;
&lt;li&gt;  Contact local law enforcement and file a report.&lt;/li&gt;
&lt;li&gt;  File a report with ReportFraud.ftc.gov&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Filing those reports is going to feel like pouring salt in a wound (at least I know it did for me). It’s also going to feel pointless because the scammers are more than likely NOT within the same jurisdiction. Hell, they’re probably not in the same country. BUT… you never know if there isn’t an active operation in progress, and your information adds data points. So my advice is to breathe through the discomfort and file those reports.&lt;/p&gt;

&lt;p&gt;I’m still mad that this happened to me – that I allowed it to happen and actively participated in it – but I also recognize I was lucky to lose relatively little. While it was an expensive lesson, it’s nevertheless a lesson I won’t forget any time soon. And it’s an experience I’m willing to share in order to help others avoid it.&lt;/p&gt;

&lt;p&gt;Finally, as I (somewhat ruefully) joked with the officer who took my report, this isn’t the largest amount I’ve spent while doing research for a blog. So if nothing else, I got a good story out of it for a bargain price.&lt;/p&gt;

</description>
      <category>crime</category>
      <category>cybersecurity</category>
      <category>security</category>
    </item>
    <item>
      <title>AI CURMUDGEON: AI is a backhoe</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 14 Sep 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/ai-curmudgeon-ai-is-a-backhoe-1amc</link>
      <guid>https://dev.to/leonadato/ai-curmudgeon-ai-is-a-backhoe-1amc</guid>
      <description>&lt;p&gt;It’s been a couple of years since May 23, 2023, when I&amp;nbsp;&lt;a href="https://adatosystems.com/2023/05/23/what-chatgpt-needs-is-context/" rel="noopener noreferrer"&gt;posted my first rant about AI in general&lt;/a&gt;&amp;nbsp;and ChatGPT (properly pronounced “chat-jippity”) in particular.&lt;/p&gt;

&lt;p&gt;In that blog, I compared AI to a calculator:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In the hands of a novice, a scientific calculator is far more likely to be used to spell out “fart” than it is to find the proof to Fermat’s theorem. (Use hex mode, put in “46415254”. How I know this is a story for a different day.) Like the calculator, the spreadsheet, and the internet, AI-driven LLM tools are likely to change HOW we do our work, but not the fact that humans will still be the ones doing the work in the first place.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Today I want to offer another perspective, inspired by a LinkedIn post (you can find it&amp;nbsp;&lt;a href="https://www.linkedin.com/posts/dmangot_i-love-this-sooooo-much-a-long-time-ago-activity-7308140267524526080-fHBC" rel="noopener noreferrer"&gt;here&lt;/a&gt;) by the inimitable&amp;nbsp;&lt;a href="https://www.linkedin.com/in/dmangot/" rel="noopener noreferrer"&gt;Dave Mangot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;He started by referencing someone who experienced the consequences of their poor choices, when it came to “vibe coding” with an AI:&lt;/p&gt;

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

&lt;p&gt;Then Dave followed up with this story:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A long time ago I started at a new job and everyone was logging to the Unix hosts as “root”. I asked a friend of mine if I was just out of the loop and this was an ok thing now. He replied “You know what we call people that do that? Amateurs”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Dave continued with his own observation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Despite what all the AI vendors tell you, it’s not there yet and no one really knows when it will be. I’ve spend the last few days coding with an AI Assistant and it’s great! I love it. Never going back.&lt;/p&gt;

&lt;p&gt;But it also:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  wanted to put the DB password in plaintext in the code&lt;/li&gt;
&lt;li&gt;  wanted to hardcode the DB config in the code&lt;/li&gt;
&lt;li&gt;  told me the wrong module name for&amp;nbsp;&lt;code&gt;requirements.txt&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I know enough to instruct the Assistant otherwise so it’s fine. &amp;gt;Building a kit car (prototype) you ordered through the post does not mean you are ready to join an F1 team. Maybe someday.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So as I pondered all of this, another analogy occurred to me:&lt;/p&gt;

&lt;h2&gt;
  
  
  The shovel vs the backhoe
&lt;/h2&gt;

&lt;p&gt;Both a shovel and a backhoe do the same job – they dig holes. The backhoe is certainly faster and more powerful, but in the hands of a novice a shovel can only cause a relatively small amount of trouble, while a backhoe can cause much bigger headaches (both literally and figuratively).&lt;/p&gt;

&lt;p&gt;While both could, conceivably dig up a rock, or the sprinkler system, or the main internet feed to your business, the backhoe is much more likely to do so before the operator is aware of what’s happening.&lt;/p&gt;

&lt;p&gt;Just to be clear, my point isn’t that automated tools are inherently bad. My point is that, IN THE HANDS OF AN INEXPERIENCED PERSON, an automated tool is much more likely to cause trouble and damage instead of doing good.&lt;/p&gt;

&lt;p&gt;This is due to the fact that the automated tool (whether the construction or computing kind) requires experience and expertise to be effective. It’s a labor-saving device only insofar as the operator understands the labor to be done.&lt;/p&gt;

&lt;p&gt;In the intervening 2 years since my original AI post, I have heard from many colleagues who’ve used AI tools to great effect. But I’ve seen far more randos who think they can hop up in the cab of the shiny AI-driven excavator and dig a foundation in an afternoon, who only end up causing destruction and confusion.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>llm</category>
    </item>
    <item>
      <title>Software migration: Pain vs Risk</title>
      <dc:creator>Leon Adato</dc:creator>
      <pubDate>Mon, 07 Sep 2026 14:00:00 +0000</pubDate>
      <link>https://dev.to/leonadato/software-migration-pain-vs-risk-2nih</link>
      <guid>https://dev.to/leonadato/software-migration-pain-vs-risk-2nih</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;“And the day came when the risk to remain tight in a bud was more painful than the risk it took to blossom.” – Anais Nin&lt;/p&gt;
&lt;/blockquote&gt;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</description>
      <category>community</category>
      <category>discuss</category>
      <category>programming</category>
      <category>python</category>
    </item>
  </channel>
</rss>
