<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Tomás Dias Almeida notes</title>
    <link>https://tomasalmeida.pro/</link>
    <description>Recent content on Tomás Dias Almeida notes</description>
    <generator>Hugo -- 0.140.1</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 25 Dec 2024 21:42:37 +0100</lastBuildDate>
    <atom:link href="https://tomasalmeida.pro/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Books</title>
      <link>https://tomasalmeida.pro/books/</link>
      <pubDate>Wed, 25 Dec 2024 21:33:43 +0100</pubDate>
      <guid>https://tomasalmeida.pro/books/</guid>
      <description>&lt;h2 id=&#34;2024&#34;&gt;2024&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Never Split the Difference: Negotiating as if Your Life Depended on It.&lt;/em&gt;
&lt;br&gt;&lt;strong&gt;Author:&lt;/strong&gt; Chris Voss, Tahl Raz
&lt;br&gt;A book about negotiation and learning how to deal with different type of people. Good one if you want to try to negotiate better.&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>PyConES 2024: my impressions of my first time in a python conference!</title>
      <link>https://tomasalmeida.pro/posts/2024/10/pycones-2024/</link>
      <pubDate>Sun, 06 Oct 2024 21:54:45 +0100</pubDate>
      <guid>https://tomasalmeida.pro/posts/2024/10/pycones-2024/</guid>
      <description>&lt;h2 id=&#34;pycones-2024-in-vigo&#34;&gt;PyconEs 2024 in Vigo&lt;/h2&gt;
&lt;p&gt;PyConES is the annual Python conference in Spain, and it is organized by the Python Spain association. The Python community in Vigo is quite active and so, they were invited to host PyConES 2024. Just to mention too, Python Vigo was  a pillar to the creation of VigoTech Alliance, the meta community of tech communities in Vigo.&lt;/p&gt;
&lt;p&gt;Keeping the long story, Confluent was an sponsor (and a colleague had a talk), so I had no excuses to not attend it. If you do not want to hear more, the TL;DR is that I was impressed by the number of people, the quality of the talks and the organization. Congrats to everyone involved!&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Use Confluent for Kubernetes to Manage Resources Outside of Kubernetes</title>
      <link>https://tomasalmeida.pro/posts/2024/02/resource-management-with-confluent-for-kubernetes/</link>
      <pubDate>Thu, 08 Feb 2024 21:54:45 +0100</pubDate>
      <guid>https://tomasalmeida.pro/posts/2024/02/resource-management-with-confluent-for-kubernetes/</guid>
      <description>&lt;h2 id=&#34;article-in-confluent-blog&#34;&gt;Article in Confluent Blog&lt;/h2&gt;
&lt;p&gt;My first article on Confluent Blog &lt;a href=&#34;https://www.confluent.io/blog/resource-management-with-confluent-for-kubernetes/&#34;&gt;How to Use Confluent for Kubernetes to Manage Resources Outside of Kubernetes&lt;/a&gt; talks about how to manage your Confluent resources like RBAC, topics, schemas and connectors using Kubernetes in Confluent components living outside Kubernetes.&lt;/p&gt;
&lt;p&gt;The article is complemented with a full demo and I hope it can be an inspiration if you are familiar with Kubernetes and uses Confluent components in VM machines or similar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Moving to GitHub Actions</title>
      <link>https://tomasalmeida.pro/posts/2024/01/moving-to-github-actions/</link>
      <pubDate>Mon, 15 Jan 2024 21:54:45 +0100</pubDate>
      <guid>https://tomasalmeida.pro/posts/2024/01/moving-to-github-actions/</guid>
      <description>&lt;h2 id=&#34;why&#34;&gt;Why&lt;/h2&gt;
