<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://victorianduka.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://victorianduka.com/" rel="alternate" type="text/html" /><updated>2026-02-10T14:18:33+00:00</updated><id>https://victorianduka.com/feed.xml</id><title type="html">Victoria Nduka</title><subtitle>Victoria&apos;s Website</subtitle><entry><title type="html">The Journey of a Log: Understanding the Log Lifecycle</title><link href="https://victorianduka.com/2026/01/26/log-lifecycle.html" rel="alternate" type="text/html" title="The Journey of a Log: Understanding the Log Lifecycle" /><published>2026-01-26T00:00:00+00:00</published><updated>2026-01-26T00:00:00+00:00</updated><id>https://victorianduka.com/2026/01/26/log-lifecycle</id><content type="html" xml:base="https://victorianduka.com/2026/01/26/log-lifecycle.html"><![CDATA[<p>You likely know logs as records of application events, but that’s only half the story. You may know <a href="https://victorianduka.com/2025/12/25/what-logs-are.html">what logs are</a>. But how are they generated? Where are they stored, and for how long? When you need to troubleshoot an error, how do you search through millions of log entries to find what you need?</p>

<p>These are important questions you may have if you’re new to observability. They are foundational concepts you need to understand if you intend to build scalable log management systems in the future.</p>

<p>In this article, we’ll walk through the entire lifecycle of a log, from generation to deletion.</p>

<h2 id="what-is-a-log-lifecycle">What is a log lifecycle?</h2>
<p>A log lifecycle (sometimes called a log pipeline) is the end-to-end flow that log data follows, from the moment it is created by an application to the moment it is eventually deleted.</p>

<p>At a high level, a log typically goes through these five stages:</p>
<ul>
  <li>Log generation</li>
  <li>Log collection</li>
  <li>Log storage</li>
  <li>Log access &amp; analysis</li>
  <li>Log retention &amp; deletion</li>
</ul>

<h2 id="1-log-generation">1. Log generation</h2>
<p>The lifecycle begins when an application or system component experiences an event. Somewhere within the application code, the developer would have written a line of code that looks something like this:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>logger.info("User logged in", user_id=12345)
</code></pre></div></div>

<p>This line is basically saying, “Hey logging system, an informational event just happened. The event is ‘User logged in’, and here is some context about it: the user ID is 12345. Please record this.”</p>

<p>This goes to a <em>logger object</em> provided by the programming language’s logging library (that is, the programming language in which the application is coded/written).</p>

<p>The logger first checks the set log level and determines whether this event is important enough to save. If the app is set to only record warnings and errors, events like “user logged in” are ignored.</p>

<p>If the level passes the filter, the logger creates a log record containing the message, timestamp, log level, where in the code this came from, and any extra context.</p>

<p>A <em>formatter</em> then turns that log record into either plain text, like this:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>2024-12-24 14:32:15 INFO User logged in user_id=12345
</code></pre></div></div>

<p>Or structured data like JSON, like this:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>json
{"timestamp": "2024-12-24T14:32:15Z", "level": "INFO", "message": "User logged in", "user_id": 12345}
</code></pre></div></div>

<p>The <em>handler</em> decides where the log should go. A single logger can have multiple handlers:</p>
<ul>
  <li>ConsoleHandler prints to the terminal</li>
  <li>FileHandler writes to a file</li>
  <li>RotatingFileHandler writes to files with automatic rotation</li>
  <li>HTTPHandler sends logs to a remote server</li>
  <li>And many more</li>
</ul>

<p>You can send the same log message to multiple destinations simultaneously.</p>

<p>Finally, the handler performs the I/O operation, writing to a file, sending over the network, or whatever its job is.</p>

<h2 id="2-log-collection">2. Log collection</h2>
<p>Now we have a problem: logs are scattered across servers, services, containers, and system processes. In the collection phase, all these logs are gathered into one central place.</p>

<p>Most systems use log collectors (also called agents or shippers). These are small programs that run on each server or device and:</p>
<ul>
  <li>Watch for new log entries</li>
  <li>Read them as they’re created</li>
  <li>Add extra context (like which server this came from, or what environment, i.e. production or testing)</li>
  <li>Send them to a central location</li>
</ul>

<p>Think of log collectors as postal workers. Each component of the system drops its logs into a “mailbox,” and the collector picks them up and delivers them to a central sorting facility.</p>

<p>Some common log collectors include <a href="https://www.fluentd.org/">Fluentd</a>, <a href="https://www.elastic.co/beats/filebeat">Filebeat</a>, <a href="https://www.elastic.co/logstash">Logstash</a>, <a href="https://opentelemetry.io/docs/collector/">OpenTelemetry Collector</a>, and <a href="https://grafana.com/docs/loki/latest/send-data/promtail/">Promtail</a>.</p>

<p>Collectors don’t send logs one at a time. That would be too slow and inefficient. Instead, they batch them together. They may collect 100 log entries and send them all at once, or they send whatever they’ve collected every 5 seconds.</p>

<p>This batching is a trade-off. Batching means that logs will arrive slightly delayed at the central location, but it’s much more efficient than sending them individually.</p>

<h2 id="3-log-storage">3. Log storage</h2>
<p>All these collected logs need to be stored somewhere. Logs often are stored in specialized databases designed for time-series data or log management. Some popular log databases are <a href="https://www.elastic.co/elasticsearch">Elasticsearch</a>, <a href="https://www.splunk.com/">Splunk</a>, <a href="https://grafana.com/oss/loki/">Loki</a>, and <a href="https://victoriametrics.com/products/victorialogs/">VictoriaLogs</a>.</p>

<p>These systems are optimized for the kinds of queries engineers need to run on logs (like “show me all ERROR logs from the payment service in the last hour”).</p>

<h2 id="4-log-access--analysis">4. Log access &amp; analysis</h2>
<p>This is the part most people are familiar with, viewing logs in a UI. Logs are accessed through dashboards, search queries, filters, and alerts.</p>

<p>For example, you might:</p>
<ul>
  <li>Search for all ERROR logs in the last 15 minutes</li>
  <li>Filter logs by a specific service</li>
  <li>Look up logs related to a failed request ID</li>
</ul>

<p>Tools like <a href="https://grafana.com/">Grafana</a>, <a href="https://www.elastic.co/kibana">Kibana</a>, or cloud consoles provide interfaces to read logs, correlate logs with metrics and traces, and investigate incidents.</p>

<p>At this stage, logs turn from raw data into insight.</p>

<h2 id="5-log-retention--deletion">5. Log retention &amp; deletion</h2>
<p>You can’t keep logs forever. Storage costs money, and at some point, old logs stop being useful. Plus, some regulations actually require you to delete certain data after a period (like personal information in the General Data Protection Regulation).</p>

<p>Some companies archive old logs to very cheap storage, instead of deleting. They’re not easily searchable anymore, but they exist if absolutely needed. It’s like putting old files in a storage unit. It’s inconvenient to access, but not gone forever.</p>

<h2 id="why-does-this-matter">Why does this matter?</h2>
<p>Now that you understand the full log lifecycle, you can start to see why log management decisions matter. Should you use structured or unstructured logging? How long should you retain logs? Which collection agent fits your infrastructure? These questions make more sense when you understand how each stage connects to the next.</p>

