<?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: Colin Dean</title>
    <description>The latest articles on DEV Community by Colin Dean (@colindean).</description>
    <link>https://dev.to/colindean</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F44839%2F38fd8c45-c652-4b29-bd8b-0ac2ac7ec886.jpg</url>
      <title>DEV Community: Colin Dean</title>
      <link>https://dev.to/colindean</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/colindean"/>
    <language>en</language>
    <item>
      <title>How I think about log levels</title>
      <dc:creator>Colin Dean</dc:creator>
      <pubDate>Sun, 08 Jan 2023 20:03:00 +0000</pubDate>
      <link>https://dev.to/colindean/how-i-think-about-log-levels-4764</link>
      <guid>https://dev.to/colindean/how-i-think-about-log-levels-4764</guid>
      <description>&lt;p&gt;I recently had a moment to think about how I use log levels. I've used logging in various frameworks and standard libraries across many languages. While some levels are standard, not all tools expose the same levels and not all tools have all of the levels I've come to want.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Level&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Alert&lt;/th&gt;
&lt;th&gt;Enabled in Production&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;trace&lt;/td&gt;
&lt;td&gt;Emit practically every variable in scope or "got here" type messages&lt;/td&gt;
&lt;td&gt;Never&lt;/td&gt;
&lt;td&gt;Only in madness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;debug&lt;/td&gt;
&lt;td&gt;Emit critical variables or function entry/return&lt;/td&gt;
&lt;td&gt;Never&lt;/td&gt;
&lt;td&gt;When unable to reproduce behavior in lower environments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;info&lt;/td&gt;
&lt;td&gt;Critical section entry/exit, expensive section input parameter or return inspection&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes for you code, No for dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;warning&lt;/td&gt;
&lt;td&gt;Recoverable, accounted-for problems that could be expensive en masse&lt;/td&gt;
&lt;td&gt;Yes, when exceeding a frequency threshold, a human should intervene at their convenience&lt;/td&gt;
&lt;td&gt;Yes, except to silence an alert when it's been triaged and cannot be immediately fixed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;error&lt;/td&gt;
&lt;td&gt;Unaccounted-for problems or critical dependency failures, but not grave enough to halt&lt;/td&gt;
&lt;td&gt;Yes, a human should intervene ASAP&lt;/td&gt;
&lt;td&gt;Of course&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fatal OR critical&lt;/td&gt;
&lt;td&gt;Unaccounted-for, unexpected failures that must stop the process emitted moments before exit&lt;/td&gt;
&lt;td&gt;Absolutely, a human must intervene before the process can restart&lt;/td&gt;
&lt;td&gt;Absolutely&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I've generally colored them with ANSI colors in log output like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fatal/critical: ⚫🟥 black text on red background&lt;/li&gt;
&lt;li&gt;error: 🔴⬛ red text on black background&lt;/li&gt;
&lt;li&gt;warning: 🟡 yellow or gold text on a transparent background&lt;/li&gt;
&lt;li&gt;info: 🔵 blue text on a transparent background&lt;/li&gt;
&lt;li&gt;debug: 🟢 green text on a transparent background&lt;/li&gt;
&lt;li&gt;trace: 🟠 orange text on a transparent background&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These colors work for my non-colorblind eyes. There are color schemes that are probably better to account for those for whom my colors aren't differentiable, so think of them and comment if you have one you like.&lt;/p&gt;

&lt;p&gt;I'm doing mostly data pipelines for the last few years but even in my web service days, these were the levels we wanted and rules we followed. One team even looked into &lt;a href="https://en.wikipedia.org/wiki/Aspect-oriented_programming"&gt;aspect-oriented programming&lt;/a&gt; in order to get the level of granularity we wanted for trace logging once.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;An earlier version was originally posted &lt;a href="https://www.reddit.com/r/programming/comments/106c2px/logging_practices_i_follow/j3hyx4w/"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>logging</category>
    </item>
    <item>
      <title>Share your compensation to improve the software industry</title>
      <dc:creator>Colin Dean</dc:creator>
      <pubDate>Wed, 10 Aug 2022 15:55:59 +0000</pubDate>
      <link>https://dev.to/colindean/share-your-compensation-to-improve-the-software-industry-1hed</link>
      <guid>https://dev.to/colindean/share-your-compensation-to-improve-the-software-industry-1hed</guid>
      <description>&lt;p&gt;&lt;strong&gt;Everyone benefits from salary transparency.&lt;/strong&gt; When we share information about our salary and benefits with our coworkers and with the rest of our industry, we all get information we can use to set clear expectations for compensation as employees, contractors, and employers.&lt;/p&gt;