&lt;p&gt;Travis CI is blocking this blog to be generated, why? I do not know, I have credits for it, but it cannot be used, so I am forced to tick a task in my list and move to GitHub actions.&lt;/p&gt;
&lt;h2 id=&#34;disabling-travis-ci&#34;&gt;Disabling Travis CI&lt;/h2&gt;
&lt;h3 id=&#34;removing-github---travis-ci-integration&#34;&gt;Removing GitHub &amp;lt;-&amp;gt; Travis CI integration&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a href=&#34;https://github.com/settings/installations&#34;&gt;https://github.com/settings/installations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Search &amp;ldquo;Travis CI&amp;rdquo; and click Configure&lt;/li&gt;
&lt;li&gt;Scroll down and click in the &amp;ldquo;Uninstall&amp;rdquo; button&lt;/li&gt;
&lt;li&gt;Go to &lt;a href=&#34;https://github.com/settings/apps/authorizations&#34;&gt;https://github.com/settings/apps/authorizations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Search &amp;ldquo;Travis CI&amp;rdquo; and click Revoke&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;deleting-travis-ci&#34;&gt;Deleting Travis CI&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;According to &lt;a href=&#34;https://travis-ci.community/t/account-removal/13164&#34;&gt;this forum question&lt;/a&gt;, there is no UI option.&lt;/li&gt;
&lt;li&gt;Send a mail to &lt;a href=&#34;mailto:support@travis-ci.com&#34;&gt;support@travis-ci.com&lt;/a&gt; requesting the account deletion.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;add-github-actions&#34;&gt;Add GitHub Actions&lt;/h2&gt;
&lt;p&gt;That is the easiest part as Hugo created a &lt;a href=&#34;https://gohugo.io/hosting-and-deployment/hosting-on-github/&#34;&gt;nice tutorial&lt;/a&gt;. I followed it and that is the reason why you are able to read this blog post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrating From Junit4 to Junit5</title>
      <link>https://tomasalmeida.pro/posts/2022/06/migrating-from-junit4-to-junit5/</link>
      <pubDate>Mon, 20 Jun 2022 22:14:25 +0200</pubDate>
      <guid>https://tomasalmeida.pro/posts/2022/06/migrating-from-junit4-to-junit5/</guid>
      <description>&lt;p&gt;In 2019, I gave a talk at &lt;a href=&#34;https://www.netcentric.biz/&#34;&gt;Netcentric&lt;/a&gt; Summit about Junit5 migration and its advantages. You can check the content here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Video: &lt;a href=&#34;https://www.youtube.com/watch?v=XJiZbnbu6uc&#34;&gt;Netcentric | JUnit 5, mockito 2 and AEM Mocks, is it true for you?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Blog post: &lt;a href=&#34;https://www.netcentric.biz/insights/2020/07/junit5-new-features.html&#34;&gt;JUnit 5: leveraging new features for testing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After 3 years, I wanted to revisit the procedure to migrate from junit4 to junit5, so let&amp;rsquo;s do it! The result was this &lt;a href=&#34;https://github.com/Netcentric/accesscontroltool/pull/637&#34;&gt;PR&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;h3 id=&#34;1-dependencies&#34;&gt;1. Dependencies&lt;/h3&gt;
&lt;h4 id=&#34;12-main-pomxml&#34;&gt;1.2 Main pom.xml&lt;/h4&gt;
&lt;p&gt;In the main pom.xml, replace&lt;/p&gt;</description>
    </item>
    <item>
      <title>My summary about AWS queues</title>
      <link>https://tomasalmeida.pro/posts/2022/05/my-summary-about-aws-queues/</link>
      <pubDate>Sun, 29 May 2022 12:40:26 +0200</pubDate>
      <guid>https://tomasalmeida.pro/posts/2022/05/my-summary-about-aws-queues/</guid>
      <description>&lt;p&gt;I was doubting about writing this post because AWS is evolving really fast and this post will be probably old very fast. So, I am adding the AWS documentation, so, please take your time to check the official documentation to confirm my findings (and if possible, write me a message so I can update it if needed).&lt;/p&gt;