<p>In future articles, we’ll dive deeper into each stage, learn more about collection strategies, storage optimization, search techniques, and building effective retention policies. But this foundation gives you the mental model to understand how it all fits together.</p>]]></content><author><name></name></author><category term="logs" /><category term="observability" /><category term="monitoring" /><summary type="html"><![CDATA[You likely know logs as records of application events, but that’s only half the story. You may know what logs are. But how are they generated? Where are they stored, and for how long? When you need to troubleshoot an error, how do you search through millions of log entries to find what you need?]]></summary></entry><entry><title type="html">What You Need to Build a Website</title><link href="https://victorianduka.com/2025/12/30/build-a-website.html" rel="alternate" type="text/html" title="What You Need to Build a Website" /><published>2025-12-30T00:00:00+00:00</published><updated>2025-12-30T00:00:00+00:00</updated><id>https://victorianduka.com/2025/12/30/build-a-website</id><content type="html" xml:base="https://victorianduka.com/2025/12/30/build-a-website.html"><![CDATA[<p>A friend recently asked me how I built my website. It’s a simple question, but I realized the answer involves several moving pieces that aren’t always obvious when you’re just starting out. So I thought I’d write this down, not as a step-by-step tutorial, but as a conceptual guide.</p>

<p>By the end, you’ll understand what’s actually involved in building a website and have a better sense of which tools and platforms might work for you.</p>

<h2 id="what-is-a-website-really">What is a website, really?</h2>
<p>At its core, a website is just a collection of files: HTML files that structure your content, CSS files that make it look nice, maybe some JavaScript files that add interactivity, and your actual content like text and images. When someone types your website address into their browser, their computer requests these files from a server somewhere on the internet, downloads them, and displays them as a webpage.</p>

<p>That’s it. Everything else we’ll talk about is just different ways of creating those files and making them available to visitors.</p>

<h2 id="the-building-blocks">The building blocks</h2>
<p>There are four main components to a website:</p>

<p><strong>1. Content</strong> - The actual files that make up your website</p>

<p><strong>2. Hosting</strong> - Where your website lives on the internet</p>

<p><strong>3. Domain name</strong> - Your website’s address</p>

<p><strong>4. Version control (optional)</strong> - A system to track changes to your files</p>

<p>Let’s break down each one.</p>

<h3 id="1-content">1. Content</h3>
<p>First, you need to actually create those HTML, CSS, and content files. You have a few approaches here:</p>

<p><strong>Writing code from scratch</strong> means you’re literally creating HTML and CSS files yourself. This gives you complete control but requires learning these languages. It’s more approachable than you might think. HTML and CSS aren’t programming languages, they’re markup languages that describe structure and style.</p>

<p><strong>Using a content management system (CMS)</strong> like <a href="https://wordpress.com/">WordPress</a> means you work through a visual interface. You write your content in an editor that looks like Microsoft Word, click buttons to add images, choose from themes for your design, and WordPress generates all the HTML and CSS behind the scenes. This is easier to start with but can feel constraining as you get more comfortable.</p>

<p><strong>Using a website builder</strong> like <a href="https://www.wix.com/">Wix</a>, <a href="https://www.squarespace.com/">Squarespace</a>, or <a href="https://webflow.com/">Webflow</a> gives you a drag-and-drop interface where you design your site visually. These are the most beginner-friendly but typically bundle hosting and domain registration into their pricing, which means less flexibility in how you set things up.</p>

<p><strong>Using a static site generator</strong> (which is what I did with <a href="https://jekyllrb.com/">Jekyll</a>) is another option. You write your content in simple text files using a format called Markdown, which is much easier than HTML. The generator then transforms these simple files into a complete website with all the HTML and CSS. You get simplicity for your content but still have full control over the design and code if you want it. Other popular static site generators include <a href="https://gohugo.io/">Hugo</a>, <a href="https://www.11ty.dev/">Eleventy</a>, and <a href="https://astro.build/">Astro</a>.</p>

<h3 id="2-hosting">2. Hosting</h3>
<p>Once you’ve created your website files, they need to live somewhere that’s accessible 24/7 on the internet. This is called web hosting.</p>

<p>A web host is essentially a computer (a server) that’s always connected to the internet and configured to serve your website files to anyone who requests them. When someone types in your website address, their browser contacts your host’s server and downloads your files.</p>

<p>You have several hosting options. Traditional web hosts like <a href="https://www.bluehost.com/">Bluehost</a>, <a href="https://www.hostgator.com/">HostGator</a>, or <a href="https://world.siteground.com/">SiteGround</a> rent you space on their servers, usually for a monthly fee. Cloud platforms like <a href="https://aws.amazon.com/">AWS</a>, <a href="https://cloud.google.com/">Google Cloud</a>, or <a href="https://www.digitalocean.com/">DigitalOcean</a> offer more flexible, scalable options but with a steeper learning curve.</p>

<p>If you’re using a static site generator like I did, there are specialized hosts that make things incredibly simple. <a href="https://docs.github.com/en/pages">GitHub Pages</a> (which I use) hosts static sites for free, as does <a href="https://www.netlify.com/">Netlify</a> and <a href="https://vercel.com/">Vercel</a>. These services are designed specifically for static sites and handle a lot of the technical details for you.</p>

<p>If you’re using a website builder like Wix or Squarespace, hosting is built into their service. You don’t need to think about it separately.</p>

<h3 id="3-domain-name">3. Domain name</h3>
<p>Your domain name is your website’s address on the internet, like yourname.com. Technically, websites are accessed via IP addresses (strings of numbers like 192.168.1.1), but domain names give you something memorable that humans can actually remember and type.</p>

<p>You need to register your domain name through a domain registrar. Popular registrars include <a href="https://www.namecheap.com/">Namecheap</a> (where I registered mine), <a href="https://www.godaddy.com/">GoDaddy</a>, and <a href="https://www.cloudflare.com/">Cloudflare</a>. Domain registration typically costs around ten to fifteen dollars per year, depending on the domain extension you choose (.com, .net,or .org.)</p>

<p>If you’re wondering, “why do I need to register a domain name? Why can’t I just choose a name and start using it?” Well, the short answer is: someone needs to maintain the global directory that tells computers where to find every website.</p>

<p>Think of it like phone numbers. You can’t just decide your phone number is 555-1234 and start using it. There needs to be a system that ensures:</p>
<ul>
  <li>No two people have the same number</li>
  <li>When someone dials that number, the call gets routed to your phone specifically</li>
  <li>There’s a record that you own that number</li>
</ul>

<p>Domain names work the same way. When you register a domain through a registrar like Namecheap, you’re essentially:</p>
<ul>
  <li>Checking that no one else is using that name (that’s why you get “domain not available” messages meaning that someone else is using the name)</li>
  <li>Adding your domain to the global Domain Name System (DNS). DNS is like the internet’s phone book. It’s a distributed database that says “yourname.com points to this specific server at this specific IP address”</li>
  <li>Claiming ownership so no one else can use that name while you’re registered</li>
</ul>