&lt;p&gt;TL;DR 👉 &lt;a href="https://codeandsupply.co/survey?from=devto-top"&gt;Share our compensation and more through the Code &amp;amp; Supply Compensation Survey for Tech Workers&lt;/a&gt; in just 10 minutes.&lt;/p&gt;




&lt;p&gt;Share your tech worker compensation, commute, work life, and satisfaction with &lt;a href="https://codeandsupply.co"&gt;Code &amp;amp; Supply&lt;/a&gt;, a Pittsburgh-based but worldwide community of software professionals known for its Meetups, chat community, co-working space, and its conferences like &lt;a href="https://abstractions.io"&gt;Abstractions&lt;/a&gt; and &lt;a href="https://heartifacts.codeandsupply.co"&gt;Heartifacts&lt;/a&gt;. Together, we will equip you, your friends, and coworkers to ask for raises, negotiate, and improve our industry. &lt;/p&gt;




&lt;p&gt;If you spend enough time around the tech industry, or most jobs, and you will inevitably hear someone talk about a time that they found out that they were underpaid compared to their coworkers or someone doing a similar jobs at another company. My first encounter with that was approximately two years into my career as a software engineer when I found out a peer with about the same tech experience but a few years more &lt;em&gt;working&lt;/em&gt; experience was making more than 33% more than me. I also learned that day about salary negotiation. I got involved in &lt;a href="https://modelviewculture.com/news/lets-talk-about-pay"&gt;&lt;code&gt;#talkpay&lt;/code&gt;&lt;/a&gt; early on, too. Years later, I started the C&amp;amp;S Compensation Survey program in 2016 when I wanted the C&amp;amp;S community to benefit from &lt;em&gt;talking about pay&lt;/em&gt; and sharing their compensation packages, commutes, and more.&lt;/p&gt;

&lt;p&gt;The outcomes have made the volunteer effort worth it.&lt;/p&gt;

&lt;p&gt;Readers of our past results reported sometimes life-changing changes to their compensation after citing the results in job offer negotiations, in hiring practices, and in arguing for raises. A director of engineering secured a 17% higher starting salary for their entry-level employees, the first two of whom were young women. A veteran engineer realized how much they were underpaid at their long-time employer and left for a significantly higher salary having not actively looked for a job in many years. A mid-career engineer found that their salary was on par with others at their experience level and skill set, but that they were missing out on other aspects of compensation that they’d not previously known to even ask for.&lt;/p&gt;

&lt;p&gt;The report isn’t just for workers, though. It’s for employers, too. We want employers to use the data to hire people at good wages and retain them through industry-leading benefits and regular compensation adjustments. &lt;/p&gt;

&lt;p&gt;We’re proud of our sponsors, currently devrelate.io, Truefit Solutions, Technical.ly, RustBuilt, and WITPGH, and of our past sponsors TechElevator, Braintree Payments, and StartNowPGH for funding this effort. Great companies fund efforts such as this compensation survey in order to ensure they’re doing the best they can to treat their employees fairly. We still have some sponsorship slots open, too.&lt;/p&gt;

&lt;p&gt;Build strength in numbers and inform tech salary negotiations while maintaining your anonymity. Our survey data is kept in house and analyzed by our volunteer team. We're not some mega-corp or think tank: we're a small group who is passionate about bringing people together to build software, community, and friendships. We want to get data, analyze it, and share our insight with our community: everyone involved in building software.&lt;/p&gt;

&lt;p&gt;Who should take it? Anyone who helps to make software happen: engineers, developers, designers, product and project managers, technical writers, people managers, sysadmins, executives, and more. We're pretty focused on the Rust Belt cities like Pittsburgh, Cleveland, and Columbus but we want to see a strong turnout from as far away as Philadelphia, Washington DC, and Raleigh. We'd love data from the big tech hubs, too: we'll have a section for any metropolitan area if we get enough data.&lt;/p&gt;

&lt;p&gt;So, &lt;a href="https://codeandsupply.co/survey?from=devto-bottom"&gt;take the C&amp;amp;S Compensation Survey now&lt;/a&gt; to share yours. Don't forget to share the survey with your coworkers and friends in the industry!&lt;/p&gt;

</description>
      <category>compensation</category>
      <category>survey</category>
      <category>worklifebalance</category>
      <category>payequity</category>
    </item>
  </channel>
</rss>