&lt;h2 id=&#34;sqs&#34;&gt;SQS&lt;/h2&gt;
&lt;p&gt;AWS SQS is a simple 1:1 queue, so it delivers messages from A to B.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About me &amp; this page</title>
      <link>https://tomasalmeida.pro/about/</link>
      <pubDate>Sun, 29 May 2022 10:00:00 +0100</pubDate>
      <guid>https://tomasalmeida.pro/about/</guid>
      <description>&lt;p&gt;Hello, I am Tomás. I work as Customer Success Technical Architect (CSTA, read like &amp;ldquo;siesta&amp;rdquo;) at &lt;a href=&#34;https://www.confluent.io&#34;&gt;Confluent&lt;/a&gt;. As CSTA, I help companies to keep their data in motion using Confluent products and Apache Kafka.&lt;/p&gt;
&lt;p&gt;Before Confluent, I worked as senior software engineer and team lead at &lt;a href=&#34;https://www.netcentric.biz&#34;&gt;Netcentric&lt;/a&gt; being the bridge between the business necessities and the development team. My main tasks included participating in business meetings to guide the client about how to take advantage of Adobe products, supporting the team to work better, and designing and implementing solutions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating an archetype from an existing project</title>
      <link>https://tomasalmeida.pro/posts/2021/05/creating-an-archetype-from-project/</link>
      <pubDate>Sat, 29 May 2021 15:13:31 +0200</pubDate>
      <guid>https://tomasalmeida.pro/posts/2021/05/creating-an-archetype-from-project/</guid>
      <description>&lt;p&gt;If you are creating a cloud of microservices or are in an environment where you have to generate multiple maven projects or modules, it is very useful to create archetypes to handle these new modules/projects creation.&lt;/p&gt;
&lt;h2 id=&#34;what-is-an-archetype&#34;&gt;What is an archetype?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://maven.apache.org/guides/introduction/introduction-to-archetypes.html&#34;&gt;A Maven archetype&lt;/a&gt; is a templated project. Maven offers several archetypes that allow you to create new maven modules ready to run in few seconds.&lt;/p&gt;
&lt;h2 id=&#34;how-to-use-a-generic-archetype&#34;&gt;How to use a generic archetype?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://maven.apache.org/archetype/maven-archetype-plugin/usage.html&#34;&gt;Archetype usage&lt;/a&gt; is quite simple. If you want to generate an archetype based on the default list, just run:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing myself to Kubernetes</title>
      <link>https://tomasalmeida.pro/posts/2021/04/introducing-myself-to-k8s/</link>
      <pubDate>Fri, 02 Apr 2021 20:51:10 +0200</pubDate>
      <guid>https://tomasalmeida.pro/posts/2021/04/introducing-myself-to-k8s/</guid>
      <description>&lt;p&gt;I am starting my journey with kubernetes (k8s) and I want to share the tutorials and blog posts that I read. In that way I can find them easily too 😬.&lt;/p&gt;