<p>Domain registrars are accredited organizations that have the authority to update this global DNS system. When you pay for registration, you’re paying for:</p>
<ul>
  <li>The administrative work of maintaining that record</li>
  <li>Ensuring the system stays secure and reliable</li>
  <li>Your “slot” in this global database</li>
</ul>

<p>Without this system, the internet would be chaos. Multiple people could try to use the same domain name, and there’d be no way for browsers to know which server to connect to when someone types in a web address.</p>

<p>Note that your domain name and your hosting are separate things. You register your domain with a registrar, but your website files live on your host’s servers. You connect these two by pointing your domain name to your host’s servers through something called DNS (Domain Name System) settings. Most registrars and hosts have guides for doing this, and it’s usually just a matter of copying some information from your host into your domain registrar’s settings.</p>

<p>Some hosting services and website builders offer to register your domain for you as part of their package. This can be convenient, but it also means everything is bundled together with one company, which can make it harder to move things around later if you want to switch hosts.</p>

<h3 id="4-version-control">4. Version control</h3>
<p>This one’s not strictly necessary, but if you’re building your site with code (whether from scratch or with a static site generator), you’ll want to know about version control systems like <a href="https://git-scm.com/">Git</a> and platforms like <a href="https://github.com/">GitHub</a>.</p>

<p>Think of version control as a detailed history of every change you’ve ever made to your website files. If you break something, you can roll back to a working version. If you want to try a redesign, you can experiment in a separate branch without affecting your live site. GitHub, <a href="https://about.gitlab.com/">GitLab</a>, and similar platforms let you store this history in the cloud and, as a bonus, some of them (like GitHub Pages) will host your static site for free.</p>

<h2 id="how-it-all-connects">How it all connects</h2>
<p>Let’s walk through how these pieces work together using my setup as an example.</p>

<p>I write my website content in simple Markdown files on my computer. When I’m ready to publish, Jekyll (my static site generator) transforms those Markdown files into a complete website with HTML, CSS, and all the necessary files. I push these files to GitHub, which both stores my code and hosts the website through GitHub Pages. Meanwhile, my domain name (which I registered through Namecheap) is configured to point to GitHub’s servers, so when someone types in my domain, they get my website from GitHub Pages.</p>

<p>If you went with a different approach, say, using WordPress on a traditional host like Bluehost, it would look different. You’d write and design your content through WordPress’s interface in your browser. WordPress stores everything in a database on Bluehost’s servers. Your domain name (which you might have registered through Bluehost or separately through a registrar) points to those Bluehost servers. When someone visits your site, Bluehost’s servers use WordPress to generate the HTML on the fly and send it to the visitor’s browser.</p>

<p>Or if you used a website builder like Squarespace, it’s even more integrated. You’d design everything in Squarespace’s interface, your domain might be registered through Squarespace, and everything is hosted on their servers. It’s all in one place, which is simpler but gives you less flexibility to mix and match services.</p>

<h2 id="what-approach-should-you-use">What approach should you use?</h2>
<p>So where should you start? It depends on your goals, technical comfort level, and how much control you want.</p>

<p>If you want the simplest path and don’t mind paying a monthly fee, website builders like Squarespace, Wix, or Carrd are nice. Everything’s in one place, the interfaces are intuitive, and you can have a site up in an afternoon.</p>

<p>If you want more flexibility and don’t mind a learning curve, a static site generator like Jekyll, Hugo, or Eleventy paired with free hosting on GitHub Pages or Netlify gives you full control and costs almost nothing (just the domain registration). This is the route I took, and while there’s more to learn upfront, you’re working with simple text files and have complete ownership of everything.</p>

<p>If you’re planning a content-heavy site like a blog and want something between these extremes, WordPress on a traditional host is a solid middle ground. There’s a reason it powers a huge percentage of the internet. You get a balance of ease of use and flexibility, though you’ll be paying for hosting.</p>

<p>You don’t need to make a perfect choice right now. Most of these approaches let you export your content if you want to switch later. The important thing is to understand what each piece does so you can make an informed decision.</p>

<h2 id="next-steps">Next steps</h2>
<p>Once you’ve decided on an approach, look for beginner-friendly tutorials specific to the tools you’ve chosen. Most popular platforms and static site generators have excellent documentation and community tutorials. Search for phrases like “getting started with [tool name]” or “[tool name] for beginners.”</p>

<p>A few resources to explore:</p>
<ul>
  <li><a href="https://jekyllrb.com/docs/github-pages/">Jekyll’s documentation for GitHub Pages</a></li>
  <li><a href="https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll">Setting up a GitHub Pages site with Jekyll</a></li>
  <li><a href="https://www.namecheap.com/support/knowledgebase/article.aspx/10072/35/how-to-register-a-domain-name/">How to register a domain name on Namecheap</a></li>
</ul>

<p>The technical aspects might feel overwhelming at first, but remember that at its heart, a website is just files on a server. Everything else is tools and services to make creating and managing those files easier. Start simple, learn as you go, and don’t be afraid to experiment. That’s how most of us learned.</p>

<p>All the best with your website.</p>]]></content><author><name></name></author><category term="website" /><category term="beginner" /><summary type="html"><![CDATA[A friend recently asked me how I built my website. It’s a simple question, but I realized the answer involves several moving pieces that aren’t always obvious when you’re just starting out. So I thought I’d write this down, not as a step-by-step tutorial, but as a conceptual guide.]]></summary></entry><entry><title type="html">Observability Basics: What Logs Are and Why They Matter</title><link href="https://victorianduka.com/2025/12/25/what-logs-are.html" rel="alternate" type="text/html" title="Observability Basics: What Logs Are and Why They Matter" /><published>2025-12-25T00:00:00+00:00</published><updated>2025-12-25T00:00:00+00:00</updated><id>https://victorianduka.com/2025/12/25/what-logs-are</id><content type="html" xml:base="https://victorianduka.com/2025/12/25/what-logs-are.html"><![CDATA[<p>When you open an app you use every day, say a banking app, it feels simple. You log in, check your balance, make a transfer, and everything works as expected.</p>

<p>But sometimes things go wrong. You might be unable to log in, or a transfer might fail but you get debited. Your next action would be to contact support. You explain the problem, and somehow (often within hours) they figure out what went wrong and fix it.</p>

<p>How does the support team do that? How do they investigate an issue that happened on your phone, possibly days ago, and pinpoint exactly what failed and resolve it? That process relies heavily on logs. And to understand logs is to take your <a href="https://www.freecodecamp.org/news/observability-in-cloud-native-applications/">first step into observability</a>.</p>

<h2 id="what-are-logs">What are logs?</h2>
<p>Logs are records of events that happen in a system over time. When you log into your bank app, for instance, the app sends your credentials to a server, verifies your identity, and creates a session for you. And that’s just one aspect of the user flow.</p>

<p>Every action you take (checking your balance, making a transfer) involves similar chains of events.
The system tracks all these activities by recording each event as it happens. These records are called logs.</p>

<p><img src="/assets/images/banking_app_logs_diagram.svg" alt="Logs tracking user actions in a banking app" /></p>

