<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Alexandre Saudate on Medium]]></title>
        <description><![CDATA[Stories by Alexandre Saudate on Medium]]></description>
        <link>https://medium.com/@alesaudate?source=rss-a3883855da5f------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Yd0ee5GJRVKnDhgGhAyHbQ.jpeg</url>
            <title>Stories by Alexandre Saudate on Medium</title>
            <link>https://medium.com/@alesaudate?source=rss-a3883855da5f------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 09:05:17 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@alesaudate/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Masking sensitive data in Log4J 2 — The simplest way possible]]></title>
            <link>https://alesaudate.medium.com/masking-sensitive-data-in-log4j-2-the-simplest-way-possible-2c2e74c17f2d?source=rss-a3883855da5f------2</link>
            <guid isPermaLink="false">https://medium.com/p/2c2e74c17f2d</guid>
            <category><![CDATA[java]]></category>
            <category><![CDATA[sensitive-data]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[log4j2]]></category>
            <dc:creator><![CDATA[Alexandre Saudate]]></dc:creator>
            <pubDate>Thu, 27 May 2021 18:21:41 GMT</pubDate>
            <atom:updated>2021-05-27T18:35:06.477Z</atom:updated>
            <content:encoded><![CDATA[<h3>Masking sensitive data in Log4J 2 — The simplest way possible</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QyXXrWd57ecH8OUoT1j10Q.jpeg" /><figcaption>Sensitive data must be at least masked in every software, according to GDPR, PCI-DSS, and several other laws and/or regulations concerning data protection</figcaption></figure><p>Recently, I came across a problem that I believe happened (or will happen) in the life of every developer: masking sensitive data in logs.</p><p>Although this is a very common concern, it surprised me how long it took to figure out a solution for the problem.</p><p>I’ve read several blogs , StackOverflow, etc., searching for means on how to do it. I’ve read about <a href="https://logging.apache.org/log4j/2.x/manual/appenders.html#RewriteAppender">RewritePolicy</a>, <a href="https://github.com/mariocairone/log4j2-masking-policy">found some plugins already developed</a>, etc. But none of these solutions actually solved my problem.</p><p>It turns out Log4J has a severe problem: it completely lacks proper documentation for configuration using properties files. And its community follows along.</p><p>So I couldn’t use the engine’s approach to do what I needed because all I found was how to do it using XML files. And the system I am working is already using a .properties file.</p><p>But in the end, the solution I ended up coming with (again, after a lot of research) was developing a custom pattern converter. This converter actually receives all the message log in a StringBuilder, which allows me to edit it as I wish.</p><p>So I crafted a class like this one:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b9b7945ace5b41d50620144ce4e283aa/href">https://medium.com/media/b9b7945ace5b41d50620144ce4e283aa/href</a></iframe><p>As you can see, the class is located in the package org.example . So the next step would be to properly configure and use it.</p><p>So for Log4J 2 to use this class I must use a property called packages , which scans the packages provided for classes annotated with @Plugin . Once it does, setting up the pattern is fairly simple. So my properties file ended up like this one:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2484f07674a3f971ecd00a24fe57081e/href">https://medium.com/media/2484f07674a3f971ecd00a24fe57081e/href</a></iframe><p>Note that I had to place the expression %ex{full} <strong>before </strong>%hideEmails . Otherwise, Log4J inserts this expression by default after the whole pattern, thus causing any exceptions (which might contain sensitive data as well) to be print without passing by the filter.</p><p>And that’s it! Now, every word on the log (whether it’s in the message or in exception’s body) will be covered by this filter and thus will be protected against sensitive data.</p><p>Of course, the solution is also extensible to allow you to do some other filtering, like removing credit card’s data, customer’s names, anything. As you have full access to the data, this should not be a concern.</p><p>I must say a very special thank you to folks behind <a href="https://facingissuesonit.com/2018/06/08/log4j2-how-to-mask-logs-personal-confidential-spi-information/">https://facingissuesonit.com/2018/06/08/log4j2-how-to-mask-logs-personal-confidential-spi-information</a> . My solution is heavily based on theirs.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2c2e74c17f2d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Soft skills for the rest of us (or: How I realized I need soft skills in my tech career)]]></title>
            <link>https://alesaudate.medium.com/soft-skills-for-the-rest-of-us-or-how-i-realized-i-need-soft-skills-in-my-tech-career-390310cd627e?source=rss-a3883855da5f------2</link>
            <guid isPermaLink="false">https://medium.com/p/390310cd627e</guid>
            <category><![CDATA[tech]]></category>
            <category><![CDATA[negotiation]]></category>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[soft-skills]]></category>
            <dc:creator><![CDATA[Alexandre Saudate]]></dc:creator>
            <pubDate>Wed, 24 Jun 2020 21:19:58 GMT</pubDate>
            <atom:updated>2020-06-24T21:19:58.654Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/820/1*ZgYb-uWlxbncRjJ4Y8N98Q.png" /><figcaption>Soft skills may include negotiation skills, speech skills, etc.</figcaption></figure><p>I was reading the book <a href="https://www.amazon.com/gp/product/1492043451">Fundamentals of Software Architecture</a> when, right at the introduction chapter, I came across two sub-sections that were named <strong>Possess Interpersonal Skills</strong> and <strong>Understand and Navigate Politics</strong>.</p><p>It seemed a little weird to me to understand how I, as someone who decided 15 years ago to pursue a career in tech, must now pursue learnings in other fields, such as politics, in order to improve my career in tech.</p><p>Maybe this is something that I always neglected but has proven to be true given some personal experiences I had with some friends of mine. For example, I have a friend that currently is VP of engineering in a huge bank in Mexico. While it’s true that he had an amazing career in more tech roles, what always seemed very impressive to me was how his soft skills were deeply strong. Most of the time when working together, I had the feeling that, although sometimes he wasn’t able to personally accomplish some given tech task, he would always manage to do so somehow by convincing some of his friends to do so.</p><p>And isn’t it what is expected from a leader ?</p><blockquote>It’s not required from a leader to know how to personally accomplish every single task that lands on his / her desk. But it is required that he / she knows the right people to do so, and how to encourage these people to do the best they can.</blockquote><p>Anyway, this book has a chapter named <strong>Negotiation and Leadership Skills</strong>. I can’t barely wait to read this, mostly because it is something usually swept under the rug in tech schools and universities. Somehow, it seems that going far on a tech career depends on something that is <strong>not</strong> taught in formal tech education. It’s almost like we should have been born with such abilities — which is something that, deep in my heart, I refuse to believe.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=390310cd627e" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>