&lt;h2 id=&#34;kubernetes-basics&#34;&gt;Kubernetes basics:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://dzone.com/articles/a-beginners-guide-to-kubernetes&#34;&gt;A Beginner’s Guide to Kubernetes&lt;/a&gt;: a very complete guide about the kubernetes basics and how they work internally.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.jeremyjordan.me/kubernetes/&#34;&gt;An introduction to Kubernetes.&lt;/a&gt;: defines kubernetes, pod, deployment, service, ingress, job, kubernetes control plane and when to NOT use k8s.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;kubernetes-tools&#34;&gt;Kubernetes tools:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;https://dzone.com/articles/developer-tooling-for-kubernetes-in-2021-helm-kust&#34;&gt;Developer Tooling for Kubernetes in 2021: Helm, Kustomize, and Skaffold&lt;/a&gt;. Important point here: kustomize is part of &lt;code&gt;kubectl&lt;/code&gt; calling &lt;code&gt;kubectl -k&lt;/code&gt;, so it will, possibly, become the standard.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-manage-your-kubernetes-configurations-with-kustomize&#34;&gt;How To Manage Your Kubernetes Configurations with Kustomize&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dzone.com/articles/expose-your-app-to-the-internet-using-ingress-cont&#34;&gt;Expose Your App to The Internet Using Ingress Controller&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/GoogleContainerTools/kaniko&#34;&gt;kaniko - Build Images In Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This list will grow, but if you found any error or want to help me to improve this article, please &lt;a href=&#34;https://github.com/tomasalmeida/tomasalmeida.github.io/pull/4&#34;&gt;comment the pull request&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debugging AEM: java code in IntelliJ</title>
      <link>https://tomasalmeida.pro/posts/2021/01/debugging-aem-jar-in-intellij/</link>
      <pubDate>Sun, 31 Jan 2021 19:38:11 +0100</pubDate>
      <guid>https://tomasalmeida.pro/posts/2021/01/debugging-aem-jar-in-intellij/</guid>
      <description>&lt;p&gt;When you are working on Adobe AEM, you usually have to debug some sling or OSGi classes to understand what is happening &amp;ldquo;behind the scene&amp;rdquo;. IntelliJ allows you to download source code and attach it to IntelliJ, but sometimes you cannot do it (you do not have internet access, your vpn to your nexus is down, etc&amp;hellip;).&lt;/p&gt;
&lt;p&gt;This trick allows you to import the jar bundles into IntelliJ and debug them without downloading the sources!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mocking a http post server with node.js</title>
      <link>https://tomasalmeida.pro/posts/2021/01/mock-server-nodejs/</link>
      <pubDate>Wed, 06 Jan 2021 21:55:47 +0100</pubDate>
      <guid>https://tomasalmeida.pro/posts/2021/01/mock-server-nodejs/</guid>
      <description>&lt;p&gt;Sometimes we need to contact remote servers and send him some data. It is hard to test the whole feature if the remote server does not offer you a sandbox environment.&lt;/p&gt;
&lt;p&gt;An easy way to do it is creating a mock http server and for me, the easiest way of doing it is with node.js&lt;/p&gt;
&lt;h2 id=&#34;install-nodejs&#34;&gt;Install node.js&lt;/h2&gt;
&lt;p&gt;Node.js offers a great &lt;a href=&#34;https://nodejs.org/en/download/&#34;&gt;page for downloading&lt;/a&gt; it, I prefer to use it the &lt;a href=&#34;https://nodejs.org/en/download/package-manager/&#34;&gt;package manager options&lt;/a&gt;. For macOS, I use brew:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mocking static methods (and constructors) using Mockito 3.5.0&#43;</title>
      <link>https://tomasalmeida.pro/posts/2020/12/mocking-static-methods-mockito/</link>
      <pubDate>Wed, 30 Dec 2020 23:22:39 +0100</pubDate>
      <guid>https://tomasalmeida.pro/posts/2020/12/mocking-static-methods-mockito/</guid>
      <description>&lt;p&gt;Since version 3.4.0, Mockito allows us to &lt;a href=&#34;https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#48&#34;&gt;mock static methods&lt;/a&gt;, so you do not need to add powermock as dependency for most of your necessities.&lt;/p&gt;