<h3 id="the-anatomy-of-a-log">The anatomy of a log</h3>
<p>A good log entry usually contains three key elements:</p>
<ul>
  <li>Timestamp: Exactly when did this happen?</li>
  <li>Context/Payload: What happened?</li>
  <li>Severity Level: How important is this?</li>
</ul>

<p>A typical log entry might look like:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>2024-12-24 14:32:15 INFO User john_doe logged in successfully
2024-12-24 14:32:47 ERROR Database connection failed: timeout after 30s
2024-12-24 14:33:01 WARNING Disk space below 10% on /dev/sda1
</code></pre></div></div>

<h2 id="the-severity-levels-of-logs">The ‘severity levels’ of logs</h2>
<p>Not all events are equally important. Some things are just routine operations, while others are urgent problems. This is where log levels come in.</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">DEBUG</code> is the play-by-play of every tiny step. “Called function X with these parameters.” “Starting loop iteration 5.” This level of detail is usually too noisy for everyday use, but it’s invaluable when you’re hunting down exactly where something went wrong.</li>
  <li><code class="language-plaintext highlighter-rouge">INFO</code> records normal, noteworthy events. “User logged in.” “File saved successfully.” “Server started.” Everything is working fine—you’re just keeping a record of what’s happening.</li>
  <li><code class="language-plaintext highlighter-rouge">WARNING</code> means something’s odd but not broken yet. “Database query took unusually long.” “Disk space is running low.” “Had to retry this operation.” The system is still working, but something deserves attention.</li>
  <li><code class="language-plaintext highlighter-rouge">ERROR</code> means something actually failed. “Couldn’t save to database.” “Payment service is down.” A specific operation didn’t work, though the overall system might still be running.</li>
  <li><code class="language-plaintext highlighter-rouge">CRITICAL</code> (or <code class="language-plaintext highlighter-rouge">FATAL</code>) is the “everything’s on fire” level. “Out of memory, shutting down.” “Cannot connect to database at all.” The system can’t continue operating.</li>
</ul>

<p><img src="/assets/images/log_levels_diagram.svg" alt="Diagram to illustrate log levels" /></p>

<h3 id="how-log-levels-work">How log levels work</h3>
<p>When you set your logging level, you’re setting a threshold. The logger (the part of a program or system responsible for creating logs) will capture that level and everything above it.</p>

<p>So if you set your logging level to <code class="language-plaintext highlighter-rouge">WARNING</code>, you’ll see <code class="language-plaintext highlighter-rouge">WARNING</code>, <code class="language-plaintext highlighter-rouge">ERROR</code>, and <code class="language-plaintext highlighter-rouge">CRITICAL</code>. You won’t see <code class="language-plaintext highlighter-rouge">DEBUG</code> and <code class="language-plaintext highlighter-rouge">INFO</code>.
If you set it to <code class="language-plaintext highlighter-rouge">INFO</code>, you’ll see <code class="language-plaintext highlighter-rouge">INFO</code>, <code class="language-plaintext highlighter-rouge">WARNING</code>, <code class="language-plaintext highlighter-rouge">ERROR</code>, and <code class="language-plaintext highlighter-rouge">CRITICAL</code>. You won’t see <code class="language-plaintext highlighter-rouge">DEBUG</code>.
If you set it to <code class="language-plaintext highlighter-rouge">DEBUG</code>, you’ll see everything because <code class="language-plaintext highlighter-rouge">DEBUG</code> is the lowest level.</p>

<p>The reason for having these levels is to filter out the noise. In normal operations, you might only look at <code class="language-plaintext highlighter-rouge">WARNING</code> and above to avoid drowning in millions of <code class="language-plaintext highlighter-rouge">INFO</code> messages. But when something goes wrong and you need to investigate, you can turn on <code class="language-plaintext highlighter-rouge">DEBUG</code> to see absolutely everything that led up to the problem.</p>

<h2 id="types-of-logs">Types of logs</h2>
<p>Logs are usually categorized by where they come from and what they are trying to track. Think of it like a hospital: you have “medical charts” for patients (Application logs), “building security footage” for the hallways (Security logs), and “utility reports” for the electricity and plumbing (System logs).</p>

<p>Here are the most common types of logs:</p>

<h3 id="1-application-logs">1. Application logs</h3>
<p>Application logs are generated by the specific software you’re using (like the banking app in the intro). They record events that happen inside the code. They track events such as user logins, specific button clicks, database queries, and internal code errors.</p>

<p>Example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>INFO User 42 initiated transfer of ₦50,000
ERROR Transfer failed: insufficient balance
</code></pre></div></div>

<p>Application logs are usually the first place engineers look when debugging user-reported issues, because they directly reflect application behavior.</p>

<h3 id="2-system-logs">2. System logs</h3>
<p>System logs come from the operating system (Windows, macOS, Linux, or Android) or the environment the application runs in. They describe what’s happening at the infrastructure level. They track events like hardware failures, system startups/shutdowns, driver issues, and low-level memory errors.</p>

<p>Example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>WARNING Disk usage at 92%
ERROR nginx service failed to restart
</code></pre></div></div>

<p>These logs help IT teams figure out if a problem is with the app itself or with the machine on which the app is running.</p>

<h3 id="3-access-logs">3. Access logs</h3>
<p>Access logs record who accessed a system, what they accessed, and when. They’re commonly generated by web servers, APIs, and gateways. Examples of access logs are incoming HTTP requests, API calls, response status codes, and request duration.</p>

<p>Example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>192.168.1.10 - POST /api/transfer 500 230ms
Access logs help understand usage patterns and investigate suspicious activity.
</code></pre></div></div>

<h3 id="4-network-logs">4. Network logs</h3>
<p>These record the traffic moving between different devices or over the internet. They track IP addresses, “handshakes” between servers, and firewall activity (which connections were blocked or allowed). They help to troubleshoot slow internet speeds or detect a massive cyberattack (like a DDoS attack).</p>

<p>Example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ERROR Firewall blocked outbound traffic to payments-service:443
</code></pre></div></div>

<h3 id="5-security-and-audit-logs">5. Security and Audit logs</h3>
<p>Audit logs track sensitive operations for compliance and accountability. In banking systems, audit logs record who approved a transaction, who modified account settings, or who accessed customer data. These logs are often legally required and must be protected against tampering.</p>

<p>Example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>WARNING Failed login attempt for user admin from IP 203.0.113.45
</code></pre></div></div>

<p>In many systems, audit logs are immutable (append-only and cannot be altered after being written), which makes any attempted tampering immediately detectable. Because of this, audit logs are critical for compliance, investigations, and incident response.</p>

<h3 id="6-error-logs">6. Error logs</h3>
<p>Error logs specifically capture failures and exceptions. While errors often appear inside application logs, some systems separate them into dedicated error logs to make problems easier to spot and investigate.</p>

<p><img src="/assets/images/types_of_logs.jpeg" alt="Types of logs" /></p>

<p>In practice, these different log types might all flow into the same centralized logging system, but keeping them conceptually separate helps engineers know where to look when investigating specific issues.</p>

<p>Also note that in real production systems, log types are not perfectly separated into neat boxes. A single event can show up in multiple logs, depending on who is recording it and for what purpose.</p>

