<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ricardo Ferreira</title><link>https://riferrei.com/</link><description>Recent content on Ricardo Ferreira</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 19 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://riferrei.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting Started with the MCP Server for Redis Cloud using Docker</title><link>https://riferrei.com/posts/2026-03-19-getting-started-with-the-mcp-server-for-redis-cloud-using-docker/</link><pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2026-03-19-getting-started-with-the-mcp-server-for-redis-cloud-using-docker/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ziPu9TZD8hg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A getting-started guide to running the Model Context Protocol (MCP) server for Redis Cloud in Docker, so AI assistants can work directly with your Redis data.&lt;/p&gt;</description></item><item><title>To Vector, or not to Vector, that is the Question</title><link>https://riferrei.com/posts/2025-11-24-to-vector-or-not-to-vector-that-is-the-question/</link><pubDate>Mon, 24 Nov 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-11-24-to-vector-or-not-to-vector-that-is-the-question/</guid><description>&lt;p&gt;This year, I presented a session at the All Things Open conference called &lt;a href="https://2025.allthingsopen.org/sessions/to-vector-or-not-to-vector-that-is-the-question" target="_blank"&gt;To Vector, or not to Vector, that is the Question&lt;/a&gt;, and I found myself facing a packed room with people standing in the back. The topic? Whether you actually need a vector database. It seems I wasn&amp;rsquo;t the only one struggling with this question. This session was very well received, and the most unanimous feedback I received after the session was whether a blog about this session would be written or not.&lt;/p&gt;</description></item><item><title>To Vector, or not to Vector, that is the Question</title><link>https://riferrei.com/talks/2025/2025-10-13-all-things-open/</link><pubDate>Mon, 13 Oct 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2025/2025-10-13-all-things-open/</guid><description>&lt;p&gt;A data-driven framework for making smart decisions about vector databases. This session explores when you actually need a vector database and when a simpler solution wins, covering the hidden costs of embeddings, infrastructure, and debugging.&lt;/p&gt;</description></item><item><title>An Alexa Skill that Recalls All Memories</title><link>https://riferrei.com/posts/2025-09-30-an-alexa-skill-that-recalls-all-memories/</link><pubDate>Tue, 30 Sep 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-09-30-an-alexa-skill-that-recalls-all-memories/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/9AlB2fR41rg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A short demo of an Alexa skill that stores and recalls memories on demand, showing how voice interfaces can front a simple memory store.&lt;/p&gt;</description></item><item><title>Vector Database Search: HNSW Algorithm Explained</title><link>https://riferrei.com/posts/2025-07-28-vector-database-search-hnsw-algorithm-explained/</link><pubDate>Mon, 28 Jul 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-07-28-vector-database-search-hnsw-algorithm-explained/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/cZyTZ-EMskI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A walkthrough of how the Hierarchical Navigable Small World (HNSW) algorithm powers fast approximate nearest-neighbor search in vector databases, and why it strikes such a good balance between speed and accuracy.&lt;/p&gt;</description></item><item><title>Is Your Vector Database Really Fast?</title><link>https://riferrei.com/posts/2025-07-21-is-your-vector-database-really-fast/</link><pubDate>Mon, 21 Jul 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-07-21-is-your-vector-database-really-fast/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/3ZOt3iwBNdE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Not all vector databases are as fast as their benchmarks claim. This video digs into what actually determines vector search performance and how to measure it honestly for your own workload.&lt;/p&gt;</description></item><item><title>What is Filtered Search?</title><link>https://riferrei.com/posts/2025-07-15-what-is-filtered-search/</link><pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-07-15-what-is-filtered-search/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/3bfJRlec7jI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A short introduction to filtered search: how to combine metadata filters with vector similarity so you retrieve results that are both semantically relevant and constrained to the right subset of your data.&lt;/p&gt;</description></item><item><title>What is Hybrid Search?</title><link>https://riferrei.com/posts/2025-07-04-what-is-hybrid-search/</link><pubDate>Fri, 04 Jul 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-07-04-what-is-hybrid-search/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZcZGwS1Pgq0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;An explanation of hybrid search, which blends traditional keyword (lexical) matching with vector similarity to get the best of both worlds when building retrieval systems.&lt;/p&gt;</description></item><item><title>Chunking Strategies Explained</title><link>https://riferrei.com/posts/2025-06-27-chunking-strategies-explained/</link><pubDate>Fri, 27 Jun 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-06-27-chunking-strategies-explained/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ZTOtxiWb2bE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;How you split your documents into chunks has a big impact on retrieval quality. This video breaks down the common chunking strategies and when to reach for each one.&lt;/p&gt;</description></item><item><title>Long-Term Memory with LangGraph</title><link>https://riferrei.com/posts/2025-05-12-long-term-memory-with-langgraph/</link><pubDate>Mon, 12 May 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-05-12-long-term-memory-with-langgraph/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/fsENEq4F55Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A deep look at implementing long-term memory in agentic applications with LangGraph, so your agents can retain and recall information across sessions.&lt;/p&gt;</description></item><item><title>Short-Term Memory with LangGraph</title><link>https://riferrei.com/posts/2025-05-05-short-term-memory-with-langgraph/</link><pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-05-05-short-term-memory-with-langgraph/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/k3FUWWEwgfc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;How to give your LangGraph agents short-term memory, letting them keep track of context within a conversation or task before it is persisted or discarded.&lt;/p&gt;</description></item><item><title>Create a New Database on Redis Cloud</title><link>https://riferrei.com/posts/2025-03-08-create-a-new-database-on-redis-cloud/</link><pubDate>Sat, 08 Mar 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-03-08-create-a-new-database-on-redis-cloud/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/jF89DiC5RqM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A step-by-step walkthrough of creating a new database on Redis Cloud to back your applications.&lt;/p&gt;</description></item><item><title>Similarity Search using Vector Store</title><link>https://riferrei.com/posts/2025-03-07-similarity-search-using-vector-store/</link><pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-03-07-similarity-search-using-vector-store/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/BtFJdSiFh00?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Implementing similarity search over embeddings using a vector store to power retrieval in AI apps.&lt;/p&gt;</description></item><item><title>A Semantic Cache using LangChain</title><link>https://riferrei.com/posts/2025-03-06-a-semantic-cache-using-langchain/</link><pubDate>Thu, 06 Mar 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-03-06-a-semantic-cache-using-langchain/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/LRswXEc5chE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Building a semantic cache with LangChain and Redis to avoid redundant LLM calls for similar queries.&lt;/p&gt;</description></item><item><title>LLM Session Management with Redis</title><link>https://riferrei.com/posts/2025-03-05-llm-session-management-with-redis/</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-03-05-llm-session-management-with-redis/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/2jHtSLVUu0w?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;How to manage LLM conversation sessions using Redis to persist and retrieve chat state.&lt;/p&gt;</description></item><item><title>Resources to Learn AI with Redis</title><link>https://riferrei.com/posts/2025-03-04-resources-to-learn-ai-with-redis/</link><pubDate>Tue, 04 Mar 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-03-04-resources-to-learn-ai-with-redis/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/M_WU_fN_lrs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A roundup of resources to help you get started learning AI development with Redis.&lt;/p&gt;</description></item><item><title>Building AI Apps using LangChain</title><link>https://riferrei.com/posts/2025-03-03-building-ai-apps-using-langchain/</link><pubDate>Mon, 03 Mar 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-03-03-building-ai-apps-using-langchain/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/YhxksXfgsp0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A short intro to a series on building AI applications with LangChain and Redis.&lt;/p&gt;</description></item><item><title>The Engineering Wisdom Behind Redis's Single-Threaded Design</title><link>https://riferrei.com/posts/2025-02-27-the-engineering-wisdom-behind-rediss-single-threaded-design/</link><pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-02-27-the-engineering-wisdom-behind-rediss-single-threaded-design/</guid><description>&lt;p&gt;In the relentless pursuit of performance, our industry often gravitates toward seemingly obvious solutions: more cores, more threads, more concurrency. Yet Redis—one of the most performant databases in the world—has maintained its commitment to a primarily single-threaded execution model. As various Redis forks emerge claiming dramatic performance improvements through multi-threading, I want to explore why Redis&amp;rsquo;s core architectural choices remain fundamentally sound, even at scale.&lt;/p&gt;&#10;&lt;h2 id="counterintuitive-brilliance-of-single-threaded-design"&gt;Counterintuitive Brilliance of Single-Threaded Design&lt;/h2&gt;&#10;&lt;p&gt;When &lt;a href="https://github.com/antirez" target="_blank"&gt;Salvatore Sanfilippo&lt;/a&gt; designed Redis, he made a choice that seemed to contradict conventional wisdom: a single-threaded event loop at the core of a high-performance database. This wasn&amp;rsquo;t a limitation to be overcome—it was a deliberate architectural decision that eliminated entire classes of complexity:&lt;/p&gt;</description></item><item><title>Redis Insight: A Developer's Deep Dive</title><link>https://riferrei.com/posts/2025-02-18-redis-insight-a-developer-s-deep-dive/</link><pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-02-18-redis-insight-a-developer-s-deep-dive/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/dINUz_XOZ0M?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A hands-on deep dive into Redis Insight, the GUI for exploring, debugging, and optimizing your Redis data from a developer&amp;rsquo;s perspective.&lt;/p&gt;</description></item><item><title>What AI Coding Assistants Have in Common with iRobot Roomba?</title><link>https://riferrei.com/posts/2025-01-05-what-most-ai-coding-assistants-have-in-common-with-irobot-roomba/</link><pubDate>Sun, 05 Jan 2025 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2025-01-05-what-most-ai-coding-assistants-have-in-common-with-irobot-roomba/</guid><description>&lt;p&gt;In 2010, I purchased my first iRobot Roomba, the 700 series model launched that year. It promised to revolutionize automated cleaning, a claim repeatedly made since the device&amp;rsquo;s initial release in 2002. Unaware of previous models&amp;rsquo; shortcomings, I was captivated by the promises of this new version. I recall reading about patented features like the Dirt Detect Technology™ and built-in integration with voice assistants. All of which seemed incredibly innovative at the time.&lt;/p&gt;</description></item><item><title>Getting Started with the VSCode Extension for Redis</title><link>https://riferrei.com/posts/2024-12-16-getting-started-with-the-vscode-extension-for-redis/</link><pubDate>Mon, 16 Dec 2024 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2024-12-16-getting-started-with-the-vscode-extension-for-redis/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/6_jTNLr4C9c?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A getting-started guide to the Redis extension for Visual Studio Code, so you can browse keys and run commands against Redis without leaving your editor.&lt;/p&gt;</description></item><item><title>Getting Started with Amazon Q Developer Customizations</title><link>https://riferrei.com/posts/2024-07-17-getting-started-with-amazon-q-developer-customizations/</link><pubDate>Wed, 17 Jul 2024 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2024-07-17-getting-started-with-amazon-q-developer-customizations/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/dsjXb4TvfPg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;An introduction to Amazon Q Developer customizations, which let you tailor code suggestions to your organization&amp;rsquo;s own codebase and conventions.&lt;/p&gt;</description></item><item><title>Sending Traces to AWS X-Ray Using Amazon Q Developer</title><link>https://riferrei.com/posts/2024-05-16-sending-traces-to-aws-x-ray-using-amazon-q-developer/</link><pubDate>Thu, 16 May 2024 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2024-05-16-sending-traces-to-aws-x-ray-using-amazon-q-developer/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/VqIT4Qabr4o?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A practical example of using Amazon Q Developer to instrument an application and send distributed traces to AWS X-Ray.&lt;/p&gt;</description></item><item><title>Implementing an OpenTelemetry Collector Using Amazon Q Developer</title><link>https://riferrei.com/posts/2024-05-15-implementing-an-opentelemetry-collector-using-amazon-q-developer/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2024-05-15-implementing-an-opentelemetry-collector-using-amazon-q-developer/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/X1vKArV07nc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Walking through how to stand up an OpenTelemetry Collector with the help of Amazon Q Developer, from configuration to running pipelines.&lt;/p&gt;</description></item><item><title>Using Amazon Q Developer to Write Code for Observability</title><link>https://riferrei.com/posts/2024-05-14-using-amazon-q-developer-to-write-code-for-observability/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2024-05-14-using-amazon-q-developer-to-write-code-for-observability/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xcyvHPVUrtI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;How Amazon Q Developer can accelerate writing observability code, generating the instrumentation and boilerplate so you can focus on what to measure.&lt;/p&gt;</description></item><item><title>Deep Dive into the Queue Data Structure</title><link>https://riferrei.com/posts/2023-10-19-deep-dive-into-the-queue-data-structure/</link><pubDate>Thu, 19 Oct 2023 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2023-10-19-deep-dive-into-the-queue-data-structure/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/jLkWDkZoGiE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A detailed exploration of queues: FIFO semantics, common implementations, and where they fit in real-world systems.&lt;/p&gt;</description></item><item><title>Developing Java Applications using Amazon Bedrock</title><link>https://riferrei.com/posts/2023-10-17-developing-java-applications-using-amazon-bedrock/</link><pubDate>Tue, 17 Oct 2023 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2023-10-17-developing-java-applications-using-amazon-bedrock/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Vv2J8N0-eHc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A guide to building Java applications on top of Amazon Bedrock, connecting your code to foundation models through the AWS SDK.&lt;/p&gt;</description></item><item><title>Deep Dive into the Linked List Data Structure</title><link>https://riferrei.com/posts/2023-10-05-deep-dive-into-the-linked-list-data-structure/</link><pubDate>Thu, 05 Oct 2023 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2023-10-05-deep-dive-into-the-linked-list-data-structure/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/J7ZhWGRe5cI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A deep dive into linked lists: singly and doubly linked variants, their trade-offs against arrays, and the operations that make them shine.&lt;/p&gt;</description></item><item><title>Deep Dive into the Array Data Structure</title><link>https://riferrei.com/posts/2023-09-29-deep-dive-into-the-array-data-structure/</link><pubDate>Fri, 29 Sep 2023 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2023-09-29-deep-dive-into-the-array-data-structure/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/VVZTVHuVSqw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A thorough deep dive into arrays: how they are laid out in memory, their performance characteristics, and the operations they support.&lt;/p&gt;</description></item><item><title>Deep Dive into the Matrix Data Structure</title><link>https://riferrei.com/posts/2023-09-29-deep-dive-into-the-matrix-data-structure/</link><pubDate>Fri, 29 Sep 2023 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2023-09-29-deep-dive-into-the-matrix-data-structure/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/WrhQ-dIZ3nk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;An in-depth look at matrices as a data structure, covering representation, traversal, and the common operations you will encounter.&lt;/p&gt;</description></item><item><title>Learning Data Structures with Amazon CodeWhisperer</title><link>https://riferrei.com/posts/2023-09-29-learning-data-structures-with-amazon-codewhisperer/</link><pubDate>Fri, 29 Sep 2023 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2023-09-29-learning-data-structures-with-amazon-codewhisperer/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/oAciet0gDvs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Using Amazon CodeWhisperer as a pair-programming companion to learn and implement classic data structures from scratch.&lt;/p&gt;</description></item><item><title>AWS Databases: Use Cases and Optimizations</title><link>https://riferrei.com/posts/2023-07-13-aws-databases-use-cases-and-optimizations/</link><pubDate>Thu, 13 Jul 2023 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2023-07-13-aws-databases-use-cases-and-optimizations/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/QImR6v7ui0U?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;An overview of the AWS database portfolio, matching common use cases to the right service and sharing optimization tips along the way.&lt;/p&gt;</description></item><item><title>A Three-Minute Summary of What to Consider When Choosing Databases</title><link>https://riferrei.com/posts/2023-06-20-a-three-minute-summary-of-what-to-consider-when-choosing-databases/</link><pubDate>Tue, 20 Jun 2023 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2023-06-20-a-three-minute-summary-of-what-to-consider-when-choosing-databases/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/CEm5BQ8OlOQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A quick, three-minute summary of the key trade-offs to weigh when choosing a database for your workload.&lt;/p&gt;</description></item><item><title>The Right Number of Partitions for a Kafka Topic</title><link>https://riferrei.com/talks/2023/2023-04-04-the-right-number-of-partitions-for-a-kafka-topic/</link><pubDate>Tue, 04 Apr 2023 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2023/2023-04-04-the-right-number-of-partitions-for-a-kafka-topic/</guid><description>&lt;p&gt;Every technology has that key concept that people struggle to understand. With databases, is which join clause to use for fetching data from multiple tables. Containers are tricky when you have to pick a storage type given some persistence requirements. With Apache Kafka, the winner is how many partitions to set for a topic. Why this is important? You may ask. Well, sizing Kafka partitions wrongly affects many aspects of the system, such as storage, parallelism, and durability. Worse, it may also affect how much load Kafka can handle. Hence why often the decision about how many partitions to set for a topic is handled by Ops teams, as we see this to be only an infrastructure matter. In reality, this is an architectural design decision that affects even the amount of code you write. This session will peel off the concept of partitions and explain it from the perspective of the Kafka cluster and its clients. It will explain the formula people should use to decide how many partitions to set for a topic, and how to spot a poor decision when they see one.&lt;/p&gt;</description></item><item><title>Changing the Backend to AWS with No Code Changes</title><link>https://riferrei.com/posts/2022-11-14-changing-the-backend-to-aws-with-no-code-changes/</link><pubDate>Mon, 14 Nov 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2022-11-14-changing-the-backend-to-aws-with-no-code-changes/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/KX9-sIhfLf4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Switching your telemetry backend to AWS without touching application code, thanks to the Collector.&lt;/p&gt;</description></item><item><title>Sending the Generated Metrics to Prometheus and Grafana</title><link>https://riferrei.com/posts/2022-11-13-sending-the-generated-metrics-to-prometheus-and-grafana/</link><pubDate>Sun, 13 Nov 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2022-11-13-sending-the-generated-metrics-to-prometheus-and-grafana/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/AD3biFn-sK0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Exporting OpenTelemetry metrics to Prometheus and visualizing them in Grafana dashboards.&lt;/p&gt;</description></item><item><title>Creating Custom Metrics with the OpenTelemetry SDK for Java</title><link>https://riferrei.com/posts/2022-11-12-creating-custom-metrics-with-the-opentelemetry-sdk-for-java/</link><pubDate>Sat, 12 Nov 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2022-11-12-creating-custom-metrics-with-the-opentelemetry-sdk-for-java/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/2U6eKv7DWfA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;How to define and record custom metrics in Java applications using the OpenTelemetry SDK.&lt;/p&gt;</description></item><item><title>Sending Generated Traces to Grafana Tempo</title><link>https://riferrei.com/posts/2022-11-11-sending-generated-traces-to-grafana-tempo/</link><pubDate>Fri, 11 Nov 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2022-11-11-sending-generated-traces-to-grafana-tempo/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/V5GtJRZtZ90?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Configuring your pipeline to send OpenTelemetry traces to Grafana Tempo for storage and querying.&lt;/p&gt;</description></item><item><title>Getting Started with the OpenTelemetry Collector</title><link>https://riferrei.com/posts/2022-11-10-getting-started-with-the-opentelemetry-collector/</link><pubDate>Thu, 10 Nov 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2022-11-10-getting-started-with-the-opentelemetry-collector/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/EeU-k659lpw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;An introduction to the OpenTelemetry Collector: receiving, processing, and exporting telemetry data.&lt;/p&gt;</description></item><item><title>Automatic Instrumentation with the OpenTelemetry Agent</title><link>https://riferrei.com/posts/2022-11-09-automatic-instrumentation-with-the-opentelemetry-agent/</link><pubDate>Wed, 09 Nov 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2022-11-09-automatic-instrumentation-with-the-opentelemetry-agent/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/GgT7B7h0RMA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Using the OpenTelemetry Java agent to automatically instrument your application with zero code changes.&lt;/p&gt;</description></item><item><title>Creating Custom Traces with the OpenTelemetry SDK for Java</title><link>https://riferrei.com/posts/2022-11-08-creating-custom-traces-with-the-opentelemetry-sdk-for-java/</link><pubDate>Tue, 08 Nov 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2022-11-08-creating-custom-traces-with-the-opentelemetry-sdk-for-java/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/KMLshL922H8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;How to create custom spans and traces in Java using the OpenTelemetry SDK for fine-grained visibility.&lt;/p&gt;</description></item><item><title>Instrumenting Java Applications using OpenTelemetry</title><link>https://riferrei.com/posts/2022-11-07-instrumenting-java-applications-using-opentelemetry/</link><pubDate>Mon, 07 Nov 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2022-11-07-instrumenting-java-applications-using-opentelemetry/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/XvmicNH_4lc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;The start of a series on instrumenting Java applications with OpenTelemetry to capture traces and metrics.&lt;/p&gt;</description></item><item><title>When Kafka is the source of truth; schemas become your source of headaches</title><link>https://riferrei.com/talks/2022/2022-10-04-when-kafka-is-the-source-of-truth-schemas-become-your-source-of-headac/</link><pubDate>Tue, 04 Oct 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2022/2022-10-04-when-kafka-is-the-source-of-truth-schemas-become-your-source-of-headac/</guid><description>&lt;p&gt;One of the coolest things about streaming systems such as Apache Kafka is their ability to handle any type of data. You can store events at Kafka and have different systems processing their event data. You may start with a few systems and add new systems as needed. While certainly possible and attractive, this isn’t simple. Schemas play a key role in how each system consumes the event data and processes them. Reason Schema Registry exists, right? Not really. Schema Registry doesn’t solve any of your data problems. It’s just a registry for your schemas. Admittedly, without it, there would be no policy enforcement. However, data problems can still happen. Issues with encoding, format mismatch between different programming languages, new code not being able to read data written by old code, etc. In this session, we will get into the weeds of data serialization with schemas. We will discuss the differences between formats like JSON, Avro, Thrift, and Protocol Buffers, and how your code must use each one of them to serialize data. It will also clarify the impact of switching Schema Registry with other registries, and whether you can use them together. If you ever wondered why your Python code can’t read something written by Java, why integers are getting confused with strings, or simply how schemas end up in Schema Registry, this session is for you.&lt;/p&gt;</description></item><item><title>In the land of the sizing, the one-partition Kafka topic is king</title><link>https://riferrei.com/talks/2022/2022-09-21-in-the-land-of-the-sizing-the-one-partition-kafka-topic-is-king/</link><pubDate>Wed, 21 Sep 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2022/2022-09-21-in-the-land-of-the-sizing-the-one-partition-kafka-topic-is-king/</guid><description>&lt;p&gt;Every technology has that key concept that people struggle to understand. With databases, is which join clause to use for fetching data from multiple tables. Containers are tricky when you have to pick a storage type given some persistence requirements. With Apache Kafka, the winner is how many partitions to set for a topic.&#10;Why this is important? You may ask. Well, sizing Kafka partitions wrongly affects many aspects of the system, such as consistency, concurrency, and durability. Worse, it may also affect how much load Kafka can handle. Hence why often the decision about how many partitions to set for a topic is handled by Ops teams, as we see this to be only an infrastructure matter. In reality, this is an architectural design decision that affects even the amount of code you write.&#10;This session will peel off the concept of partitions and explain it from the perspective of the Kafka cluster and its clients. By using a what-if presentation style, it will explain the overall impact on the system given a number. This will help you build more confidence about how to size Kafka partitions correctly, and to spot a poor decision when you see one.&lt;/p&gt;</description></item><item><title>Is Using KoP (Kafka-On-Pulsar) a Good Idea?</title><link>https://riferrei.com/talks/2022/2022-08-18-is-using-kop-kafka-on-pulsar-a-good-idea/</link><pubDate>Thu, 18 Aug 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2022/2022-08-18-is-using-kop-kafka-on-pulsar-a-good-idea/</guid><description>&lt;p&gt;Building microservices around Apache Kafka is your job, and life is great. One day, you hear community members talking about some neat Apache Pulsar features, and get you intrigued. I mean, we all love Kafka, but you can’t avoid wondering if migrate one of your projects to Pulsar is a good idea. Then it happens. You find Pulsar supports Kafka clients natively via a protocol handler called KoP: Kafka-On-Pulsar.&#10;This gets you pumped. Is that it? Can I go ahead and simply point my microservices to Pulsar and be a hero with this migration? But you must be responsible; and history says you shouldn’t believe migrations like this are refactoring free. Reason you may get interested in this session.&#10;We will revisit the architecture behind protocol handlers to understand what it means having one enabled on Pulsar. Plus, we will discuss the internals of KoP. Finally, we will use a show-and-tell approach to detail the effort to migrate a microservice written for Kafka to Pulsar, and whether the code need to change for this.&lt;/p&gt;</description></item><item><title>Do It Yourself: Programmable Metrics using OpenTelemetry</title><link>https://riferrei.com/talks/2022/2022-06-14-do-it-yourself-programmable-metrics-using-opentelemetry/</link><pubDate>Tue, 14 Jun 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2022/2022-06-14-do-it-yourself-programmable-metrics-using-opentelemetry/</guid><description>&lt;p&gt;Using metrics to measure how good or bad things are going is a proven way to ensure a software-based system is going in the right direction. Most metrics are created and monitored automatically by agent technologies installed in our infrastructure, making us hostages of the set of metrics that these agents are programmed to address. But what if you need to handle your own set of metrics?&#10;This is a question that often drives developers mad because they fear spending development cycles building something that will end up being locked into a particular monitoring/observability vendor. But OpenTelemetry — a CNCF observability framework that provides a vendor-neutral approach to tackle metrics, logging, and tracing needs, can change everything.&#10;This talk will explain how the OpenTelemetry framework allows the creation of custom metrics in a standard, scalable, and reusable way. It will provide an example in Java of a set of metrics that are continuously updated based on the execution of the code and how to hook that data with a compatible observability backend.&lt;/p&gt;</description></item><item><title>Distributed Tracing: The good, The Bad, and the Ugly</title><link>https://riferrei.com/talks/2022/2022-05-24-distributed-tracing-the-good-the-bad-and-the-ugly/</link><pubDate>Tue, 24 May 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2022/2022-05-24-distributed-tracing-the-good-the-bad-and-the-ugly/</guid><description>&lt;p&gt;Let’s face it: most people talking about observability all end up talking about distributed tracing somehow. It is a technology that radically changes how we identify and solve technical problems. In a world where virtually all applications are born distributed — it seems to be something that you ought to know in more detail.&#10;This talk will provide a pragmatic overview of distributed tracing by clearly articulating its motivation, problems it solves, the challenges, and what technologies you should use to ensure a vendor-agnostic implementation.&#10;It will discuss things like white-box and black-box instrumentation, the pros and cons of each approach, and why most developers prefer one versus the other.&lt;/p&gt;</description></item><item><title>How to Create more Effective Developer Content</title><link>https://riferrei.com/posts/2022-03-24-how-to-create-more-effective-developer-content/</link><pubDate>Thu, 24 Mar 2022 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2022-03-24-how-to-create-more-effective-developer-content/</guid><description>&lt;p&gt;Let&amp;rsquo;s say you create developer content for a living. In that case, chances are that you work in one of those fancy jobs titles like Developer Advocacy, Community Management, Product Technical Marketing, Program Management, and many others. Regardless of your title, what is essential is for you to apply effectiveness to your content, which means that you do want that your content targets the right audience and be as relevant as possible. This blog post will discuss how you can accomplish this by using a technique that I affectionately call the 🔺 triangle. This technique is about making your content focus on the different ways people learn, creating the appropriate relevancy by linking them together, and helping scale the content promotion.&lt;/p&gt;</description></item><item><title>The Subtle Art of Giving Code Walkthrough Talks</title><link>https://riferrei.com/talks/2021/2021-11-08-the-subtle-art-of-giving-code-walkthrough-talks/</link><pubDate>Mon, 08 Nov 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2021/2021-11-08-the-subtle-art-of-giving-code-walkthrough-talks/</guid><description>&lt;p&gt;If your audience is developers, then there is a high chance that you will need to show how code works in one of your talks. While you can always play safe and show snippets of code through slides — giving people code walkthroughs is often a more effective method to see the code where it really matters: in the development environment. But doing so can be a daunting task. Not so much because you may not know the code — but because now your content is the code. So many moving parts now need to be addressed by your code walkthrough, the talk’s timing, how much the audience will absorb, the outcomes you want people to have, and how exciting your talk will be if using this method.&#10;In this talk, Ricardo will explain what best practices you should follow to nail your following code walkthrough, so your talk becomes memorable. It will do it by providing an utterly wrong code walkthrough example that will be polished during the talk to highlight each best practice.&lt;/p&gt;</description></item><item><title>What is Distributed Tracing, and Why Should you Care About it?</title><link>https://riferrei.com/talks/2021/2021-10-18-what-is-distributed-tracing-and-why-should-you-care-about-it/</link><pubDate>Mon, 18 Oct 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2021/2021-10-18-what-is-distributed-tracing-and-why-should-you-care-about-it/</guid><description>&lt;p&gt;Let’s face it: most people talking about o11y (observability) all end up talking about distributed tracing somehow. It is a technology that is radically changing the way we identify and solve technical problems. In a world where virtually all applications are born distributed — it seems to be something that you as an SRE ought to know in more detail.&#10;This talk will provide a pragmatic overview of distributed tracing by clearly articulating its motivation, problems it solves, the challenges, technologies you should use to ensure a vendor-agnostic implementation, and which aspects you should consider while picking an o11y backend.&#10;While discussing the challenges, this talk will highlight white-box versus black-box instrumentation, which is valuable knowledge to determine where the developer’s responsibility finishes and when the Ops team starts, and — when both team’s responsibilities may entangle.&lt;/p&gt;</description></item><item><title>Take me Down to the Paradise City Where the Metric is Green and Traces are Pretty</title><link>https://riferrei.com/talks/2021/2021-10-12-take-me-down-to-the-paradise-city-where-the-metric-is-green-and-traces/</link><pubDate>Tue, 12 Oct 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2021/2021-10-12-take-me-down-to-the-paradise-city-where-the-metric-is-green-and-traces/</guid><description>&lt;p&gt;Observability is a software discipline that goes back to when virtually any problem could be solved by tailing web server logs. But the world has changed, and systems these days are comprised of different services running in their own stacks who cooperatively build up what we understand as the end-to-end architecture. Thus, observability had to evolve as well.&#10;Today we have OpenTelemetry—an observability framework for cloud-native software. OpenTelemetry provides the tools, APIs, and SDKs to create a reusable, robust, and non-vendor-driven observability strategy. But the reality is that most developers are still confused about the lines that separate OpenTelemetry from the past and which parts of the framework are stable enough to be used in production. This talk will explain how OpenTelemetry works and provide examples in Java and Go to illustrate the APIs you can use to produce traces and metrics.&lt;/p&gt;</description></item><item><title>Writing Custom Sink Connectors for Pulsar I/O</title><link>https://riferrei.com/talks/2021/2021-10-06-writing-custom-sink-connectors-for-pulsar-i-o/</link><pubDate>Wed, 06 Oct 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2021/2021-10-06-writing-custom-sink-connectors-for-pulsar-i-o/</guid><description>&lt;p&gt;You currently have massive amounts of data sitting on Apache Pulsar and likely — even more data coming in every second. But part of your project requires this data to be sent to some system to explore the dataset further. You look into the Pulsar website for built-in connectors to that particular system and realize that there are none. What a bummer.&#10;But you don’t have to give up on Pulsar because of this. You can write custom sink connectors for Pulsar I/O that work just like the built-in ones, and all you will need is a bit of Java development experience and creativity. The rest you can leave to this talk. This talk will explain how to start developing your custom connector, show how the code looks like, demonstrate how to deploy, and discuss some of the design decisions that your custom connector may need to address.&lt;/p&gt;</description></item><item><title>Boosting your Tests with Elasticsearch using TestContainers-Go</title><link>https://riferrei.com/posts/2021-09-30-using-testcontainers-go-with-elasticsearch/</link><pubDate>Thu, 30 Sep 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-09-30-using-testcontainers-go-with-elasticsearch/</guid><description>&lt;p&gt;&lt;a href="https://www.testcontainers.org/" target="_blank"&gt;TestContainers&lt;/a&gt; is a popular framework that allows Java developers to create tests that depend on backend systems such as &lt;a href="https://www.elastic.co/elasticsearch/" target="_blank"&gt;Elasticsearch&lt;/a&gt;. It automatically creates a container instance for the said backend, preventing developers from manually spinning up their dependency instances. Also, it enables them to treat those instances as disposable, meaning that once the tests finish executing, the underlying containers created for the instances are destroyed automatically.&lt;/p&gt;&#10;&lt;p&gt;The good news for Go developers is that there is a version of this for them as well. It is called &lt;a href="https://golang.testcontainers.org/" target="_blank"&gt;TestContainers-Go&lt;/a&gt;. In this post, I will walk you through creating a simple test that connects with Elasticsearch using this framework.&lt;/p&gt;</description></item><item><title>Elasticsearch for Gophers</title><link>https://riferrei.com/talks/2021/2021-08-03-elasticsearch-for-gophers/</link><pubDate>Tue, 03 Aug 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2021/2021-08-03-elasticsearch-for-gophers/</guid><description>&lt;p&gt;Join us as Elastic Developer Advocate Ricardo Ferreira demos how to index, query, search, and aggregate data using the Elasticsearch Client for Go.&lt;/p&gt;</description></item><item><title>Ultimate Guide to the Terraform Provider for Elastic</title><link>https://riferrei.com/posts/2021-07-16-ultimate-guide-to-the-terraform-provider-for-elastic/</link><pubDate>Fri, 16 Jul 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-07-16-ultimate-guide-to-the-terraform-provider-for-elastic/</guid><description>&lt;p&gt;Most developers deploy their Elastic (&lt;a href="https://www.elastic.co/elasticsearch/" target="_blank"&gt;Elasticsearch&lt;/a&gt; and &lt;a href="https://www.elastic.co/kibana/" target="_blank"&gt;Kibana&lt;/a&gt;) clusters manually by copying the bits to the target system or semi-manually using containers. This might work well if you need to maintain few clusters for your company, where likely you know the name of each one from the top of your head. However, this approach doesn&amp;rsquo;t scale very well if you have to spin up clusters on-demand for seasonal requirements.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://149357557.v2.pressablecdn.com/wp-content/uploads/2019/09/spongebob-multitasking.gif" alt="spongebob-multitasking - HauntPay"&gt;&lt;/p&gt;</description></item><item><title>How to Check SSL Certificate Expiration</title><link>https://riferrei.com/posts/2021-06-28-how-to-check-ssl-certificate-expiration/</link><pubDate>Mon, 28 Jun 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-06-28-how-to-check-ssl-certificate-expiration/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/WAULNt_jIh0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Using Heartbeat to monitor SSL certificate expiration so you are alerted before certificates lapse.&lt;/p&gt;</description></item><item><title>Adding Geo-Information to Heartbeat Monitors</title><link>https://riferrei.com/posts/2021-06-27-adding-geo-information-to-heartbeat-monitors/</link><pubDate>Sun, 27 Jun 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-06-27-adding-geo-information-to-heartbeat-monitors/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Bi8adwMAqUU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Enriching Heartbeat monitors with geo-information so you can see availability from a geographic perspective.&lt;/p&gt;</description></item><item><title>Heartbeat Command-Line Options</title><link>https://riferrei.com/posts/2021-06-26-heartbeat-command-line-options/</link><pubDate>Sat, 26 Jun 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-06-26-heartbeat-command-line-options/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Gkbje8rXjtU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A look at Heartbeat&amp;rsquo;s command-line options and how to use them to control its behavior.&lt;/p&gt;</description></item><item><title>How to Download, Install &amp; Configure Heartbeat</title><link>https://riferrei.com/posts/2021-06-25-how-to-download-install-configure-heartbeat/</link><pubDate>Fri, 25 Jun 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-06-25-how-to-download-install-configure-heartbeat/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/bBIvBkxcZe8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A getting-started guide to downloading, installing, and configuring Heartbeat for uptime monitoring.&lt;/p&gt;</description></item><item><title>Monitoring Docker Containers with Autodiscover</title><link>https://riferrei.com/posts/2021-06-24-monitoring-docker-containers-with-autodiscover/</link><pubDate>Thu, 24 Jun 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-06-24-monitoring-docker-containers-with-autodiscover/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/_iW5s_iqBgU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;How to use Heartbeat&amp;rsquo;s autodiscover feature to automatically monitor Docker containers as they come and go.&lt;/p&gt;</description></item><item><title>Everything you Always Wanted to Know about Heartbeat</title><link>https://riferrei.com/posts/2021-06-23-everything-you-always-wanted-to-know-about-heartbeat/</link><pubDate>Wed, 23 Jun 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-06-23-everything-you-always-wanted-to-know-about-heartbeat/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/9bSxtx_L1Zk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;The opening video of a series on Heartbeat, Elastic&amp;rsquo;s uptime and availability monitoring shipper.&lt;/p&gt;</description></item><item><title>Down to the Rabbit Hole with Pulsar I/O</title><link>https://riferrei.com/talks/2021/2021-06-16-down-to-the-rabbit-hole-with-pulsar-i-o/</link><pubDate>Wed, 16 Jun 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2021/2021-06-16-down-to-the-rabbit-hole-with-pulsar-i-o/</guid><description>&lt;p&gt;Apache Pulsar is a distributed messaging and streaming platform that stores messages durably and scalably into its persistent store, making it an attractive technology to store business data. However, merely storing the data is not enough. To make this data useful, the platform must also provide ways to ingest new data and send existing data elsewhere.&#10;While developers can build applications for this using the client libraries, the reality is that most of them don’t want to spend time writing code for repeatable tasks such as — reading data from a database and storing it into Pulsar. Reason why Pulsar abstracts away things like this by providing a connector-based framework called Pulsar I/O.&#10;This talk will provide an overview of how the Pulsar I/O framework works and a deep dive into troubleshooting things — from identifying when the connector is not working correctly to more elaborating investigations that may be useful for debugging purposes. It will give you the required tools to master how to ingest and export data into and out of Pulsar effectively.&lt;/p&gt;</description></item><item><title>Hidden Secrets about Instrumenting JVMs for OpenTelemetry</title><link>https://riferrei.com/talks/2021/2021-06-16-hidden-secrets-about-instrumenting-jvms-for-opentelemetry/</link><pubDate>Wed, 16 Jun 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2021/2021-06-16-hidden-secrets-about-instrumenting-jvms-for-opentelemetry/</guid><description>&lt;p&gt;OpenTelemetry is the new-kid-on-the-block in API to instrument distributed applications to send telemetry data (logs, metrics, and traces) to backends for visualization and monitoring. It was created to be a de-facto replacement to standards such as OpenTracing and OpenCensus.&#10;The support for Java in OpenTelemetry is generous. It supports both automatic and manual instrumentation. With automatic instrumentation, developers can have known libraries and frameworks instrumented without writing a single code line. Manual support also allows them to decide which parts of the code need instrumentation, and there is a rich set of APIs available to use.&#10;This talk will open the pandora box for both options. It will reveal which knobs are available to use that make a tremendous difference in how the applications report telemetry data — both in terms of performance and details. Knowing these hidden secrets will grant developers fine control over their applications and how observability stacks show them to the world.&lt;/p&gt;</description></item><item><title>Building Observable Streaming Systems with OpenTelemetry</title><link>https://riferrei.com/talks/2021/2021-06-14-building-observable-streaming-systems-with-opentelemetry/</link><pubDate>Mon, 14 Jun 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2021/2021-06-14-building-observable-streaming-systems-with-opentelemetry/</guid><description>&lt;p&gt;Building streaming systems is a popular way for developers to implement applications that react to data changes and process events as they happen. It is an exciting new world that technologies like Apache Pulsar made available for anyone to use. But all this goodness doesn’t come for free. One of the challenges of this type of architecture is that its distributed nature makes it hard and sometimes even impossible to identify the root cause of problems quickly.&#10;That is why distributed tracing technologies are so important. By gluing together disparate services into a single and cohesive transaction, developers can provide to the operations team a way to pragmatically observe the system and to quickly identify the root cause of problems such as slowness and unavailability. This talk will explain how to implement distributed tracing in Pulsar applications using OpenTelemetry—an observability framework for cloud-native software. A demo will be used to clarify the concepts.&lt;/p&gt;</description></item><item><title>OpenTelemetry for Dummies: Instrumenting Go Apps</title><link>https://riferrei.com/talks/2021/2021-05-26-opentelemetry-for-dummies-instrumenting-go-apps/</link><pubDate>Wed, 26 May 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2021/2021-05-26-opentelemetry-for-dummies-instrumenting-go-apps/</guid><description>&lt;p&gt;Though tracing technologies are not necessarily a new concept only in the recent years it gained enough traction to become one of the key dimensions required to build observability stacks. Undoubtedly the major force behind this traction are the standards created to help developers to collect telemetry data from their applications, such as OpenTelemetry—an observability framework for cloud-native software.&#10;OpenTelemetry provides a single set of APIs, libraries, agents, and collectors that ensures technology agnostic collection of traces and metrics—but the implementation for each programming language is different. While Java has an agent capable of automatically instrumenting the JVM with additional bytecode, other programming languages like Go have to handle this instrumentation manually.&#10;But Go developers have nothing to fear. This talk will explain in a for-the-rest-of-us style how to instrument applications written in Go and how to send the telemetry data to a backend using a collector.&lt;/p&gt;</description></item><item><title>Metricbeat Modules: Collecting and Visualizing Metrics from Redis</title><link>https://riferrei.com/posts/2021-05-07-metricbeat-modules-collecting-and-visualizing-metrics-from-redis/</link><pubDate>Fri, 07 May 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-05-07-metricbeat-modules-collecting-and-visualizing-metrics-from-redis/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/KeKJWJ9OfSA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Using the Metricbeat Redis module to collect and visualize Redis metrics in Kibana.&lt;/p&gt;</description></item><item><title>Metricbeat Modules: How to Speed Things Up with your Deployment</title><link>https://riferrei.com/posts/2021-05-06-metricbeat-modules-how-to-speed-things-up-with-your-deployment/</link><pubDate>Thu, 06 May 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-05-06-metricbeat-modules-how-to-speed-things-up-with-your-deployment/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/k4TVgeVv5jw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Tips for speeding up your Metricbeat deployment when working with modules at scale.&lt;/p&gt;</description></item><item><title>Implementing Metric Data Processing: Handling Data with Logstash</title><link>https://riferrei.com/posts/2021-05-05-implementing-metric-data-processing-handling-data-with-logstash/</link><pubDate>Wed, 05 May 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-05-05-implementing-metric-data-processing-handling-data-with-logstash/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/LN-ntbaQx-s?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Routing Metricbeat data through Logstash to apply richer transformations before indexing.&lt;/p&gt;</description></item><item><title>Implementing Metric Data Processing: Handling Data with an Ingest Pipeline</title><link>https://riferrei.com/posts/2021-05-04-implementing-metric-data-processing-handling-data-with-an-ingest-pipeline/</link><pubDate>Tue, 04 May 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-05-04-implementing-metric-data-processing-handling-data-with-an-ingest-pipeline/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/OioyrTKFt9k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Processing metric data server-side using an Elasticsearch ingest pipeline instead of doing it at the shipper.&lt;/p&gt;</description></item><item><title>Implementing Metric Data Processing: Using Processors with Metricbeat</title><link>https://riferrei.com/posts/2021-05-03-implementing-metric-data-processing-using-processors-with-metricbeat/</link><pubDate>Mon, 03 May 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-05-03-implementing-metric-data-processing-using-processors-with-metricbeat/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/-WJo7w5LTo0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;How to use Metricbeat processors to enrich, filter, and transform metrics at the edge before shipping them.&lt;/p&gt;</description></item><item><title>Stop being a hero to become a great developer advocate</title><link>https://riferrei.com/posts/2021-05-03-stop-being-a-hero-to-become-a-great-developer-advocate/</link><pubDate>Mon, 03 May 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-05-03-stop-being-a-hero-to-become-a-great-developer-advocate/</guid><description>&lt;p&gt;If you ask anyone what a developer advocate is, they will probably describe some hero. Someone is often adored by people in conferences with a packed room waiting to hear what they have to say — because they are deemed simply the best in what they do. Almost as if what they do is the result of having superpowers. By all means, I&amp;rsquo;m afraid I have to disagree with this definition.&lt;/p&gt;</description></item><item><title>Implementing Metric Data Processing: Overview of the Possible Strategies</title><link>https://riferrei.com/posts/2021-05-02-implementing-metric-data-processing-overview-of-the-possible-strategies/</link><pubDate>Sun, 02 May 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-05-02-implementing-metric-data-processing-overview-of-the-possible-strategies/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/CICvPIjKR8w?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;An overview of the different strategies available for processing metric data before it reaches its destination.&lt;/p&gt;</description></item><item><title>Getting Started with Metricbeat: Command-Line Options and Outputs</title><link>https://riferrei.com/posts/2021-05-01-getting-started-with-metricbeat-command-line-options-and-outputs/</link><pubDate>Sat, 01 May 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-05-01-getting-started-with-metricbeat-command-line-options-and-outputs/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/8wJpoiKLIC4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;Exploring Metricbeat&amp;rsquo;s command-line options and how to configure where your collected metrics are sent.&lt;/p&gt;</description></item><item><title>Getting Started with Metricbeat: Files &amp; Configuration Options</title><link>https://riferrei.com/posts/2021-04-30-getting-started-with-metricbeat-files-configuration-options/</link><pubDate>Fri, 30 Apr 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-04-30-getting-started-with-metricbeat-files-configuration-options/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/KyHvMxZdPyM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A tour of the Metricbeat configuration files and the options you will most commonly need to tune.&lt;/p&gt;</description></item><item><title>Getting Started with Metricbeat: Downloading, Installing, and Using</title><link>https://riferrei.com/posts/2021-04-29-getting-started-with-metricbeat-downloading-installing-and-using/</link><pubDate>Thu, 29 Apr 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-04-29-getting-started-with-metricbeat-downloading-installing-and-using/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/jiF2KDNDazo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;A getting-started walkthrough covering how to download, install, and run Metricbeat for the first time.&lt;/p&gt;</description></item><item><title>Metricbeat Introduction: Metricbeat, Modules &amp; Metricsets</title><link>https://riferrei.com/posts/2021-04-28-metricbeat-introduction-metricbeat-modules-metricsets/</link><pubDate>Wed, 28 Apr 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-04-28-metricbeat-introduction-metricbeat-modules-metricsets/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/GILJ88xGunI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;An introduction to the core concepts of Metricbeat: how modules and metricsets fit together to gather metrics.&lt;/p&gt;</description></item><item><title>Metricbeat Modules: Collecting and Visualizing Metrics from Kafka</title><link>https://riferrei.com/posts/2021-04-27-metricbeat-modules-collecting-and-visualizing-metrics-from-kafka/</link><pubDate>Tue, 27 Apr 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-04-27-metricbeat-modules-collecting-and-visualizing-metrics-from-kafka/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Jc-0lkHJMeE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;How to use the Metricbeat Kafka module to collect broker and topic metrics and visualize them in Kibana.&lt;/p&gt;</description></item><item><title>Everything you Always Wanted to Know about Metricbeat</title><link>https://riferrei.com/posts/2021-04-26-everything-you-always-wanted-to-know-about-metricbeat/</link><pubDate>Mon, 26 Apr 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-04-26-everything-you-always-wanted-to-know-about-metricbeat/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/qypQHypztUE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;p&gt;The kickoff to a full series on Metricbeat, Elastic&amp;rsquo;s lightweight shipper for collecting metrics from your systems and services.&lt;/p&gt;</description></item><item><title>The Best Advice New Developer Advocates Should Follow</title><link>https://riferrei.com/posts/2021-03-22-the-best-advice-new-developer-advocates-should-follow/</link><pubDate>Mon, 22 Mar 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-03-22-the-best-advice-new-developer-advocates-should-follow/</guid><description>&lt;p&gt;There is no denying that the demand for developer advocacy is peaking. Everywhere I go, I can see a huge demand for developer advocates, and this is awesome because this is the career that I chose for myself. But other than this, it is also proof that companies finally realize the value of improving developer experience in the products they offer. As such, this current spike for developer advocates is also a problem. This is not a simple career path to get started with.&lt;/p&gt;</description></item><item><title>How to Help People in Community Forums Like a Boss</title><link>https://riferrei.com/posts/2021-03-04-five-tips-to-help-people-in-community-forums/</link><pubDate>Thu, 04 Mar 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-03-04-five-tips-to-help-people-in-community-forums/</guid><description>&lt;p&gt;Whether it is part of your job description or not, helping users in community forums is always a great idea if you work for a company representing a given technology, product, or service. The key idea is to make sure that users don&amp;rsquo;t struggle.&lt;/p&gt;&#10;&lt;p&gt;But how do you know when and how users are struggling? Well, there are arguably many sources where you can get this information from, such as your support channel, your partners, and your consultancy department, if there is any. Just talk to them periodically and understand where the customers struggle the most. But another one that is becoming fundamental in today&amp;rsquo;s industry is community forums.&lt;/p&gt;</description></item><item><title>Using Stream Deck with Fedora</title><link>https://riferrei.com/posts/2021-02-07-using-stream-deck-with-fedora/</link><pubDate>Sun, 07 Feb 2021 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2021-02-07-using-stream-deck-with-fedora/</guid><description>&lt;p&gt;I have lost count of how many times I had to apply workarounds in my Fedora laptop to use certain devices. For all of you that had to go down the same path, you know the feeling of hopelessness. The reason why I never get tired of helping people with the challenges I have. This post will describe my journey to get the &lt;a href="https://www.elgato.com/en/gaming/stream-deck" target="_blank"&gt;Elgato Stream Deck&lt;/a&gt; device working like a charm on my laptop.&lt;/p&gt;</description></item><item><title>Getting Started with OpenTelemetry using Elastic APM</title><link>https://riferrei.com/posts/2020-11-16-getting-started-with-opentelemetry-using-elastic-apm/</link><pubDate>Mon, 16 Nov 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-11-16-getting-started-with-opentelemetry-using-elastic-apm/</guid><description>&lt;p&gt;&lt;a href="https://opentelemetry.io/" target="_blank"&gt;OpenTelemetry&lt;/a&gt; is an observability framework that provides the libraries, agents, and other components that you need to capture telemetry from your services so that you can better observe, manage, and debug them. It allows you to capture metrics, distributed traces, resource metadata, and logs (logging support is incubating now) from your backend and client applications and then sends this data to backends like &lt;a href="https://www.elastic.co/apm" target="_blank"&gt;Elastic APM&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;As you probably have heard of at this point OpenTelemetry is the result of the merge between &lt;a href="https://opentracing.io/" target="_blank"&gt;OpenTracing&lt;/a&gt; and &lt;a href="https://opencensus.io/" target="_blank"&gt;OpenCensus&lt;/a&gt;, and it aims to provide a more complete, vendor neutral, easy-to-use framework to implement your observability needs.&lt;/p&gt;</description></item><item><title>Excluding Files from a List in Terraform</title><link>https://riferrei.com/posts/2020-10-10-excluding-files-from-a-list-in-terraform/</link><pubDate>Sat, 10 Oct 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-10-10-excluding-files-from-a-list-in-terraform/</guid><description>&lt;p&gt;Since the introduction of the &lt;code&gt;for_each&lt;/code&gt; feature in Terraform 0.12 it is now possible to code powerful constructs to express the logic of your infrastructure. But sometimes you have to use some creativity to use this feature. I recently had to write a Terraform code that could upload all the JavaScript files from a local folder into a storage blob in Azure. But one of these files would have some template expressions so I wanted to upload all the files from the local folder except that one — because I would upload it individually.&lt;/p&gt;</description></item><item><title>Understanding Streaming Data and Analytics with Apache Kafka®</title><link>https://riferrei.com/posts/2020-10-02-understanding-streaming-data-and-analytics-with-apache-kafka/</link><pubDate>Fri, 02 Oct 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-10-02-understanding-streaming-data-and-analytics-with-apache-kafka/</guid><description>&lt;p&gt;Slides of the session &amp;ldquo;Understanding Streaming Data and Analytics with Kafka&amp;rdquo; that I delivered on &lt;a href="https://www.apachecon.com/acna2020/" target="_blank"&gt;ApacheCon 2020&lt;/a&gt;. Have fun ✨&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://speakerdeck.com/riferrei/understanding-streaming-data-and-analytics-with-apache-kafka-r" target="_blank"&gt;https://speakerdeck.com/riferrei/understanding-streaming-data-and-analytics-with-apache-kafka-r&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Troubleshooting 101</title><link>https://riferrei.com/posts/2020-07-31-troubleshooting-101/</link><pubDate>Fri, 31 Jul 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-07-31-troubleshooting-101/</guid><description>&lt;p&gt;Part of my job as Developer Advocate is to reach out to developers in social forums like Stackoverflow, Reddit, and Slack communities to check whether I can provide help. While I feel great pleasure in doing this, it is getting harder and harder to help people these days.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://tr3.cbsistatic.com/hub/i/2017/03/23/8a2e6afc-25d6-4993-b60a-0c36a1502e4d/4r2wao.jpg"&gt;&lt;/p&gt;&#10;&lt;p&gt;I have the feeling that developers these days don&amp;rsquo;t know (or perhaps forgot or pretend that they forgot) how to perform basic troubleshooting. Every time I see a request for help in a forum usually people barely explain what the problem is, how it occurs, give evidence of what happened before the incident and, more importantly, to provide a minimal explanation of their environment.&lt;/p&gt;</description></item><item><title>Data Sharing between Java &amp; Go using Kafka and Protobuf</title><link>https://riferrei.com/posts/2020-07-09-data-sharing-between-java-go-using-kafka-and-protobuf/</link><pubDate>Thu, 09 Jul 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-07-09-data-sharing-between-java-go-using-kafka-and-protobuf/</guid><description>&lt;p&gt;One of the most incredible things in Apache Kafka is that record values are shapeless, meaning that developers can write any set of bytes they want, and it works just fine. This can be pretty powerful if they share data among different programming languages.&lt;/p&gt;&#10;&lt;p&gt;However, this characteristic is sometimes inadequate. It creates coupling problems as producers and consumers need to negotiate a common format that they can rely on to write and read data. Therefore, it is essential to use a neutral format &amp;ndash; likely something accepted within the industry, such as Avro, Protobuf, and JSON Schemas. This post will focus on the problems raised by using Protobuf to share data between Java and Go.&lt;/p&gt;</description></item><item><title>What Apache Kafka has in Common with Rocky Balboa?</title><link>https://riferrei.com/posts/2020-04-03-what-apache-kafka-has-in-common-with-rocky-balboa/</link><pubDate>Fri, 03 Apr 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-04-03-what-apache-kafka-has-in-common-with-rocky-balboa/</guid><description>&lt;p&gt;If you know me well, you must know that I am a big fan of movies. It is not uncommon to see me in situations where if I need to explain something rather complex, I end up using movies as metaphors to understand what I am trying to explain. In this post, I will explain what &lt;a href="https://kafka.apache.org" target="_blank"&gt;Apache Kafka&lt;/a&gt; has in common with the character &lt;a href="https://en.wikipedia.org/wiki/Rocky_Balboa" target="_blank"&gt;Rocky Balboa&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://www.insidehook.com/wp-content/uploads/2019/08/rocky.jpg?fit=1200%2C750" alt="Yo, Adrian! Rocky’s Coming to Netflix! - InsideHook"&gt;&lt;/p&gt;</description></item><item><title>Why the property 'auto.create.topics.enable' is disabled in Confluent Cloud?</title><link>https://riferrei.com/posts/2020-03-17-why-the-property-auto-create-topics-enable-is-disabled-in-confluent-cloud/</link><pubDate>Tue, 17 Mar 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-03-17-why-the-property-auto-create-topics-enable-is-disabled-in-confluent-cloud/</guid><description>&lt;p&gt;If you ever used Apache Kafka you may know that in the broker configuration file there is a property named &lt;strong&gt;auto.create.topics.enable&lt;/strong&gt; that allows topics to be automatically created when producers try to write data into it. That means that if a producer tries to write an record to a topic named customers and that topic doesn&amp;rsquo;t exist yet &amp;ndash; it will be automatically created to allow the writing. Instead of returning an error to the client.&lt;/p&gt;</description></item><item><title>AWS ElastiCache with a Bastion Host using Terraform</title><link>https://riferrei.com/posts/2020-03-09-aws-elasticache-with-a-bastion-host-using-terraform/</link><pubDate>Mon, 09 Mar 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-03-09-aws-elasticache-with-a-bastion-host-using-terraform/</guid><description>&lt;p&gt;&lt;a href="https://aws.amazon.com/elasticache" target="_blank"&gt;AWS ElastiCache&lt;/a&gt; is a fully managed service that allows users to easily and quickly use cache technologies like &lt;a href="https://memcached.org" target="_blank"&gt;MemCached&lt;/a&gt; and &lt;a href="https://redis.io" target="_blank"&gt;Redis&lt;/a&gt; without the gory implementation details. But this doesn&amp;rsquo;t come for free. Developers often complain about the fact that the service is deployed in private subnets and due to that fact &amp;ndash; they are not entitled to easily access for troubleshooting purposes.&lt;/p&gt;&#10;&lt;p&gt;A pattern to solve this problem is the usage of a bastion host, that sits between your machine and the private subnet to allow troubleshooting with ease. This post will show how to deploy a AWS ElastiCache service for Redis along with a bastion host using &lt;a href="https://www.terraform.io" target="_blank"&gt;Terraform&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Multiple Columns with Redis Sorted Set</title><link>https://riferrei.com/posts/2020-03-03-multiple-columns-with-redis-sorted-set/</link><pubDate>Tue, 03 Mar 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-03-03-multiple-columns-with-redis-sorted-set/</guid><description>&lt;p&gt;Recently I had to build an application that would store and order players in a &lt;a href="https://redis.io/commands#sorted_set" target="_blank"&gt;Redis Sorted Set&lt;/a&gt;, but using multiple columns as criteria for the score, instead of just one. After trying to find a proper solution on the web and failing to do so; I decided to put my head to work and figure out an way. This post will show how did I accomplished that.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="sorted-set-with-redis-v1.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;It turns out that my application has players with the following fields:&lt;/p&gt;</description></item><item><title>Confluent Go Client with Docker</title><link>https://riferrei.com/posts/2020-02-29-confluent-go-client-with-docker/</link><pubDate>Sat, 29 Feb 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-02-29-confluent-go-client-with-docker/</guid><description>&lt;p&gt;If you are reading this blog post then there is a high chance that you&amp;rsquo;ve been looking for ways to make &lt;a href="https://github.com/confluentinc/confluent-kafka-go" target="_blank"&gt;Confluent&amp;rsquo;s Go Client for Apache Kafka&lt;/a&gt; work with your Docker images but you&amp;rsquo;re struggling to. Am I right?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="confluent-gopher-docker-v2.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;Don&amp;rsquo;t worry, you&amp;rsquo;ve came to the right place. After struggling with this myself I decided to share the solution that I&amp;rsquo;ve found with everybody else so we all can spend more time writing code than just wasting time with dependency plumbing.&lt;/p&gt;</description></item><item><title>Using Logitech Products with Fedora Linux</title><link>https://riferrei.com/posts/2020-02-06-using-logitech-products-with-fedora-linux/</link><pubDate>Thu, 06 Feb 2020 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2020-02-06-using-logitech-products-with-fedora-linux/</guid><description>&lt;p&gt;I am a huge fan of what Logitech creates for the computer industry and I have been using its products for quite some time now. However, for the last 5 years I took the [smart] decision of using Linux for desktop and by doing so &amp;ndash; I realized that certain products seems only to work well with Mac/Windows, leaving no space for Linux.&lt;/p&gt;&#10;&lt;p&gt;In this post I will provide some tips about open-source projects that helps you to get your favorite Logitech products working smoothly with Linux, Fedora in particular.&lt;/p&gt;</description></item><item><title>Kafka Summit 2019 (San Francisco)</title><link>https://riferrei.com/posts/2019-10-04-kafka-summit-2019-san-francisco/</link><pubDate>Fri, 04 Oct 2019 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2019-10-04-kafka-summit-2019-san-francisco/</guid><description>&lt;p&gt;This week I had the honor of being one more time in the most exciting conference for Apache Kafka in the world, known as Kafka Summit. Only this time was different because I could contribute a lot for this conference.&lt;/p&gt;&#10;&lt;p&gt;My first contribution was building and recording a demo that was shown in the second day of the conference when &lt;strong&gt;Priya Shivakumar&lt;/strong&gt; was talking about Confluent Cloud. I have received some good feedback about that demo, which of course made me feel really proud.&lt;/p&gt;</description></item><item><title>Kafka Summit San Francisco 2019</title><link>https://riferrei.com/talks/2019/2019-10-01-kafka-summit-sf/</link><pubDate>Tue, 01 Oct 2019 00:00:00 +0000</pubDate><guid>https://riferrei.com/talks/2019/2019-10-01-kafka-summit-sf/</guid><description>&lt;p&gt;Session delivered at Kafka Summit San Francisco 2019.&lt;/p&gt;</description></item><item><title>Oracle Code One 2019</title><link>https://riferrei.com/posts/2019-09-23-oracle-code-one-2019/</link><pubDate>Mon, 23 Sep 2019 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2019-09-23-oracle-code-one-2019/</guid><description>&lt;p&gt;Last week I had the chance to attend one more time Oracle&amp;rsquo;s new developer&amp;rsquo;s conference know as &lt;a href="https://www.oracle.com/code-one/" target="_blank"&gt;Oracle Code One&lt;/a&gt;. It was so nice to catch up with great friends, plus being able to party with people from the Java community. They certainly know how to make things funny and entertaining.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="EEt8ykwUYAAB3fI-1024x768.jpeg"&gt;&lt;/p&gt;&#10;&lt;p&gt;Furthermore, I also had the chance to share a little about Apache Kafka in a talk that I delivered for a room full of developers interested in this technology.&lt;/p&gt;</description></item><item><title>Palestra "Abraçando a Anarquia: Design Patterns de Apache Kafka em Arquiteturas de Dados Modernas e Big Data" no QCon São Paulo</title><link>https://riferrei.com/posts/2019-09-15-palestra-abracando-a-anarquia-design-patterns-de-apache-kafka-em-arquiteturas-de-dados-modernas-e-big-data-no-qcon-sao-paulo/</link><pubDate>Sun, 15 Sep 2019 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2019-09-15-palestra-abracando-a-anarquia-design-patterns-de-apache-kafka-em-arquiteturas-de-dados-modernas-e-big-data-no-qcon-sao-paulo/</guid><description>&lt;p&gt;Esse ano eu tive a honra de poder palestrar pela primeira vez no &lt;strong&gt;&lt;a href="https://qconsp.com/speakers/sp2019" target="_blank"&gt;QCon&lt;/a&gt;&lt;/strong&gt;&lt;a href="https://qconsp.com/speakers/sp2019" target="_blank"&gt; &lt;/a&gt;&lt;strong&gt;&lt;a href="https://qconsp.com/speakers/sp2019" target="_blank"&gt;São Paulo&lt;/a&gt;&lt;/strong&gt; , edição do evento que ocorreu em Maio de 2019.&lt;/p&gt;&#10;&lt;p&gt;Na ocasião, eu fiz parte da trilha de &lt;strong&gt;Big Data&lt;/strong&gt; coordenada pela fera &lt;a href="https://twitter.com/fabianenardon" target="_blank"&gt;&lt;strong&gt;Fabiane Nardon&lt;/strong&gt;&lt;/a&gt;, onde pude compartilhar um pouco da história do &lt;strong&gt;Apache Kafka&lt;/strong&gt; , qual seu estado atual como tecnologia, e, quais casos de uso ele ajuda a resolver.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Vídeo&lt;/strong&gt; :&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=4ONf63koLtU" target="_blank"&gt;https://www.youtube.com/watch?v=4ONf63koLtU&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Slides&lt;/strong&gt; :&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://speakerdeck.com/riferrei/abracando-a-anarquia-design-patterns-de-apache-kafka-em-arquiteturas-de-dados-modernas" target="_blank"&gt;https://speakerdeck.com/riferrei/abracando-a-anarquia-design-patterns-de-apache-kafka-em-arquiteturas-de-dados-modernas&lt;/a&gt;&lt;/p&gt;</description></item><item><title>My Talk @ Kafka Summit SFO 2019</title><link>https://riferrei.com/posts/2019-09-09-my-talk-at-kafka-summit-sfo-2019/</link><pubDate>Mon, 09 Sep 2019 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2019-09-09-my-talk-at-kafka-summit-sfo-2019/</guid><description>&lt;p&gt;We are less than one month away from the next edition of the world&amp;rsquo;s best conference about Apache Kafka known as Kafka Summit, and I would like to detail a bit what is going to be the focus of my talk &lt;strong&gt;Being an Apache Kafka Developer Hero in the World of Cloud&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://kafka-summit.org/sessions/developer-hero-cloud/" target="_blank"&gt;https://kafka-summit.org/sessions/developer-hero-cloud/&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;As you can read in the description, this talk is all about &lt;a href="https://www.confluent.io/confluent-cloud/" target="_blank"&gt;Confluent Cloud&lt;/a&gt;, where I will be showing the first steps to start working with event streaming applications using this awesome Apache Kafka as-a-service product from Confluent. However, the interesting part here is &lt;strong&gt;how&lt;/strong&gt; &lt;strong&gt;I am going to do that&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>JEEConf, Kiev, Ukraine</title><link>https://riferrei.com/posts/2019-05-15-jeeconf-kiev-ukraine/</link><pubDate>Wed, 15 May 2019 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2019-05-15-jeeconf-kiev-ukraine/</guid><description>&lt;p&gt;This year I had the honor of speaking at JEEConf; one of the most important Java conferences in Europe hosted in the heart of Ukraine. The conference held two days full of content related to Java and related technologies.&lt;/p&gt;&#10;&lt;p&gt;I was really impressed with the number of smart people that I could shake hands and meet at the conference. One of the sessions that I presented there was &lt;strong&gt;Tips &amp;amp; Tricks about Apache Kafka in the Cloud for Java Developers&lt;/strong&gt;, that aimed to show some of the details that developers building Java applications for Apache Kafka should know before venturing themselves in moving their workloads to Cloud.&lt;/p&gt;</description></item><item><title>LinkedIn and the Nightmare of Connection Requests</title><link>https://riferrei.com/posts/2019-01-07-linkedin-and-the-nightmare-of-connection-requests/</link><pubDate>Mon, 07 Jan 2019 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2019-01-07-linkedin-and-the-nightmare-of-connection-requests/</guid><description>&lt;p&gt;Is this just me or LinkedIn became this annoying social network where recruiters and people you never worked with keep poking you for new connections?&lt;/p&gt;&#10;&lt;p&gt;Like other professional social networks, LinkedIn was designed to connect people around the globe and empower them with the ability to get jobs, hire talents and be the backbone for professional communication. However, that concept has been exploited because there are people that leverage this concept for their own benefits.&lt;/p&gt;</description></item><item><title>#1 Apache Kafka Meetup in São Paulo/Brazil</title><link>https://riferrei.com/posts/2018-12-11-1-apache-kafka-meetup-in-sao-paulo-brazil/</link><pubDate>Tue, 11 Dec 2018 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2018-12-11-1-apache-kafka-meetup-in-sao-paulo-brazil/</guid><description>&lt;p&gt;During the week of Dec 2th I had the pleasure of visiting São Paulo/Brazil, a place that I once called home. It has been almost 5 years that I left that city to live abroad &amp;ndash; and every time I go there its inevitable not to miss certain things.&lt;/p&gt;&#10;&lt;p&gt;I went down there to participate of the &lt;a href="https://cloudplatformonline.com/2018-Summit-Sao-Paulo.html" target="_blank"&gt;Google Cloud Summit&lt;/a&gt; event, and make sure that developers using GCP would be aware of Confluent&amp;rsquo;s Apache Kafka as a service know as &lt;a href="https://www.confluent.io/confluent-cloud" target="_blank"&gt;Confluent Cloud&lt;/a&gt;. It was amazing to share this information with them, since most of them was working (or planning to work) with huge amounts of data in the Cloud and Kafka is certainly &lt;em&gt;the right way&lt;/em&gt; to do it.&lt;/p&gt;</description></item><item><title>Confluent Cloud Tools is Alive</title><link>https://riferrei.com/posts/2018-11-09-confluent-cloud-tools-is-alive/</link><pubDate>Fri, 09 Nov 2018 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2018-11-09-confluent-cloud-tools-is-alive/</guid><description>&lt;p&gt;It gives me great pleasure to announce that &lt;strong&gt;Confluent Cloud Tools&lt;/strong&gt; is officially released as a Confluent&amp;rsquo;s repository. The link to this repository is:&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/confluentinc/ccloud-tools" target="_blank"&gt;https://github.com/confluentinc/ccloud-tools&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a nutshell, the aim of this project is to allow developers to unfold the true agility that &lt;a href="https://www.confluent.io/confluent-cloud/" target="_blank"&gt;Confluent Cloud&lt;/a&gt; can provide &amp;ndash;allowing them to focus on writing code instead of wasting time with manual and tedious configuration steps.&lt;/p&gt;&#10;&lt;p&gt;Very often developers use tools from Confluent such as Schema Registry, REST Proxy, Connect, KSQL and Control Center &amp;ndash; along with their Kafka clusters. This may work fine when they are working On-Premise and making use of the integrated experience that Confluent Platform provides &amp;ndash; whether if it is running Confluent Platform locally and managing things via the CLI or; if it is by using the built-in &lt;a href="https://hub.docker.com/u/confluentinc" target="_blank"&gt;Docker containers&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>ThinkPad Thunderbolt 3 Dock | Suspend Problem</title><link>https://riferrei.com/posts/2018-10-11-thinkpad-thunderbolt-3-dock-suspend-problem/</link><pubDate>Thu, 11 Oct 2018 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2018-10-11-thinkpad-thunderbolt-3-dock-suspend-problem/</guid><description>&lt;p&gt;As mentioned in &lt;a href="https://riferrei.com/2018/10/09/new-lenovo-thinkpad-x1-extreme" target="_blank"&gt;this post&lt;/a&gt;; I have acquired a new laptop from Lenovo, the ThinkPad X1 Extreme. Since I will be working from home sometimes, I thought it would be a good idea to buy an dock station for it.&lt;/p&gt;&#10;&lt;p&gt;So I decided to buy the following dock station:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="40AN0230US-main-v1.jpeg"&gt;&lt;a href="https://www.lenovo.com/us/en/accessories-and-monitors/docking/universal-cable-docks-usb/Thunderbolt-230W-dock-US/p/40AN0230US" target="_blank"&gt;ThinkPad Thunderbolt 3 Dock&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;It is a nice dock station solution, especially because it connects everything to the laptop via Thunderbolt 3. However; since I am running Fedora in my laptop, things couldn&amp;rsquo;t be that easy right?&lt;/p&gt;</description></item><item><title>New Lenovo ThinkPad X1 Extreme</title><link>https://riferrei.com/posts/2018-10-09-new-lenovo-thinkpad-x1-extreme/</link><pubDate>Tue, 09 Oct 2018 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2018-10-09-new-lenovo-thinkpad-x1-extreme/</guid><description>&lt;p&gt;&amp;ldquo;It&amp;rsquo;s not a laptop. It&amp;rsquo;s a ThinkPad.&amp;rdquo; - I really like this slogan because it helps to explain why I took the decision to buy the new ThinkPad X1 Extreme from Lenovo, while there are some good options out there - presumably better ones. But let&amp;rsquo;s start from the beginning.&lt;/p&gt;&#10;&lt;p&gt;I have been working with IT for quite some time now, and for some reason I have never had a laptop of my own. Instead, I always used the laptops given by the companies I worked for. This is not a bad decision per-se, but in the long run you may find yourself disappointed with the whole keep-moving-things-around every time you change jobs.&lt;/p&gt;</description></item><item><title>Getting Myself Certified in AWS</title><link>https://riferrei.com/posts/2018-08-29-getting-myself-certified-in-aws/</link><pubDate>Wed, 29 Aug 2018 00:00:00 +0000</pubDate><guid>https://riferrei.com/posts/2018-08-29-getting-myself-certified-in-aws/</guid><description>&lt;p&gt;August 2018 was a very productive month to me, where after some intense dog hours studying like crazy and practicing a lot - I was able to get certified in two of the most interesting AWS exams: &lt;a href="https://aws.amazon.com/certification/certified-solutions-architect-associate" target="_blank"&gt;Solutions Architect&lt;/a&gt; and &lt;a href="https://aws.amazon.com/certification/certified-developer-associate" target="_blank"&gt;Developer Associate&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="SAA-1.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="CDA.png"&gt;&lt;/p&gt;&#10;&lt;p&gt;That was quite of a challenge to me, because my Cloud background had been up to that point mainly focused on Oracle Cloud. It was interesting to see the differences between the two Cloud vendors, as well as seeing how AWS structures its services. Which BTW is amazing.&lt;/p&gt;</description></item><item><title>About</title><link>https://riferrei.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://riferrei.com/about/</guid><description/></item></channel></rss>