&lt;p&gt;I will not discuss why we should avoid static methods or helper class with static methods, as several articles do it quite well (&lt;a href=&#34;https://dzone.com/articles/why-static-bad-and-how-avoid&#34;&gt;1&lt;/a&gt;, &lt;a href=&#34;https://blog.christianposta.com/testing/java-static-methods-can-be-a-code-smell/&#34;&gt;2&lt;/a&gt;, &lt;a href=&#34;https://www.vojtechruzicka.com/avoid-utility-classes/&#34;&gt;3&lt;/a&gt;, etc..), we need to deal with static methods in the real world of development and mockito helps us to create unit tests when these static methods are involved.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Presentations</title>
      <link>https://tomasalmeida.pro/presentations/</link>
      <pubDate>Sat, 26 Dec 2020 12:18:52 +0100</pubDate>
      <guid>https://tomasalmeida.pro/presentations/</guid>
      <description>&lt;h2 id=&#34;2021&#34;&gt;2021&lt;/h2&gt;
&lt;h4 id=&#34;netcentric-summit-2021&#34;&gt;Netcentric Summit 2021&lt;/h4&gt;
&lt;p&gt;Blog post: &lt;a href=&#34;https://www.netcentric.biz/insights/2022/04/kustomize-crossplane-kubernetes.html&#34;&gt;Kustomize &amp;amp; Crossplane: maximizing the utility of Kubernetes&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;2019&#34;&gt;2019&lt;/h2&gt;
&lt;h4 id=&#34;netcentric-summit-2019&#34;&gt;Netcentric Summit 2019&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=XJiZbnbu6uc&#34;&gt;&lt;img alt=&#34;Junit5 at Netcentric Summit&#34; loading=&#34;lazy&#34; src=&#34;https://img.youtube.com/vi/XJiZbnbu6uc/hqdefault.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Blog post: &lt;a href=&#34;https://www.netcentric.biz/insights/2020/07/junit5-new-features.html&#34;&gt;JUnit 5: leveraging new features for testing&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;2017&#34;&gt;2017&lt;/h2&gt;
&lt;h4 id=&#34;vigojug-2017-make-java-great-again&#34;&gt;VigoJUG 2017: Make Java Great Again!&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=PKqTlj38X7M&#34;&gt;&lt;img alt=&#34;Make Java Great Again!&#34; loading=&#34;lazy&#34; src=&#34;https://img.youtube.com/vi/PKqTlj38X7M/hqdefault.jpg&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Showing hidden files and folder on Finder (MacOS)</title>
      <link>https://tomasalmeida.pro/posts/2020/12/showing-hidden-files-folder-macos/</link>
      <pubDate>Sat, 26 Dec 2020 11:49:09 +0100</pubDate>
      <guid>https://tomasalmeida.pro/posts/2020/12/showing-hidden-files-folder-macos/</guid>
      <description>&lt;p&gt;One thing that I miss from Windows is the Windows Explorer (yes, I like it). Finder is not as good as Windows Explorer&amp;hellip;&lt;/p&gt;
&lt;h2 id=&#34;permanent-solution&#34;&gt;Permanent solution&lt;/h2&gt;
&lt;p&gt;I like to see all my files, so to do it on MacOS , open a terminal and type&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;defaults write com.apple.Finder AppleShowAllFiles true
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;killall Finder
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;revert-changes&#34;&gt;Revert changes&lt;/h3&gt;
&lt;p&gt;This setting is persisted even after a restart, so if you want to go back to your previous status (hidden files are hidden), open a terminal again and type:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating a blog using Hugo, travis-ci and Github pages</title>
      <link>https://tomasalmeida.pro/posts/2020/12/creating-blog-using-hugo-travis-github/</link>
      <pubDate>Thu, 24 Dec 2020 12:58:00 +0100</pubDate>
      <guid>https://tomasalmeida.pro/posts/2020/12/creating-blog-using-hugo-travis-github/</guid>
      <description>&lt;h1 id=&#34;how-i-created-this-blog&#34;&gt;How I created this blog&lt;/h1&gt;
&lt;p&gt;As many github blogs born and die, my first post is how I created this blog using hugo as static page generator, travis-ci as CI/CD and github pages as page hosting.&lt;/p&gt;
&lt;p&gt;As I do not want to have 2 separate repositories as proposed by Claudio Jolowicz &lt;a href=&#34;https://cjolowicz.github.io/posts/hosting-a-hugo-blog-on-github-pages-with-travis-ci/&#34;&gt;in his tutorial&lt;/a&gt;, I will use the possibility to host the source under &lt;code&gt;main&lt;/code&gt; and the page itself under another branch. Github proposes as a standard to use &lt;code&gt;gh-pages&lt;/code&gt;for the content itself, so I will follow it.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