<p>For example, a failed login attempt might appear in:</p>
<ul>
  <li>an access log (a request was made),</li>
  <li>a security log (authentication failed), and</li>
  <li>an audit log (a sensitive action was attempted).</li>
</ul>

<p>The same applies to the other log types. One action can trigger several components, and each component may log the event from its own perspective. This overlap gives engineers multiple angles to understand what happened.</p>

<h2 id="why-do-logs-matter">Why do logs matter?</h2>
<p>Without logs, software is a “black box.” You can see what goes in and what comes out, but you have no idea what happens inside the box. Logs serve several important purposes:</p>

<h3 id="1-troubleshooting">1. Troubleshooting</h3>
<p>When a user reports a bug, logs allow you to “travel back in time.” Instead of trying to recreate the error manually, you can look at the logs to see exactly what the code was doing the moment the error occurred.</p>

<h3 id="2-security">2. Security</h3>
<p>Logs are vital for security. If a hacker tries to gain access to a system, they usually leave a trail of “Failed Login” logs. Companies use these logs to identify suspicious patterns and prove compliance with security regulations.</p>

<h3 id="3-performance-monitoring">3. Performance monitoring</h3>
<p>While logs are usually about events, they can also tell you about speed. If a log shows a request started at 10:00:01 and finished at 10:00:05, you know that specific process took 4 seconds—which might be way too slow.</p>

<h2 id="where-logs-live">Where logs live</h2>
<p>In simple applications, logs might just be written to a file on the same machine where the program runs. But as systems grow more complex, logging architectures become more sophisticated.</p>

<p>Centralized logging is common in production environments. Centralized logging means that instead of logs scattered across dozens or hundreds of servers, everything flows to a central location where you can search across all your systems at once. A typical setup might look like:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Application → Local logging agent → Central log server → Search and visualization tools
</code></pre></div></div>

<p>The local agent collects logs from multiple applications, batches them together efficiently, and ships them to a central server. Engineers can then search, filter, and visualize logs from across the entire infrastructure in one place.</p>

<p>Popular tools in this space include Elasticsearch, VictoriaLogs, Splunk, Datadog, and various open-source solutions.</p>

<h2 id="wrapping-up">Wrapping Up</h2>
<p>You’ve now seen how the support team is able to investigate the issue with your bank app. They looked at the logs. Logs turn systems from black boxes into something engineers can reason about, investigate, and fix.</p>

<p>On their own, logs already tell a useful story about what’s going on under the hood of an application. But in modern systems, they’re just one part of a bigger picture. Logs are often combined with other signals like metrics and traces, and together these form the foundation of observability.</p>]]></content><author><name></name></author><category term="logs" /><category term="observability" /><summary type="html"><![CDATA[When you open an app you use every day, say a banking app, it feels simple. You log in, check your balance, make a transfer, and everything works as expected.]]></summary></entry><entry><title type="html">How Non-Developers Can Contribute to Prometheus</title><link href="https://victorianduka.com/blog/external/2025/10/31/non-code-contribution.html" rel="alternate" type="text/html" title="How Non-Developers Can Contribute to Prometheus" /><published>2025-10-31T00:00:00+00:00</published><updated>2025-10-31T00:00:00+00:00</updated><id>https://victorianduka.com/blog/external/2025/10/31/non-code-contribution</id><content type="html" xml:base="https://victorianduka.com/blog/external/2025/10/31/non-code-contribution.html"><![CDATA[<blockquote>
  <p>Originally published on <a href="https://prometheus.io/blog/2025/10/30/non-code-contribution/">Prometheus Blog</a></p>
</blockquote>

<p>My first introduction to the Prometheus project was through the 
<a href="https://mentorship.lfx.linuxfoundation.org/project/36e3f336-ce78-4074-b833-012015eb59be">Linux Foundation mentorship program</a>, 
where I conducted UX research. I remember the anxiety I felt when I was selected as a mentee. I was new not just to Prometheus, 
but to observability entirely. I worried I was in over my head, working in a heavily developer-focused domain with no development background.</p>

<p>That anxiety turned out to be unfounded. I went on to make meaningful contributions to the project, and I’ve learned that what I 
experienced is nearly universal among non-technical contributors to open source.</p>

<p>If you’re feeling that same uncertainty, this post is for you. I’ll share the challenges you’re likely to face (or already face), 
why your contributions matter, and how to find your place in the Prometheus community.</p>

<!-- more -->

<h2 id="the-challenges-non-technical-contributors-face">The Challenges Non-Technical Contributors Face</h2>
<p>As a non-technical contributor, I’ve had my share of obstacles in open source. And from conversations with others navigating these spaces, 
I’ve found the struggles are remarkably consistent. Here are the most common barriers:</p>

<h3 id="1-the-technical-intimidation-factor">1. The Technical Intimidation Factor</h3>
<p>I’ve felt out of place in open source spaces, mostly because technical contributors vastly outnumber non-technical ones. Even the non-technical 
people often have technical backgrounds or have been around long enough to understand what’s happening.</p>

<p>When every conversation references concepts you don’t know, it’s easy to feel intimidated. You join meetings and stay silent throughout. 
You respond in the chat instead of unmuting because you don’t trust yourself to speak up in a recorded meeting where everyone else seems 
fluent in a technical language you’re still learning.</p>

<h3 id="2-unclear-value-proposition">2. Unclear Value Proposition</h3>
<p>Open source projects rarely spell out their non-technical needs the way a job posting would. You would hardly find an issue titled 
“Need: someone to interview users and write case studies” or “Wanted: community manager to organize monthly meetups.” Instead, you’re 
more likely to see a backlog of GitHub issues about bugs, feature requests, and code refactoring.</p>

<p>Even if you have valuable skills, you don’t know where they’re needed, how to articulate your value, or whether your contributions will 
be seen as mission-critical or just nice-to-have. Without a clear sense of how you fit in, it’s difficult to reach out confidently. 
You end up sending vague messages like “I’d love to help! Let me know if there’s anything I can do”, which rarely leads anywhere because 
maintainers are busy and don’t have time to figure out how to match your skills to their needs.</p>

<h3 id="3-lack-of-visible-non-technical-contributors">3. Lack of Visible Non-Technical Contributors</h3>
<p>One of the things that draws me to an open source community or project is finding other people like me. I think it’s the same way for most people. 
Representation matters. It’s hard to be what you can’t see.</p>

<p>It’s even more difficult to find non-technical contributors because their contributions are often invisible in the ways projects typically showcase work. 
GitHub contribution graphs count commits. Changelogs list code changes and bug fixes. You only get the “contributor” label when you’ve created a 
pull request that got merged. So, even when people are organizing events, supporting users, or conducting research, their work doesn’t show up in 
the same prominent ways code does.</p>

<h3 id="4-the-onboarding-gap">4. The Onboarding Gap</h3>
<p>A typical “Contributing Guide” will walk you through setting up a development environment, creating a branch, running tests, and submitting a pull request. 
But it rarely explains how to contribute documentation improvements, where design feedback should go, or how community support is organized.</p>

<p>You see “Join our community” with a link to a Slack workspace. But between joining and making your first contribution, there’s a significant gap. 
There are hundreds of people in dozens of channels. Who’s a maintainer and who’s just another community member? Which channel is appropriate for 
your questions? Who should you tag when you need guidance?</p>

<h2 id="why-these-gaps-exist">Why These Gaps Exist</h2>
<p>It’s worth acknowledging that most of the time, these gaps aren’t intentional. Projects don’t set out to exclude non-technical contributors or 
make it harder for them to participate.</p>

<p>In most cases, a small group of developers build something useful and decide to open-source it. They invite people they know who might need it 
(often other developers) to contribute. The project grows organically within those networks. It becomes a community of developers building 
tools for developers, and certain functions simply don’t feel necessary yet. Marketing? The word spreads naturally through tech circles. 
Community management? The community is small and self-organizing. UX design? They’re developers comfortable with command-line interfaces, 
so they may not fully consider the experience of using a graphical interface.</p>

<p>None of this is malicious. It’s just that the project evolved in a context where those skills weren’t obviously needed.</p>

<p>The shift happens when someone, often a non-technical contributor who sees the potential, steps in and says: 
“You’ve built something valuable and grown an impressive community. But here’s what you might be missing. 
Here’s how documentation could lower the barrier to entry. Here’s how community management could retain contributors. 
Here’s how user research could guide your roadmap.”</p>

<h2 id="why-non-technical-contributions-matter">Why Non-Technical Contributions Matter</h2>
<p>Prometheus is a powerful monitoring system backed by a large community of developers. But like any open source project, it needs more than code to thrive.</p>

<p><strong>It needs accessible documentation.</strong> From my experience working with engineers, most would rather focus on building than writing docs, 
and understandably so. Engineers who know the system inside out often write documentation that assumes knowledge newcomers don’t have. 
What makes perfect sense to someone who built the feature can feel impenetrable to someone encountering it for the first time. 
A technical writer testing the product from an end user’s perspective, not a builder’s, can bridge that gap and lower the barrier to entry.</p>

<p><strong>It needs organization.</strong> The GitHub issues backlog has hundreds of open items that haven’t been triaged. Maintainers spend valuable 
time parsing what users actually need instead of building solutions. A project manager or someone with triage experience could turn 
that chaos into a clear roadmap, allowing maintainers to spend their time building solutions.</p>

<p><strong>It needs community support.</strong> Imagine a user who joins the Slack workspace, excited to contribute. They don’t know where to start. 
They ask a question that gets buried in the stream of messages. They quietly leave. The project just lost a potential contributor because 
no one was there to welcome them and point them in the right direction.</p>

<p>These are the situations non-technical contributions can help prevent. Good documentation lowers the barrier to entry, which means more adoption, 
more feedback, and better features. Active community management retains contributors who would otherwise drift away, which means distributed 
knowledge and less maintainer burnout. Organization and triage turn scattered input into actionable priorities.</p>

<p>The Prometheus maintainers are doing exceptional work building a robust, scalable monitoring system. But they can’t do everything, 
and they shouldn’t have to. The question now isn’t whether non-technical contributions matter. It’s whether we create the space for them to happen.</p>

<h2 id="practical-ways-you-can-contribute-to-prometheus">Practical Ways You Can Contribute to Prometheus</h2>
<p>If you’re ready to contribute to Prometheus but aren’t sure where to start, here are some areas where non-technical skills are actively needed.</p>

<h3 id="1-join-the-ux-efforts">1. Join the UX Efforts</h3>
<p>Prometheus is actively working to improve its user experience, and the community now has a 
<a href="https://cloud-native.slack.com/archives/C09NL3B1EKW">UX Working Group</a> dedicated to this effort.</p>

<p>If you’re a UX researcher, designer, or someone with an eye for usability, this is an excellent time to get involved. 
The working group is still taking shape, with ongoing discussions about priorities and processes. 
Join the Slack channel to participate in these conversations and watch for upcoming announcements about specific ways to contribute.</p>

<p>I can tell you from experience that the community is receptive to UX contributions, and your work will have a real impact.</p>

<h3 id="2-write-for-the-prometheus-blog">2. Write for the Prometheus Blog</h3>
<p>If you’re a technical writer or content creator, the Prometheus blog is a natural entry point. The blog publishes tutorials, 
case studies, best practices, community updates, and generally, content that helps users get more value from Prometheus.</p>

<p>Check out the <a href="https://github.com/prometheus/docs/blob/main/blog/README.md">blog content guide</a> to understand what makes a strong blog proposal and how to publish a post on the blog. 
There’s an audience eager to learn from your experience.</p>

<h3 id="3-improve-and-maintain-documentation">3. Improve and Maintain Documentation</h3>
<p>Documentation is one of those perpetual needs in open source. There’s always something that could be clearer, more complete, or better organized. 
The Prometheus docs repo is no exception.</p>

<p>You can contribute by fixing typos and <a href="https://github.com/prometheus/docs/issues/2649">broken links</a>, expanding getting-started guides, 
creating tutorials for common monitoring scenarios, or <a href="https://www.youtube.com/watch?v=SzSUa5y7Ji0&amp;t=27105s">triaging issues</a> to help 
prioritize what needs attention. Even if you don’t consider yourself a technical writer, if you’ve ever been confused by the docs and 
figured something out, you can help make it clearer for the next person.</p>

<h3 id="4-help-organize-promcon">4. Help Organize PromCon</h3>
<p><a href="https://promcon.io/">PromCon</a> is Prometheus’s annual conference, and it takes significant coordination to pull off. 
The organizing team handles everything from speaker selection and scheduling to venue logistics and sponsor relationships.</p>

<p>If you have experience in event planning, sponsor outreach, marketing, or communications, the PromCon organizers would welcome your help. 
Reach out to the <a href="mailto:promcon-organizers@googlegroups.com">organizing team</a> or watch for announcements in the Prometheus community channels.</p>

<h3 id="5-advocate-and-amplify">5. Advocate and Amplify</h3>
<p>Finally, one of the simplest but most impactful things you can do is talk about Prometheus. Write blog posts about how you’re using Prometheus. 
Give talks at local meetups or conferences. Share tips and learnings on social media. Create video tutorials or live streams. 
Recommend Prometheus to teams evaluating monitoring solutions.</p>

<p>Every piece of content, every conference talk, every social media post expands Prometheus’s reach and helps new users discover it.</p>

<h2 id="how-to-get-started">How to Get Started</h2>
<p>If you’re ready to contribute to Prometheus, here’s what I’ve learned from my own experience navigating the community as a non-technical contributor:</p>

<p><strong>Start by introducing yourself.</strong> When you join the #prometheus-dev Slack channel, say hello. Slack doesn’t always make it obvious 
when someone new joins, so if you stay silent, people simply won’t know you’re there. A simple introduction—your name, what you do, what brought you to Prometheus—is enough to make your presence known.</p>

<p><strong>Attend community meetings.</strong> Check out the <a href="https://prometheus.io/community/#calendar-for-public-events">community calendar</a> and 
sync the meetings that interest you. Even if you don’t understand everything being discussed at first (and that’s completely normal), stay. 
The more you sit in, the more you’ll learn about the community’s needs and find more opportunities to contribute.</p>

<p><strong>Observe before you act.</strong> It’s tempting to jump in with ideas immediately, but spending time as an observer first pays off. 
Read through Slack discussions and conversations in GitHub issues. Browse the documentation. Notice what kinds of contributions are being made. 
You’ll start to see patterns: recurring questions, documentation gaps, areas where help is needed. That’s where your opportunity lies.</p>

<p><strong>Ask questions.</strong> Everyone was new once. If something isn’t clear, ask. If you don’t get a response right away, 
give it some time—people are busy—then follow up. The community is welcoming, but you have to make yourself visible.</p>

<p>The Prometheus community has room for you. Now you know exactly where to begin.</p>]]></content><author><name></name></author><category term="blog" /><category term="external" /><category term="prometheus" /><category term="monitoring" /><summary type="html"><![CDATA[Originally published on Prometheus Blog]]></summary></entry><entry><title type="html">How to Leverage Hacktoberfest to Start and Grow Your Open Source Career</title><link href="https://victorianduka.com/open/source/2025/09/29/hacktoberfest.html" rel="alternate" type="text/html" title="How to Leverage Hacktoberfest to Start and Grow Your Open Source Career" /><published>2025-09-29T17:00:00+00:00</published><updated>2025-09-29T17:00:00+00:00</updated><id>https://victorianduka.com/open/source/2025/09/29/hacktoberfest</id><content type="html" xml:base="https://victorianduka.com/open/source/2025/09/29/hacktoberfest.html"><![CDATA[<p>In just a few days, Hacktoberfest 2025 will begin, and so will the scramble to submit pull requests. If you keep up, you could get cool swag out of it. Or a tree planted in your name. All of which are noble. But if you do it right, you could get more out of it—the satisfaction of contributing to a project used by millions, work experience, or maybe even a job.</p>

<p>So, for the many who’ll be participating in Hacktoberfest this year, I have this question: if you’re going to spend an entire month contributing to open source, basically doing volunteer work, wouldn’t you want to make the most of it?</p>

<h2 id="what-is-hacktoberfest">What is Hacktoberfest?</h2>
<p><a href="https://hacktoberfest.com/">Hacktoberfest</a> is an annual, month-long celebration of open source software that takes place every October. It was created by DigitalOcean (in partnership with other sponsors over the years) to encourage participation in open source communities.</p>

<p>Participants typically sign up on the Hacktoberfest website, then contribute to projects by opening pull requests or completing other contribution tasks. In previous years, making a set number of valid contributions (usually 4, but this year the number has increased to 6) could earn you a digital badge or limited-edition swag, like a T-shirt.</p>

<h2 id="should-i-participate-in-hacktoberfest">Should I Participate in Hacktoberfest?</h2>
<p>If you asked me, I’d immediately say, “Yes, by all means, participate.” But I’ll admit I’m biased, as a strong advocate for open source myself. So, take my advice with a pinch of salt and do your own research. Find out <a href="https://opensource.com/resources/what-open-source">what open source is</a>, and whether it genuinely interests you. Weigh the benefits and downsides for your specific situation.</p>

<p>Some people only gain clarity once they dive in. They discover that they actually enjoy it and find it deeply fulfilling. That could be the case for you too.</p>

<h2 id="which-projects-should-i-contribute-to">Which Project(s) Should I Contribute to?</h2>
<p>You can just pick any repo with a “Hacktoberfest” label and submit PRs, but if you really want to make the most of this month, a little intentionality will go a long way. Consider these points when deciding what project(s) to contribute to:</p>

<h3 id="dont-just-chase-the-good-first-issues">Don’t Just Chase the “Good First Issues”</h3>
<p>When you’re new, “good first issues” feel like a safe and obvious starting point. And they are, to an extent. But these issues get swarmed fast during Hacktoberfest, and sometimes they’re so trivial that after closing a few, you’re left with no real attachment to the project.</p>

<p>I’m not saying don’t take on good first issues. Actually, do. They’re a good way to start. Test the open source waters. But, beyond that first PR, you should target much deeper issues.</p>

<p>Take time to understand what the project actually does. Does it solve a problem you care about? Do you find yourself curious as you scroll through the README and issues? That spark of curiosity is what will keep you coming back long after October ends.</p>

<h3 id="look-for-projects-with-welcoming-communities">Look for Projects with Welcoming Communities</h3>
<p>Your experience as a contributor is shaped mostly by the people. A good maintainer or community can make all the difference between feeling like an outsider and feeling like you belong.</p>

<p>Generally, a welcoming project:</p>
<ul>
  <li>has a clear CONTRIBUTING.md file and a friendly README</li>
  <li>is responsive to issues and PRs</li>
  <li>has active discussion channels (Slack, Discord, mailing lists, etc.)</li>
</ul>

<p>If you see a lot of stale PRs with no maintainer comments for months, that might be a red flag, or, at least, a sign that your PRs might not get the attention they deserve.</p>

<h3 id="align-with-your-interests-and-future-goals">Align With Your Interests (and Future Goals)</h3>
<p>This one’s probably the most important. If you’re hoping to grow your skills or even land opportunities through open source, it makes sense to pick projects that align with where you want to go professionally.</p>

<p>For example, if you’re interested in DevOps or cloud technologies, contributing to <a href="https://www.cncf.io/">CNCF</a> projects is a great move. If you’re more into frontend, there are plenty of UI libraries and accessibility-focused projects that welcome contributors.</p>

<p>The point is: don’t pick randomly. Pick intentionally.</p>

<h2 id="some-cncf-projects-to-explore-this-hacktoberfest">Some CNCF Projects to Explore This Hacktoberfest</h2>
<p>I’m diving more deeply into the cloud-native space, so naturally, my recommendations will lean that way. But, CNCF projects are good because many of them are well-maintained, used at scale, and have structured contribution processes. In no particular order, here are a few worth checking out:</p>

<ul>
  <li><strong><a href="https://opentelemetry.io/">OpenTelemetry (OTel)</a>:</strong> I’ve been a contributor for about six months, and I can confirm that the community is very welcoming. You have an opportunity to make a difference if you put your mind to it. <a href="https://opentelemetry.io/community/">Learn more about the OTel project here</a>.</li>
  <li><strong><a href="https://prometheus.io/">Prometheus</a>:</strong> If you’re looking to make a mark in the observability space, then consider contributing to Prometheus. One area we need help with is populating the blog with quality content. Check out our <a href="https://github.com/prometheus/docs/tree/main/blog#readme">blog content guidelines</a> for more information, and <a href="https://prometheus.io/community/">join the community</a> to find out more ways that you can contribute.</li>
  <li><strong><a href="https://layer5.io/">Layer5</a>:</strong> As far as I know, Layer5 has always participated in Hacktoberfest, and this year is no different. In preparation, they’ve <a href="https://layer5.io/community/events/hacktoberfest-prep-2025-designing-with-meshery">organized an event</a> to onboard newbies interested in contributing to the project during Hacktoberfest. Layer5 encourages non-code contributions as well. So, if you’re a community manager, digital marketer, or designer, there might be something here for you.</li>
  <li>And a host of others. You can <a href="https://contribute.cncf.io/contributors/">explore them here</a>.</li>
</ul>

<p>I’d also add that you shouldn’t pick a project just because it’s popular or has a large community. For example, if your main reason for contributing to Prometheus is that it’s a big-name project and will look good on your résumé, you might want to reevaluate your priorities. That reason alone isn’t necessarily bad, but it becomes a problem when it’s your only motivation. It narrows your perspective and can make you overlook smaller projects that might actually offer more meaningful opportunities for growth and impact. To make sustained contributions and truly grow in a community, your motivation needs to go deeper than prestige.</p>

<h2 id="must-i-code-to-contribute">Must I Code to Contribute?</h2>
<p>This is something I wish more people talked about: open source isn’t just for people who can write code. In fact, some of the most impactful contributors I know rarely touch the codebase. And yes, <a href="https://hacktoberfest.com/participation/#low-or-non-code-contributions">Hacktoberfest is open to these kinds of contributions</a>.</p>

<p>If you’re not a developer (or even if you are but want to explore other ways to contribute), here are a few meaningful ways to get involved:</p>

<h3 id="documentation">Documentation</h3>
<p>Good technical writing is rare. If you can explain complex concepts clearly, write tutorials, or improve API documentation, you’re providing huge value. And honestly, documentation contributions are often the fastest path to building relationships with maintainers because you’re solving a problem most developers don’t enjoy tackling.</p>

<h3 id="testing">Testing</h3>
<p>If you’re good at exploring products and noticing details, becoming a tester or bug reporter is incredibly valuable. Try out new features and report any issues you find. Check if the documentation steps actually work as described. Suggest improvements to the user experience. A well-written bug report is sometimes more helpful than a half-done PR.</p>

<h3 id="community--advocacy">Community &amp; Advocacy</h3>
<p>If you’re someone who likes engaging with people, you can contribute in this way too. Help answer questions in community channels or forums. Write blog posts, tutorials, or social media content about the project. Mentor newcomers once you get more familiar with the project. Help organize community events, meetups, or contributor onboarding sessions. These are the kinds of contributions that help a project grow its community and keep it thriving.</p>

<h3 id="user-experience">User Experience</h3>
<p>It may surprise you just how many open source projects struggle with usability because they’re built by and for engineers. If you have UX skills, you could:</p>
<ul>
  <li>conduct informal accessibility audits and share your findings.</li>
  <li>suggest UX improvements for onboarding flows or interfaces.</li>
  <li>contribute icons, illustrations, or visual assets.</li>
</ul>

<h3 id="translation--localization">Translation &amp; Localization</h3>
<p>Open source is global. Not everyone reads English comfortably, and translating docs or UI strings into other languages can make a project more accessible to a wider audience. If you speak more than one language, this is a powerful way to make a lasting impact.</p>

<h2 id="how-to-make-contributions-that-count">How to Make Contributions that Count</h2>
<p>A quick way to set yourself up for failure is to try to contribute to dozens of projects, hunting for easy PRs. That approach might get you swag (with a touch of burnout), but it won’t build the relationships or skills that lead anywhere meaningful.</p>

<p>Instead, pick at most two projects. Focus deeply on them. Learn their architecture. Understand their roadmap. Participate in community calls. Build relationships with maintainers. Make contributions that solve real problems, even if they’re small problems.</p>

<p>Quality beats quantity every time. One thoughtful, well-implemented contribution that improves the project is worth more than ten trivial typo fixes. Maintainers remember contributors who engage thoughtfully, ask good questions, and take ownership of their work.</p>

<h3 id="before-october">Before October</h3>
<p>It might be too late to share this since October is just a few hours away, but better late than never. Don’t wait until October 1st to figure out what you’re doing. Use the next few days to:</p>
<ul>
  <li>Research projects that align with your interests</li>
  <li>Join their Slack channels or mailing lists</li>
  <li>Set up your development environment</li>
  <li>Read through the contributing guidelines</li>
  <li>Look at existing issues and PRs to understand what the project needs</li>
  <li>Attend a community meeting if possible</li>
</ul>

<p>This prep work helps you hit the ground running and shows you’re serious about contributing, not just collecting PRs.</p>

<h3 id="during-october">During October</h3>
<p>When October arrives, don’t just submit PRs and disappear. Engage with the community. Respond to feedback promptly. Help review other contributors’ work, if you can. Ask questions that show you’re trying to understand, not just complete a task.</p>

<p>Introduce yourself in community channels. Let people know you’re participating in Hacktoberfest and interested in staying involved beyond October. Most maintainers appreciate when contributors are upfront about their intentions.</p>

<p>After you submit a PR, follow up on review comments. Be patient with the review process. Maintainers are often volunteers too, juggling open source work with jobs and life.</p>

<h3 id="after-october">After October</h3>
<p>This is the part most people get wrong. They grind through October, get their swag, and disappear. All those relationships they built, all that project knowledge they gained—wasted.</p>

<p>If you want this to matter for your career, you need to stay engaged. You don’t need to contribute every week, but stay connected. Keep attending community meetings when you can. Continue making contributions at whatever pace is sustainable for you. Help onboard next year’s Hacktoberfest participants.</p>

<p>This sustained engagement is what transforms you from “someone who did Hacktoberfest once” to “someone who contributes to Project X.” That latter identity opens doors. It builds your reputation and your network.</p>

<h2 id="what-will-you-make-of-hacktoberfest-2025">What Will You Make of Hacktoberfest 2025?</h2>
<p>Hacktoberfest is what you make of it. You can treat it as a month-long scavenger hunt for PRs, or you can use it as a launching pad for sustained involvement in communities that matter to you.
If you’re going to spend October contributing to open source anyway, be strategic about it. The swag is nice, but it will fade and wear out eventually. The skills, connections, and opportunities that come from meaningful open source contributions, on the other hand, will still be paying dividends years from now.</p>

<p>So when Hacktoberfest starts in a few days, ask yourself: am I here for the T-shirt, or am I here to build something that lasts?</p>]]></content><author><name></name></author><category term="open" /><category term="source" /><summary type="html"><![CDATA[In just a few days, Hacktoberfest 2025 will begin, and so will the scramble to submit pull requests. If you keep up, you could get cool swag out of it. Or a tree planted in your name. All of which are noble. But if you do it right, you could get more out of it—the satisfaction of contributing to a project used by millions, work experience, or maybe even a job.]]></summary></entry><entry><title type="html">Welcome to my website!</title><link href="https://victorianduka.com/jekyll/update/2025/09/03/welcome-to-jekyll.html" rel="alternate" type="text/html" title="Welcome to my website!" /><published>2025-09-03T20:23:30+00:00</published><updated>2025-09-03T20:23:30+00:00</updated><id>https://victorianduka.com/jekyll/update/2025/09/03/welcome-to-jekyll</id><content type="html" xml:base="https://victorianduka.com/jekyll/update/2025/09/03/welcome-to-jekyll.html"><![CDATA[<p>It’s a work in progress 🚧.</p>

<p>Here you’ll find <a href="/works/">my works</a> and almost everything <a href="/about/">about me</a>.</p>]]></content><author><name></name></author><category term="jekyll" /><category term="update" /><summary type="html"><![CDATA[It’s a work in progress 🚧.]]></summary></entry></feed>