<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Programmer</title><description>Programmer and software engineering student. I write about software development, Linux, and technology. I also share personal projects and photography.</description><link>https://viniciusnevescosta.com/</link><item><title>The post that broke my website</title><link>https://viniciusnevescosta.com/blog/the-post-that-broke-my-website/</link><guid isPermaLink="true">https://viniciusnevescosta.com/blog/the-post-that-broke-my-website/</guid><description>How a Reddit post took down my website.</description><pubDate>Fri, 30 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I decided to write this to review and share some insights about my latest post.&lt;/p&gt;
&lt;p&gt;Last Tuesday, I posted an article entitled &lt;a href=&quot;https://viniciusnevescosta.com/blog/2030-the-year-of-desktop-linux&quot;&gt;‘2030 the year of desktop Linux’&lt;/a&gt;. The &amp;quot;year of the Linux desktop&amp;quot; is a well-known meme in the community, mostly because this year never really comes. But I suggested in the title that 2030 might actually be the &lt;em&gt;&amp;quot;promised year.&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I argued that, utilizing some work-in-progress projects, the ecosystem may be mature enough for the average user in the next 4 years—a thought that I had been mulling over for some while.&lt;/p&gt;
&lt;p&gt;But to be fair, what I wasn’t expecting was the repercussions that post caused.&lt;/p&gt;
&lt;p&gt;I decided to share the link on the &lt;a href=&quot;https://www.reddit.com/r/linux/&quot;&gt;r/linux&lt;/a&gt; subreddit with a discussion tag. In less than 30 minutes, the post got 20k views and 50 comments.&lt;/p&gt;
&lt;p&gt;Fast forward to today, and the post is closing in on 100k views and nearing 200 comments.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/blog/the-post-that-broke-my-website/graphics.png&quot; alt=&quot;Graphics&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Insights about the post on Reddit.&lt;/p&gt;

&lt;p&gt;The influx was so sudden that it actually took my site down for a few hours. I completely blew past my hosting traffic limit. It was a bittersweet moment: a mix of &amp;quot;Yay, people are reading!&amp;quot; followed by &amp;quot;Oh no, nobody can read it anymore.&amp;quot;&lt;/p&gt;
&lt;p&gt;I think the reaction was largely driven by the title I chose for Reddit: &lt;a href=&quot;https://www.reddit.com/r/linux/comments/1qosj0w/why_desktop_linux_could_just_feel_normal_by_2030/&quot;&gt;&lt;em&gt;“Why desktop Linux could just feel normal by 2030.”&lt;/em&gt;&lt;/a&gt; It was a simple, innocent, yet clearly provocative title.&lt;/p&gt;
&lt;p&gt;A lot of people commented to say that Linux is &lt;em&gt;already&lt;/em&gt; normal today. And yes, I agree. It is normal for me, and likely for you reading this. Knowing what I know now, I might have chosen a title that made my idea clearer—perhaps emphasizing &amp;quot;frictionless&amp;quot; rather than just &amp;quot;normal&amp;quot;—to better reflect that I was talking about the experience for the average, non-technical consumer.&lt;/p&gt;
&lt;p&gt;However, despite the semantic debate, the main goal was achieved: to generate a healthy discussion around the incredible engineering work being done right now.&lt;/p&gt;
&lt;p&gt;Thank you to everyone who read, commented, and engaged.&lt;/p&gt;
&lt;p&gt;Regarding what’s next: as I hinted before, I’m planning a piece on Mac gaming. And over the next few months, I want to explore a handful of other topics too—still in the same style: a technical deep dive first, and then some predictions based on what I find.&lt;/p&gt;
&lt;p&gt;Here are a few ideas currently on my list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What if Windows became open source?&lt;/li&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;Linux and mobile&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;li&gt;Modern cryptography&lt;/li&gt;
&lt;li&gt;WireGuard&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are all topics I genuinely enjoy and want to dig into. But, this isn’t a strict roadmap and they&amp;#39;re not in a sequential order. Also, other subjects may show up along the way.&lt;/p&gt;
&lt;p&gt;It might take a little while to write and publish these topics because my routine is currently packed with work and university, but stay tuned.&lt;/p&gt;
</content:encoded></item><item><title>‘2030 the year of desktop Linux’</title><link>https://viniciusnevescosta.com/blog/2030-the-year-of-desktop-linux/</link><guid isPermaLink="true">https://viniciusnevescosta.com/blog/2030-the-year-of-desktop-linux/</guid><description>Why desktop Linux could feel normal by 2030.</description><pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I installed my first Linux distro in 2022: Pop!_OS.&lt;sup&gt;&lt;a href=&quot;https://system76.com/pop/&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;It didn’t take long before I did the thing everyone does after the first successful install: I started hopping. Fedora. Arch and even Nobara Project by GloriousEggroll.&lt;sup&gt;&lt;a href=&quot;https://nobaraproject.org/&quot;&gt;2&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://github.com/GloriousEggroll&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;By the end of 2023 I bought my first Mac, and that did solve a lot of day-to-day friction for me, but it didn’t cure the Linux itch.&lt;/p&gt;
&lt;p&gt;I think that’s the part people miss when they reduce Linux desktop to a niche alternative. Once you get used to an ecosystem that builds in public, where the plumbing is discussed openly and you can see the tradeoffs, it’s hard not to keep checking back in.&lt;/p&gt;
&lt;p&gt;But most people don’t “choose an OS,” they just buy a computer. And yes, Linux on desktop is still small today. StatCounter’s desktop numbers are still low single digits for Linux, for example, December 2025 shows Linux at 3.86% worldwide.&lt;sup&gt;&lt;a href=&quot;https://gs.statcounter.com/os-market-share/desktop/worldwide/&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;So here’s where I’m landing: I think 2030 is the first year where desktop Linux can realistically stop feeling like a hobbyist choice and start feeling like a normal choice. Not because one magical breakthrough happens, but because a bunch of important details are finally lining up.&lt;/p&gt;
&lt;h2&gt;The Nvidia story is finally getting interesting&lt;/h2&gt;
&lt;p&gt;One reason AMD and Intel often feel easy on Linux is simple: their graphics stacks are largely upstream-first. The kernel side (DRM/KMS), userspace (Mesa), and the compositor stack tend to evolve together, with fewer vendor-specific special paths needed for the common desktop workflows.&lt;sup&gt;&lt;a href=&quot;https://docs.kernel.org/gpu/amdgpu/index.html&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://docs.kernel.org/gpu/i915.html&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Nvidia has historically been harder because the stack has been split across two paths.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/blog/2030-the-year-of-desktop-linux/1.svg&quot; alt=&quot;1&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Fragmented past stack.&lt;/p&gt;

&lt;p&gt;On one side there’s the community stack (Nouveau + Mesa), where the kernel driver and Mesa drivers are developed in the open and integrate naturally with the upstream graphics stack.&lt;/p&gt;
&lt;p&gt;On the other side there’s the proprietary Nvidia driver, where kernel modules and the userspace OpenGL, Vulkan and EGL implementation are delivered as a vendor stack, and historically have lagged or diverged on integration points that matter on modern Linux desktops.&lt;sup&gt;&lt;a href=&quot;https://docs.kernel.org/gpu/nouveau.html&quot;&gt;7&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://www.Nvidia.com/en-us/drivers/details/224751/&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;What’s changing is that both paths are moving in directions that reduce the number of special cases needed for Nvidia to behave like any other GPU on Linux.&lt;/p&gt;
&lt;p&gt;On the Mesa side, NVK is now a serious part of the plan. NVK is Mesa’s open-source Vulkan driver for Nvidia GPUs. Mesa documents it as a conformant Vulkan 1.4 implementation for supported Nvidia generations.&lt;sup&gt;&lt;a href=&quot;https://docs.mesa3d.org/drivers/nvk.html&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;What makes NVK especially relevant to desktop users is how it pairs with Zink.&lt;/p&gt;
&lt;p&gt;Zink is a Mesa OpenGL implementation built on top of Vulkan. Instead of maintaining a hardware-specific OpenGL driver backend for every GPU family, Zink implements OpenGL once and emits Vulkan calls underneath.&lt;/p&gt;
&lt;p&gt;In practical terms, this consolidates effort around the Vulkan driver path (NVK) and reduces reliance on the older Nouveau OpenGL driver for modern Nvidia cards.&lt;sup&gt;&lt;a href=&quot;https://www.collabora.com/news-and-blog/news-and-events/goodbye-nouveau-gl-hello-zink.html&quot;&gt;10&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Then there’s Nova.&lt;/p&gt;
&lt;p&gt;Nova is a new upstream Linux kernel driver project for Nvidia GPUs that use the GSP (GPU System Processor) model. The kernel documentation describes Nova as two drivers, &lt;code&gt;nova-core&lt;/code&gt; and &lt;code&gt;nova-drm&lt;/code&gt;, and states that it intends to supersede Nouveau for GSP-based Nvidia GPUs.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nova-core&lt;/code&gt; provides the low-level firmware/hardware abstraction, and &lt;code&gt;nova-drm&lt;/code&gt; is the DRM/KMS piece that plugs into the normal Linux graphics stack.&lt;sup&gt;&lt;a href=&quot;https://docs.kernel.org/gpu/nova/index.html&quot;&gt;11&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Why this matters is straightforward: NVK and Zink live in userspace (Mesa), but they still depend on a functional kernel DRM driver for memory management, command supmission, display, and synchronization. Today that kernel foundation is generally Nouveau on the open stack, longer-term, Nova is the path aimed at being the modern upstream kernel foundation for newer Nvidia generations using GSP.&lt;/p&gt;
&lt;p&gt;That is how NVK + Zink can eventually sit on top of a kernel driver that is designed for the modern firmware model and developed upstream alongside the rest of Linux graphics.&lt;sup&gt;&lt;a href=&quot;https://docs.kernel.org/gpu/nouveau.html&quot;&gt;12&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://docs.kernel.org/gpu/nova/index.html&quot;&gt;13&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/blog/2030-the-year-of-desktop-linux/2.svg&quot; alt=&quot;2&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Unified modern stack.&lt;/p&gt;

&lt;p&gt;Meanwhile, on the proprietary side, Nvidia has also been addressing some of the most visible Wayland pain points. The 555 driver series added support for the &lt;code&gt;linux-drm-syncobj-v1&lt;/code&gt; Wayland explicit sync protocol, which is one of the missing pieces that historically contributed to stutter, flicker and timing issues on some Wayland setups.&lt;sup&gt;&lt;a href=&quot;https://www.Nvidia.com/en-us/drivers/details/224751/&quot;&gt;14&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://www.phoronix.com/news/Nvidia-555.58-Linux-Driver&quot;&gt;15&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;There’s also a second category of problems that matters specifically for Linux adoption among gamers: DirectX 12 through Proton.&lt;/p&gt;
&lt;p&gt;DirectX 12 games on Linux usually run through Proton using &lt;code&gt;VKD3D-Proton&lt;/code&gt;, which translates &lt;code&gt;D3D12&lt;/code&gt; calls to Vulkan. When performance is worse on Nvidia than expected, or when certain &lt;code&gt;D3D12&lt;/code&gt; titles regress, the cause is often a messy interaction between translation-layer assumptions and driver behavior. Nvidia users have been reporting these issues publicly for a while, including performance complaints in Nvidia’s own Linux forums.&lt;sup&gt;&lt;a href=&quot;https://forums.developer.Nvidia.com/t/directx12-performance-is-terrible-on-linux/303207&quot;&gt;16&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;What’s relevant here is that there are signs Nvidia is actively targeting general improvements for &lt;code&gt;D3D12&lt;/code&gt; and &lt;code&gt;VKD3D&lt;/code&gt; workloads on Linux, rather than only one-off game fixes, which is exactly the kind of work that can move the baseline instead of just patching symptoms.&lt;sup&gt;&lt;a href=&quot;https://www.gamingonlinux.com/2025/08/nvidia-are-working-on-a-general-optimization-for-vkd3d-directx12-games-on-linux/&quot;&gt;17&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;And this matters because Nvidia isn’t a niche vendor in the gaming world, it’s still the default GPU choice for a huge portion of Steam users.&lt;sup&gt;&lt;a href=&quot;https://store.steampowered.com/hwsurvey/Steam-Hardware-Software-Survey-Welcome-to-Steam&quot;&gt;18&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Most of these users will never learn what NVK, Zink, or Nova are, and they shouldn’t have to. The only metric that matters is the experience: you launch a game, you launch an app, you alt-tab, you drag a window across monitors, and nothing weird happens.&lt;/p&gt;
&lt;p&gt;If the Linux experience becomes smoother on the hardware people already own, the adoption story changes.&lt;/p&gt;
&lt;h2&gt;Wayland becomes the baseline&lt;/h2&gt;
&lt;p&gt;Wayland used to be the future. Now it’s increasingly just the default.&lt;/p&gt;
&lt;p&gt;KDE has been explicit about moving Plasma toward a Wayland-exclusive future, with Xwayland used for legacy X11 apps rather than maintaining parallel desktop sessions indefinitely.&lt;sup&gt;&lt;a href=&quot;https://blogs.kde.org/2025/11/26/going-all-in-on-a-wayland-future/&quot;&gt;19&lt;/a&gt;&lt;/sup&gt; GNOME is moving the same way: the X11 session was disabled by default and the project targeted full removal during the GNOME 50 cycle, leaving Wayland as the only supported session, but also with Xwayland for X11 apps.&lt;sup&gt;&lt;a href=&quot;https://blogs.gnome.org/alatiera/2025/06/08/the-x11-session-removal/&quot;&gt;20&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;What I expect over the next four years isn’t “Wayland is done,” but something more practical: protocols that are currently debated, drafted, and sitting in review will either land, consolidate, or be replaced by clearer approaches.&lt;/p&gt;
&lt;p&gt;That process matters because paper cuts on Wayland are often not compositor bugs, they’re missing or incomplete protocol agreements that everyone is waiting on.&lt;/p&gt;
&lt;p&gt;Wayland protocol development can leave even basic functionality sitting for months or years, and that becomes a product problem when you’re shipping devices and a compositor (Gamescope) to real users.&lt;/p&gt;
&lt;p&gt;This is where Valve’s frog-protocols exists.&lt;/p&gt;
&lt;p&gt;Frog-protocols isn&amp;#39;t a new Wayland replacement.&lt;sup&gt;&lt;a href=&quot;https://github.com/misyltoad/frog-protocols&quot;&gt;21&lt;/a&gt;&lt;/sup&gt; It can server as a fast-moving proving ground where protocols can be shipped, exercised by real users, and then folded back into the upstream process once the shape is clear.&lt;sup&gt;&lt;a href=&quot;https://github.com/misyltoad/frog-protocols&quot;&gt;22&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://www.gamingonlinux.com/2024/09/frog-protocols-announced-to-try-and-speed-up-wayland-protocol-development/&quot;&gt;23&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;One concrete example is &lt;code&gt;frog-fifo-v1.&lt;/code&gt; The stated goal is to address FIFO/VSync behavior under Wayland in cases where applications can end up in bad states (including GPU starvation and freezes when windows are occluded with FIFO/VSync enabled).&lt;sup&gt;&lt;a href=&quot;https://github.com/misyltoad/frog-protocols&quot;&gt;24&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Wayland also pairs well with another shift that makes the Linux desktop feel more coherent: the security and permissions model is getting a default path.&lt;/p&gt;
&lt;p&gt;Flatpak’s sandboxing model is restrictive by default, and portals provide a consistent interface for sensitive operations. That doesn’t make Linux magically secure, but it does move desktop Linux toward a platform model instead of a loose collection of conventions.&lt;sup&gt;&lt;a href=&quot;https://docs.flatpak.org/en/latest/sandbox-permissions.html&quot;&gt;25&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://docs.flatpak.org/pt-br/latest/basic-concepts.html&quot;&gt;26&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2&gt;Compatibility stops being a philosophical argument&lt;/h2&gt;
&lt;p&gt;I don’t think Linux wins because people suddenly care about freedom. I think it wins when the question becomes, “Can I run my stuff?”&lt;/p&gt;
&lt;p&gt;This is why I pay attention to the compatibility work.&lt;/p&gt;
&lt;p&gt;Wine’s Wayland driver work is a good example. The goal is to make Windows apps on Wayland a first-class path, not something that relies on legacy X11 behavior. When that upstream work matures, it reduces the amount of X11 surface area Linux desktops still need to keep around for compatibility.&lt;sup&gt;&lt;a href=&quot;https://www.collabora.com/news-and-blog/news-and-events/wine-on-wayland-a-year-in-review-and-a-look-ahead.html&quot;&gt;27&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;On the gaming side, SteamOS being treated as a product line matters too. It forces investment into Linux gaming as a first-class experience.&lt;sup&gt;&lt;a href=&quot;https://store.steampowered.com/steamos/&quot;&gt;28&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;A big reason that experience feels real now is Proton. Proton is a stack of translation layers and fixes that keep getting hammered into shape by real users at scale.&lt;sup&gt;&lt;a href=&quot;https://github.com/ValveSoftware/Proton&quot;&gt;29&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;But there’s one compatibility cliff that turns this into a very non-philosophical argument: kernel-level anti-cheat.&lt;/p&gt;
&lt;p&gt;A lot of competitive multiplayer games rely on anti-cheat systems designed around deep Windows integration, including kernel-level drivers. Call of Duty’s RICOCHET, for example, explicitly uses a PC kernel-level driver as part of its approach.&lt;sup&gt;&lt;a href=&quot;https://support.activision.com/no/articles/ricochet-overview&quot;&gt;30&lt;/a&gt;&lt;/sup&gt; In that world, it’s common for a game to run perfectly well under Proton, until matchmaking is blocked, the client is kicked, or the anti-cheat refuses to initialize.&lt;/p&gt;
&lt;p&gt;The frustrating part is that the ecosystem already has a workable pathway. Epic introduced Easy Anti-Cheat support for Linux, but enabling it is ultimately a developer or publisher choice.&lt;sup&gt;&lt;a href=&quot;https://onlineservices.epicgames.com/en-US/news/epic-online-services-launches-anti-cheat-support-for-linux-mac-and-steam-deck&quot;&gt;31&lt;/a&gt;&lt;/sup&gt; BattlEye has a similar story: Proton support exists, but it’s opt-in per game.&lt;sup&gt;&lt;a href=&quot;https://www.phoronix.com/news/BattlEye-Proton-Steam-Deck&quot;&gt;32&lt;/a&gt;&lt;/sup&gt; So you end up with a strange middle ground where compatibility is technically possible, culturally inconsistent, and commercially uncertain.&lt;/p&gt;
&lt;p&gt;This is why the discussion is hard: the incentives don’t line up cleanly. Studios don’t want to expand their attack surface for a relatively small slice of player base with full control over your system, and players don’t want to adopt a platform that locks them out of their most-played competitive titles.&lt;/p&gt;
&lt;p&gt;So yeah: it’s a chicken-and-egg problem. Companies are more likely to take Linux seriously when it’s a meaningful chunk of their revenue. But Linux only becomes a meaningful chunk of revenue if more people decide to use it anyway, even knowing that not every favorite game or app will work 100% on day one. That early tolerance is how market share grows.&lt;/p&gt;
&lt;p&gt;My bet is that the long-term escape hatch is less client trust and more server authority: more server-side validation, better telemetry, stronger behavior analysis, and maybe ML-assisted detection where it actually makes sense. But then you hit the question that decides everything: will the ROI ever justify the investment?&lt;/p&gt;
&lt;p&gt;I hope we have better answers by 2030.&lt;/p&gt;
&lt;h2&gt;PCs shipping with Linux stops feeling rare&lt;/h2&gt;
&lt;p&gt;Most people don’t install an OS. They buy whatever shows up on the machine.&lt;/p&gt;
&lt;p&gt;That’s why OEM momentum compounds. Dell shipping Ubuntu preinstalled on XPS Developer Edition models is a small example, but it’s the kind of thing that normalizes the idea that Linux can be the default.&lt;sup&gt;&lt;a href=&quot;https://infohub.delltechnologies.com/p/dell-xps-13-plus-developer-edition-with-ubuntu-22-04-lts-pre-installed/&quot;&gt;33&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://ubuntu.com/dell&quot;&gt;34&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;If that expands, more models, more regions, more validation, then the first-run experience becomes less fragile. And once first-run is predictable, word-of-mouth gets dramatically easier.&lt;/p&gt;
&lt;p&gt;A second-order effect is that rising interest in Linux makes it rational for some companies to treat the OS as part of the product, not just a removable software layer.&lt;/p&gt;
&lt;p&gt;System76 is the obvious reference point here: they sell hardware designed, tested, and supported around their own distro (Pop!_OS), and the preinstalled with a validated stack approach removes a lot of first-boot uncertainty for end users.&lt;sup&gt;&lt;a href=&quot;https://system76.com/pop/&quot;&gt;35&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://system76.com/&quot;&gt;36&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;You can see a similar dynamic starting to appear in handhelds. Valve has been explicitly expanding SteamOS beyond the Steam Deck, and Lenovo is shipping officially licensed third-party handhelds that come with SteamOS out of the box (Legion Go S, and now additional SteamOS-enabled models announced later).&lt;sup&gt;&lt;a href=&quot;https://store.steampowered.com/news/app/593110/view/529834914570306831&quot;&gt;37&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://www.theverge.com/news/673114/valves-huge-steam-deck-update-is-now-ready-for-everyone-including-rival-amd-handhelds&quot;&gt;38&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;From a business perspective, this kind of bundling can be attractive even before it becomes mainstream. In theory, if an OEM isn’t paying for a Windows license on a given SKU, they can choose to pass some of that margin to the buyer, keep it as profit, or reinvest it into support and validation.&lt;/p&gt;
&lt;h2&gt;The stuff I didn’t mention, but still matters&lt;/h2&gt;
&lt;p&gt;HDR belongs here, because it’s one of those features that exposes whether a desktop stack is actually modern.&lt;/p&gt;
&lt;p&gt;HDR on Linux has historically been blocked by missing standard plumbing: compositors need color management, clients need a way to describe their content, and the protocol layer needs to carry that information consistently.&lt;/p&gt;
&lt;p&gt;A big inflection point is that Wayland’s color management work finally landed upstream: the &lt;code&gt;color-management-v1&lt;/code&gt; protocol was reported as merged to upstream Wayland protocols in early 2025 after years of work.&lt;sup&gt;&lt;a href=&quot;https://www.phoronix.com/news/Wayland-CM-HDR-Merged&quot;&gt;39&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://www.collabora.com/news-and-blog/news-and-events/12-years-of-incubating-wayland-color-management.html&quot;&gt;40&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;From there, you start seeing user-facing desktop progress. GNOME 48 explicitly calls out the initial introduction of system-level HDR support, enabling HDR output for apps that support it.&lt;sup&gt;&lt;a href=&quot;https://release.gnome.org/48/&quot;&gt;41&lt;/a&gt;&lt;/sup&gt; KDE’s KWin work has also been documented publicly in detail, including practical aspects like brightness behavior and the constraints imposed by protocol maturity.&lt;sup&gt;&lt;a href=&quot;https://zamundaaa.github.io/wayland/2024/05/11/more-hdr-and-color.html&quot;&gt;42&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Another important development is System76’s COSMIC desktop environment, because it represents a serious attempt to modernize the Linux desktop stack end-to-end. COSMIC is Wayland-native and written in Rust, with its own toolkit (libcosmic with Iced-based UI stack) and a dedicated compositor, and System76 positions it as something you can use beyond Pop!_OS as well.&lt;sup&gt;&lt;a href=&quot;https://system76.com/cosmic&quot;&gt;43&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;This matters for the same reason HDR matters: features like color management, input, window management, and security properties are increasingly constrained by the assumptions baked into the compositor, toolkit and desktop shell layer. COSMIC is being developed as a cohesive stack, and it shipped as COSMIC Epoch 1 in Pop!_OS 24.04, with ongoing point releases and public tracking of compositor and shell changes.&lt;sup&gt;&lt;a href=&quot;https://github.com/pop-os/cosmic-epoch&quot;&gt;44&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://blog.system76.com/post/cosmic-epoch-1-updates/&quot;&gt;45&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Outside HDR and desktops, I keep thinking about ARM and Android app paths.&lt;/p&gt;
&lt;p&gt;ARM matters because desktop Linux isn’t just an x86 story anymore. Fedora Asahi Remix is a strong signal that the community is trying to turn Apple Silicon Linux into something that feels like a daily-driver system, not an experiment.&lt;sup&gt;&lt;a href=&quot;https://asahilinux.org/fedora/&quot;&gt;46&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://asahilinux.org/about/&quot;&gt;47&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Android app compatibility matters because it’s a practical safety net for certain workflows. Waydroid already runs Android in a Linux container across multiple architectures. And lately there’s been reporting that Valve is working on something called Lepton, apparently based on Waydroid, which could eventually make “Android apps on Linux” a more standardized option in gaming-adjacent setups.&lt;sup&gt;&lt;a href=&quot;https://waydro.id/&quot;&gt;48&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://www.gamingonlinux.com/2025/12/valves-version-of-android-on-linux-based-on-waydroid-is-now-called-lepton/&quot;&gt;49&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Monetization belongs here too. Right now, if you want to sell software to Linux users, you often end up routing around the Linux desktop’s fragmented storefront story. For games and software, the obvious defaults are Steam or itch.io, because they already provide payment rails, distribution, and discovery in a way that works cross-platform.&lt;sup&gt;&lt;a href=&quot;https://partner.steamgames.com/steamdirect&quot;&gt;50&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://itch.io/developers&quot;&gt;51&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Today, Flatpak and Flathub is the closest thing Linux has to a shared app store layer across distributions, but payments are still in the process of becoming a real, normal, user-facing default.&lt;/p&gt;
&lt;p&gt;Flathub has been pretty direct about what’s been missing: not just a checkout UI, but the legal and governance foundation needed to handle taxes, compliance, and cross-border transactions. They’ve described integrating Stripe and building the backend pieces for purchases and donations, but also that switching payments on in a broad, store-like way depends on organizational and legal readiness.&lt;sup&gt;&lt;a href=&quot;https://discourse.flathub.org/t/situation-report-new-flathub-website-work-app-verifications-logins-etc/2259&quot;&gt;52&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://discourse.flathub.org/t/flathub-in-2023/3808&quot;&gt;53&lt;/a&gt; &lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;https://docs.flathub.org/blog/over-one-million-active-users-and-growing&quot;&gt;54&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;And the direction is clearly toward Flathub becoming a place where money can move: Flathub leadership has said they plan to allow verified apps to require payments or solicit donations (with different commission assumptions depending on whether the software is proprietary or FLOSS).&lt;sup&gt;&lt;a href=&quot;https://discourse.flathub.org/t/request-for-proposals-flathub-program-management/8276&quot;&gt;55&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2&gt;Will 2030 actually be “the year”?&lt;/h2&gt;
&lt;p&gt;The &amp;#39;Year of the Linux Desktop&amp;#39; has always been a joke about winning the market. But 2030 isn&amp;#39;t about winning, it&amp;#39;s about functioning. The roadmap doesn&amp;#39;t show a magical flip in the charts. It shows something more important: the moment where the unified Nvidia stack and Wayland protocols finally make the OS boring enough to just use.&lt;/p&gt;
&lt;p&gt;This is where the timeline matters. By 2030, projects like Nova and the unified GSP firmware won&amp;#39;t just be experimental branches, they will be the default LTS standard. The anti-cheat battles will likely have shifted from client-side kernel wars to server-side validation or market dynamics will finally force developers to recognize the platform not as a niche, but as a revenue stream, and the fragmentation we complain about today will have largely settled into a coherent platform definition via Flatpak, Portals and FreeDesktop.&lt;/p&gt;
&lt;p&gt;I mentioned at the start that I bought a Mac in 2023 because it solved the friction of daily life. That is the real metric.&lt;/p&gt;
&lt;p&gt;Linux desktop doesn&amp;#39;t need to destroy Windows or replace macOS to win. It just needs to stop punishing the people who choose it. It needs to reach a point where the trade-off for freedom isn&amp;#39;t stability, but simply preference.&lt;/p&gt;
&lt;p&gt;The victory won&amp;#39;t look like 50% market share. It will look like something much quieter: it will be the year where installing Linux stops feeling like a brave political statement or a hobbyist experiment, and starts feeling like just buying a new computer.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I enjoyed writing this article so much that I&amp;#39;m now considering writing another one about the year of Mac gaming, lol.&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>Rebuilding after the pandemic — Part 2</title><link>https://viniciusnevescosta.com/blog/rebuilding-after-the-pandemic-part-2/</link><guid isPermaLink="true">https://viniciusnevescosta.com/blog/rebuilding-after-the-pandemic-part-2/</guid><description>How we took my final course project from messy ideas to a real product.</description><pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In &lt;a href=&quot;/blog/rebuilding-after-the-pandemic-part-1&quot;&gt;Part 1&lt;/a&gt;, I talked about the post-pandemic slump, how I rebuilt my discipline, and how that led to an award-winning project.&lt;/p&gt;
&lt;p&gt;This post is the second and final part of that story: how we built my final course project (TCC)—from the first half-baked ideas to the final delivery and presentation.&lt;/p&gt;
&lt;h2&gt;A classroom split in two&lt;/h2&gt;
&lt;p&gt;At my ETEC, our Systems Analysis and Development class had around 40 students, but the lab rooms couldn’t fit everyone comfortably.&lt;/p&gt;
&lt;p&gt;So the class was split into Side A and Side B—20 students each.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;odd numbers → Side A&lt;/li&gt;
&lt;li&gt;even numbers → Side B&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My name starts with V, which put me near the bottom of the list… and on Side A (this was still pre-pandemic).&lt;/p&gt;
&lt;p&gt;It sounds like a tiny detail, but it mattered later.&lt;/p&gt;
&lt;h2&gt;Watching TCCs during the pandemic&lt;/h2&gt;
&lt;p&gt;During the pandemic, we had a chance to watch TCC presentations from older classes finishing the course. I remember sitting there, in front of recorded videos and live chats, trying to understand what a “good” final project looked like.&lt;/p&gt;
&lt;p&gt;I asked teachers questions in the chat. I watched a bunch of projects. Little by little, I got a clear picture of the challenge:&lt;/p&gt;
&lt;p&gt;A TCC wasn’t “just an assignment”.&lt;/p&gt;
&lt;p&gt;It was a full project, with planning, scope, documentation, presentation, and delivery—and I’d have less than a year to study and build something worth defending in front of a panel.&lt;/p&gt;
&lt;p&gt;That reality hit me early.&lt;/p&gt;
&lt;p&gt;And honestly? It scared me in a good way.&lt;/p&gt;
&lt;h2&gt;Back to in-person&lt;/h2&gt;
&lt;p&gt;When we returned to in-person classes in 2022, the TCC conversations started almost immediately. This would be the first fully in-person TCC cycle in two years.&lt;/p&gt;
&lt;p&gt;The rules were pretty straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Build a project (real or fictional) for a business/institution&lt;/li&gt;
&lt;li&gt;Don’t charge for it&lt;/li&gt;
&lt;li&gt;Apply what we learned over the three years of the course&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Simple on paper.&lt;/p&gt;
&lt;p&gt;At the time, I wanted to do the project alone—not because I dislike teamwork, but because I wanted to &lt;em&gt;prove to myself&lt;/em&gt; I could carry a full project end-to-end.&lt;/p&gt;
&lt;p&gt;But there was a problem:&lt;/p&gt;
&lt;p&gt;Teams were mandatory.&lt;/p&gt;
&lt;p&gt;Teachers even said we could switch between Side A and Side B to form teams with people we worked well with. That’s when that classroom split from earlier came back.&lt;/p&gt;
&lt;p&gt;So I moved to Side B, grouped up with four friends, and we created our team:&lt;/p&gt;
&lt;h2&gt;Frog Developers (yes, there’s a story)&lt;/h2&gt;
&lt;p&gt;We named ourselves Frog Developers, and the origin is… extremely high school.&lt;/p&gt;
&lt;p&gt;Some students had a group they proudly called something like “the rat squad”. We had a tiny rivalry with them.&lt;/p&gt;
&lt;p&gt;So to mock it, our friend group became “the frog squad”. And when it came time to form a serious TCC team, Frog Developers was basically:&lt;/p&gt;
&lt;p&gt;A few “frog squad” friends who decided to ship a project together.&lt;/p&gt;
&lt;p&gt;Not exactly a startup origin story… but it worked.&lt;/p&gt;
&lt;h2&gt;The idea graveyard&lt;/h2&gt;
&lt;p&gt;Before we found our final project, we went through the classic phase:&lt;/p&gt;
&lt;p&gt;too many ideas, too little time.&lt;/p&gt;
&lt;h3&gt;Idea #1: a Brainly answer site (yeah… no)&lt;/h3&gt;
&lt;p&gt;My first idea—still during the pandemic—was a dynamic website that would query Brainly’s API and return answers to academic questions for students.&lt;/p&gt;
&lt;p&gt;I killed that idea pretty quickly. For obvious reasons.&lt;/p&gt;
&lt;p&gt;Also, it’s funny to think that about two years later, AI would basically become the “same thing” on a completely different scale. Life moves fast.&lt;/p&gt;
&lt;h3&gt;Idea #2: a condo administration system (too big)&lt;/h3&gt;
&lt;p&gt;My second idea was more legit: build a condo management system for a family friend.&lt;/p&gt;
&lt;p&gt;The users (building managers, caretakers, supervisors) would have daily task checklists like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;checking fire extinguishers&lt;/li&gt;
&lt;li&gt;elevator maintenance&lt;/li&gt;
&lt;li&gt;drainage system routines&lt;/li&gt;
&lt;li&gt;general inspections&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was useful… but the scope was massive. The more we mapped it, the clearer it became:&lt;/p&gt;
&lt;p&gt;We wouldn’t finish it in time.&lt;/p&gt;
&lt;p&gt;So we dropped it.&lt;/p&gt;
&lt;p&gt;And that decision taught me one of the most underrated project skills:&lt;/p&gt;
&lt;p&gt;Scope is everything.&lt;/p&gt;
&lt;h2&gt;Learning Vue at the right time&lt;/h2&gt;
&lt;p&gt;Around that period, I decided to learn a framework that was getting really popular: Vue 3.&lt;/p&gt;
&lt;p&gt;Vue felt different to me. More direct. More intuitive. Less friction than what I’d felt with React at the time.&lt;/p&gt;
&lt;p&gt;And most importantly:&lt;/p&gt;
&lt;p&gt;It felt like something I could use to build fast without sacrificing structure.&lt;/p&gt;
&lt;p&gt;So I committed to it.&lt;/p&gt;
&lt;p&gt;And that choice ended up saving our project.&lt;/p&gt;
&lt;h2&gt;The final idea&lt;/h2&gt;
&lt;p&gt;After a while, one member of the group brought a new idea:&lt;/p&gt;
&lt;p&gt;Build an inventory control system for a natural products store owned by the family of another student in the school.&lt;/p&gt;
&lt;p&gt;That’s when everything clicked.&lt;/p&gt;
&lt;p&gt;We defined something practical and clear:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Desktop + mobile system for internal stock control and daily operations&lt;/li&gt;
&lt;li&gt;A website for customers to check purchase-related information&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The problem?&lt;/p&gt;
&lt;p&gt;I was the only developer in the team.&lt;/p&gt;
&lt;p&gt;And we had less than three months left.&lt;/p&gt;
&lt;p&gt;But we looked at each other and basically said:&lt;/p&gt;
&lt;p&gt;Alright. Let’s do it anyway.&lt;/p&gt;
&lt;h2&gt;Building under pressure&lt;/h2&gt;
&lt;p&gt;Once the design was ready and I felt comfortable with Vue 3, I went into full execution mode.&lt;/p&gt;
&lt;p&gt;Somehow, I managed to finish the interface in less than one month.&lt;/p&gt;
&lt;p&gt;Then the real work started: turning screens into a product.&lt;/p&gt;
&lt;p&gt;Over the following days, I focused on the parts that make a system feel &lt;em&gt;real&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cloud data persistence&lt;/li&gt;
&lt;li&gt;state management&lt;/li&gt;
&lt;li&gt;routing&lt;/li&gt;
&lt;li&gt;portability to desktop and mobile&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It wasn’t glamorous. It was a lot of debugging, a lot of late nights, and a lot of “why is this breaking now?”&lt;/p&gt;
&lt;p&gt;But it moved.&lt;/p&gt;
&lt;p&gt;And each day it moved more.&lt;/p&gt;
&lt;h2&gt;The presentation&lt;/h2&gt;
&lt;p&gt;When we were just a few days away from presenting, we shifted into rehearsal mode. We practiced the delivery, planned who would say what, polished the narrative, and tried to make the presentation feel confident—not improvised.&lt;/p&gt;
&lt;p&gt;Then we had one final idea.&lt;/p&gt;
&lt;p&gt;Since the project was for a natural products business, we decided to bring small succulent seedlings as a gift for visitors and judges.&lt;/p&gt;
&lt;p&gt;It was a small detail, but it made the room warmer.&lt;/p&gt;
&lt;p&gt;More human. Less “school assignment.” More “real project.”&lt;/p&gt;
&lt;p&gt;And in the end?&lt;/p&gt;
&lt;p&gt;It worked.&lt;/p&gt;
&lt;p&gt;The teachers evaluating us said it was one of the best TCC presentations they had seen in 10 years.&lt;/p&gt;
&lt;p&gt;Their words.&lt;/p&gt;
&lt;p&gt;I still remember that moment because it didn’t feel like a grade.&lt;/p&gt;
&lt;p&gt;It felt like recognition.&lt;/p&gt;
&lt;h2&gt;The lesson that closed the chapter&lt;/h2&gt;
&lt;p&gt;Looking back, the technical part mattered—but the real lessons were bigger:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A good project is a scoped project;&lt;/li&gt;
&lt;li&gt;The right tools at the right time are leverage;&lt;/li&gt;
&lt;li&gt;Execution beats perfect planning;&lt;/li&gt;
&lt;li&gt;Presentation is part of the product.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But the biggest takeaway of that year wasn’t even technical.&lt;/p&gt;
&lt;p&gt;It was personal.&lt;/p&gt;
&lt;p&gt;Between the post-pandemic slump, the award-winning prototype, and the final project under pressure, I rebuilt something I thought I had lost: discipline, focus, and the ability to deliver.&lt;/p&gt;
&lt;p&gt;And that’s why I like to revisit this story.&lt;/p&gt;
&lt;p&gt;Because none of it happened by accident.&lt;/p&gt;
&lt;p&gt;It happened because I made a decision back in 2021: to stop running from discomfort and start building a future I actually wanted.&lt;/p&gt;
&lt;p&gt;Effort pays you back.&lt;/p&gt;
&lt;p&gt;Sometimes with skills. Sometimes with confidence. Sometimes with recognition.&lt;/p&gt;
&lt;p&gt;But it always pays you back.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/projects/frogdevs&quot;&gt;Technical overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.instagram.com/frogdevs/&quot;&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Rebuilding after the pandemic — Part 1</title><link>https://viniciusnevescosta.com/blog/rebuilding-after-the-pandemic-part-1/</link><guid isPermaLink="true">https://viniciusnevescosta.com/blog/rebuilding-after-the-pandemic-part-1/</guid><description>How I bounced back after the pandemic and built an award-winning project.</description><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I like to think of 2022 as the year I proved something to myself: I could lose my way, rebuild my habits, and still create something meaningful.&lt;/p&gt;
&lt;p&gt;In fact, that year took me from a post-pandemic slump to an award-winning project—and the path between those two points taught me more than any class ever did.&lt;/p&gt;
&lt;p&gt;This post is Part 1 of two stories from that year. Here, I’ll talk about my post-pandemic slump, what it did to me, and how I turned things around through a ridiculously ambitious project that ended up being recognized and awarded.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/rebuilding-after-the-pandemic-part-2&quot;&gt;Part 2&lt;/a&gt; will be about executing my final course project.&lt;/p&gt;
&lt;h2&gt;The ETEC dream&lt;/h2&gt;
&lt;p&gt;In the state of São Paulo, ETECs are known for offering high-quality public technical education. Back in 2019 (my last year of middle school), I had one clear goal: pass the ETEC entrance exam.&lt;/p&gt;
&lt;p&gt;My routine was intense but simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;school in the morning&lt;/li&gt;
&lt;li&gt;lunch at home&lt;/li&gt;
&lt;li&gt;a nap&lt;/li&gt;
&lt;li&gt;studying in the afternoon&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I kept that pace for months, took the exam at the end of the year, and in early 2020 I got the news: I was accepted.&lt;/p&gt;
&lt;p&gt;I was about to start high school combined with a technical program in Systems Analysis and Development—exactly what I’d always wanted. 2019 had been great, so why would anything go wrong from there… right?&lt;/p&gt;
&lt;p&gt;Right?&lt;/p&gt;
&lt;h2&gt;When the world closed (and so did I)&lt;/h2&gt;
&lt;p&gt;Early 2020 brought news that still felt far away: a few cases of a new virus in China. Like most people, I didn’t understand what it would become.&lt;/p&gt;
&lt;p&gt;Then it went from a “small situation” to an epidemic, and from an epidemic to a global pandemic. Suddenly everything changed: isolation, masks, remote work, remote classes—life reorganized around minimizing contact.&lt;/p&gt;
&lt;p&gt;And for a long time, my world shrank to one place: my room.&lt;/p&gt;
&lt;p&gt;Studying from home didn’t feel like studying. Some classes were recorded. Interaction with teachers often happened through chat. I barely interacted with other students.&lt;/p&gt;
&lt;p&gt;To make it worse, my phone was broken—so I couldn’t even text properly. No hobbies. No healthy distractions. Just me, a computer, and assignments.&lt;/p&gt;
&lt;p&gt;My motivation collapsed.&lt;/p&gt;
&lt;h2&gt;The gaming loop&lt;/h2&gt;
&lt;p&gt;I fell into a pattern that felt harmless at first and slowly turned into a trap: gaming became my escape.&lt;/p&gt;
&lt;p&gt;Hours and hours of Minecraft, Rocket League, and whatever else helped me unplug from the day. I still submitted assignments—but I did them fast, often pulling answers from the internet, just to get back to playing.&lt;/p&gt;
&lt;p&gt;The scary part?&lt;/p&gt;
&lt;p&gt;It “worked.”&lt;/p&gt;
&lt;p&gt;I turned things in, got decent grades, and stayed safe on paper—even while my discipline and ambition quietly disappeared.&lt;/p&gt;
&lt;p&gt;At some point, I couldn’t ignore it anymore.&lt;/p&gt;
&lt;h2&gt;I admitted the truth&lt;/h2&gt;
&lt;p&gt;I realized I was wasting my potential. I wasn’t the dedicated student I used to be. And even though the world was in crisis, I knew that if I didn’t change something, I’d come out of that period as a weaker version of myself.&lt;/p&gt;
&lt;p&gt;So at the end of 2021, I made a decision:&lt;/p&gt;
&lt;p&gt;I would recover the lost time and actually study what I had dreamed of for years—software development.&lt;/p&gt;
&lt;h2&gt;Rebuilding myself through code&lt;/h2&gt;
&lt;p&gt;I started watching the recorded classes I had ignored. I took free online courses. I created personal projects. I learned and practiced:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTML / CSS / JavaScript&lt;/li&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;VB.NET&lt;/li&gt;
&lt;li&gt;SQL&lt;/li&gt;
&lt;li&gt;and I even installed Linux (Pop!_OS)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;More importantly, I learned something I wish I’d understood earlier:&lt;/p&gt;
&lt;p&gt;Effort pays you back.&lt;/p&gt;
&lt;p&gt;It wasn’t always fun, and it wasn’t always easy—but little by little, I got that feeling of progress back. The &lt;em&gt;I’m building something&lt;/em&gt; feeling.&lt;/p&gt;
&lt;p&gt;That change came with a cost: I spent less time with friends because I wasn’t gaming as much anymore. And honestly, Linux wasn’t exactly great for gaming back then.&lt;/p&gt;
&lt;p&gt;But looking back, it was 100% worth it.&lt;/p&gt;
&lt;h2&gt;Back to school and the real world&lt;/h2&gt;
&lt;p&gt;In 2022, the school adopted hybrid teaching—and by March, we were back in person.&lt;/p&gt;
&lt;p&gt;Mid-year, our school received an invitation to participate in an event promoted by an organization called Ideias de Futuro, in partnership with the São Paulo government and Google. The challenge was simple in concept and huge in impact:&lt;/p&gt;
&lt;p&gt;Build a tech solution that could help people in the city.&lt;/p&gt;
&lt;p&gt;I knew I had to be part of it.&lt;/p&gt;
&lt;p&gt;I invited a friend—another aspiring developer—and we joined as a team.&lt;/p&gt;
&lt;h2&gt;A problem that was actually real&lt;/h2&gt;
&lt;p&gt;In events like this, many projects revolve around environmental themes or broad community topics. Those are important, but I didn’t want to build something generic. I wanted something tied to a real pain point.&lt;/p&gt;
&lt;p&gt;Then I remembered a problem I had personally lived with:&lt;/p&gt;
&lt;p&gt;For over 10 years, I used basically the same password across multiple accounts.&lt;/p&gt;
&lt;p&gt;And I realized I wasn’t alone. A lot of people do the same thing because it’s easier, because they’re overwhelmed, or because they don’t think it’ll happen to them.&lt;/p&gt;
&lt;p&gt;That’s not just a bad habit. That’s a security risk.&lt;/p&gt;
&lt;p&gt;So I suggested we build a password manager and present it as our solution.&lt;/p&gt;
&lt;p&gt;My friend loved the idea.&lt;/p&gt;
&lt;p&gt;We named the project Criptphy.&lt;/p&gt;
&lt;p&gt;We worked hard enough to deliver a prototype and record a video pitch. We submitted it and waited.&lt;/p&gt;
&lt;p&gt;A week later, the results came out:&lt;/p&gt;
&lt;p&gt;We were selected.&lt;/p&gt;
&lt;p&gt;That meant we’d present the project at the Ideias de Futuro center, in front of journalists, judges, and government representatives.&lt;/p&gt;
&lt;p&gt;No pressure, right?&lt;/p&gt;
&lt;h2&gt;The presentation day&lt;/h2&gt;
&lt;p&gt;We went there representing our school. The atmosphere felt bigger than anything we had done before. Professional. Serious. Real.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/blog/rebuilding-after-the-pandemic-part-1/presenting.jpeg&quot; alt=&quot;Presenting&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Presenting Criptphy project.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/blog/rebuilding-after-the-pandemic-part-1/the-jury.jpeg&quot; alt=&quot;The Jury&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;The jury panel during the event.&lt;/p&gt;

&lt;p&gt;And then the results:&lt;/p&gt;
&lt;p&gt;Our school won almost all the awards overall—and we were part of that story.&lt;/p&gt;
&lt;p&gt;Criptphy won 2nd place in the Development category.&lt;/p&gt;
&lt;p&gt;And we received a Kindle as a prize.&lt;/p&gt;
&lt;p&gt;It wasn’t just a trophy moment. It was proof—proof that all those nights of studying, all those boring days where discipline mattered more than motivation, had built something inside me.&lt;/p&gt;
&lt;h2&gt;The lesson I was missing&lt;/h2&gt;
&lt;p&gt;Winning 2nd place wasn’t the point.&lt;/p&gt;
&lt;p&gt;The point was realizing that I could come back—that discipline wasn’t “gone”, it was just buried under comfort, fear, and routine.&lt;/p&gt;
&lt;p&gt;That project proved something simple but powerful:&lt;/p&gt;
&lt;p&gt;I wasn’t stuck. I was just untrained again.&lt;/p&gt;
&lt;p&gt;And once I started putting in the work consistently, things moved—skills, confidence, momentum.&lt;/p&gt;
&lt;p&gt;But 2022 wasn’t done teaching me.&lt;/p&gt;
&lt;p&gt;Because right after that… came the biggest challenge of the entire course: my final project.&lt;/p&gt;
&lt;p&gt;And that’s what &lt;a href=&quot;/blog/rebuilding-after-the-pandemic-part-2&quot;&gt;Part 2&lt;/a&gt; is about.&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;/projects/criptphy&quot;&gt;Technical overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.instagram.com/criptphy&quot;&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Thoughts about 2025</title><link>https://viniciusnevescosta.com/blog/thoughts-about-2025/</link><guid isPermaLink="true">https://viniciusnevescosta.com/blog/thoughts-about-2025/</guid><description>The year I learned to slow down.</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2025 was an important year for me.&lt;/p&gt;
&lt;p&gt;It was a year with two sides: real achievements that made me proud, and challenges that forced me to grow.&lt;/p&gt;
&lt;p&gt;Looking back now, I can see how much changed, not only in what I did day to day, but also in how I learned to deal with pressure, uncertainty, and my own expectations.&lt;/p&gt;
&lt;h2&gt;From support to developer&lt;/h2&gt;
&lt;p&gt;My professional story didn’t start with a “developer” title.&lt;/p&gt;
&lt;p&gt;In my first job, I joined the company on the IT infrastructure side. My work was mostly about enabling other people to do their jobs: providing technical support, managing assets, handling platforms, stepping in when something broke or when someone needed help. It was a solid foundation, and I spent two years in that world.&lt;/p&gt;
&lt;p&gt;But at the end of 2024, something shifted. I was moved internally into solution development.&lt;/p&gt;
&lt;p&gt;That made 2025 my first full year as a developer.&lt;/p&gt;
&lt;p&gt;And it was a very different rhythm.&lt;/p&gt;
&lt;p&gt;Suddenly, I wasn’t just keeping systems running, I was building things that didn’t exist yet. I had to learn how the work actually moves from an idea to something a user can rely on. I dealt with delivery plans, sprints, user stories, features, bug fixes, the whole cycle.&lt;/p&gt;
&lt;p&gt;If I had to summarize my biggest work-related learning from 2025, it would be this: organization is not optional.&lt;/p&gt;
&lt;p&gt;An idea doesn’t become a working product just because it’s a good idea. It has to travel through many steps: planning, breaking down, prioritizing, refining, implementing, testing, adjusting.&lt;/p&gt;
&lt;p&gt;I learned that progress depends on structure, and structure is what keeps the team, and my own mind, from drowning in chaos.&lt;/p&gt;
&lt;h2&gt;A year of studying&lt;/h2&gt;
&lt;p&gt;Outside of work, 2025 was study-heavy.&lt;/p&gt;
&lt;p&gt;I studied math. I studied programming languages more deeply. And I studied for a college entrance exam.&lt;/p&gt;
&lt;p&gt;It wasn’t just “a bit of studying,” either it was a huge portion of my year. Some days felt like I had two full-time jobs: work during the day, preparation at night.&lt;/p&gt;
&lt;p&gt;So… what did I get out of it?&lt;/p&gt;
&lt;p&gt;A lot.&lt;/p&gt;
&lt;p&gt;I passed the entrance exam, one of the clearest wins of my year. Studying math helped me directly during subjects in my first semester. And going deeper into programming languages helped my team deliver a system by the end of the year.&lt;/p&gt;
&lt;p&gt;I want to write about that system later, because it taught me a lot.&lt;/p&gt;
&lt;h2&gt;Anxiety was part of the package&lt;/h2&gt;
&lt;p&gt;With all that pressure, anxiety showed up, often.&lt;/p&gt;
&lt;p&gt;And honestly, it makes sense. My brain was constantly trying to do everything at once: give my best to pass the exam, while also staying sharp and reliable at work.&lt;/p&gt;
&lt;p&gt;That kind of mental load doesn’t disappear just because you “try harder.”&lt;/p&gt;
&lt;p&gt;It didn’t just affect my productivity, either. At times, anxiety got in the way of my interactions with the people around me.&lt;/p&gt;
&lt;p&gt;I was more irritable, more distracted, and more “in my head” than I wanted to be, and that made me realize I needed to take this seriously, not just push through it.&lt;/p&gt;
&lt;p&gt;So I had to learn how to calm down in real, practical ways, not just motivational advice.&lt;/p&gt;
&lt;p&gt;One of the best decisions I &lt;a href=&quot;/photos/guararema&quot;&gt;made was taking a trip in the middle of the year&lt;/a&gt;, during my vacation, to the countryside. Slowing down for a while helped me breathe again.&lt;/p&gt;
&lt;p&gt;Another change was simpler but powerful: I started going for walks every morning. Nothing extreme, just consistent movement, fresh air, and time to be with my thoughts without screens or deadlines.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blog/i-deleted-all-my-social-media-accounts&quot;&gt;I deleted my social media accounts&lt;/a&gt; and I picked up photography as a new hobby.&lt;/p&gt;
&lt;p&gt;But most importantly, I sought professional help.&lt;/p&gt;
&lt;p&gt;That step mattered. It taught me that asking for support isn’t weakness. It’s maintenance.&lt;/p&gt;
&lt;h2&gt;2026&lt;/h2&gt;
&lt;p&gt;2025 gave me achievements I’m proud of.&lt;/p&gt;
&lt;p&gt;It also gave me problems that taught me lessons I needed.&lt;/p&gt;
&lt;p&gt;I became a developer. I proved to myself I can study hard and reach a goal that once felt far away. And I faced a lot of anxiety.&lt;/p&gt;
&lt;p&gt;For 2026, I have one goal.&lt;/p&gt;
&lt;p&gt;Balance my new responsibilities well, and to keep progressing, but at my pace.&lt;/p&gt;
&lt;p&gt;No rush. No constant sprint. No living as if everything is an emergency.&lt;/p&gt;
&lt;p&gt;I want consistency, not chaos.&lt;/p&gt;
&lt;p&gt;Because if 2025 taught me anything, it’s that growth doesn’t have to come from pressure alone.&lt;/p&gt;
&lt;p&gt;It can also come from patience, structure, and learning to move forward without burning out. And that’s exactly the kind of days I want to build now.&lt;/p&gt;
&lt;p&gt;Slow is still forward.&lt;/p&gt;
</content:encoded></item><item><title>This website</title><link>https://viniciusnevescosta.com/projects/this-website/</link><guid isPermaLink="true">https://viniciusnevescosta.com/projects/this-website/</guid><description>The story behind my personal website and why I keep coming back to it.</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Since I started learning programming, development, and design back in 2019, I’ve always wanted to build my own personal website. I wanted a place to showcase my skills, track what I was learning, share my projects, and publish thoughts and opinions — something that felt truly mine.&lt;/p&gt;
&lt;p&gt;And I actually did it… a few times. Each version reflects a different stage of my journey:&lt;/p&gt;
&lt;h2&gt;My first page&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/this-website/my-first-page.png&quot; alt=&quot;My First Page&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/this-website/my-first-page-2.png&quot; alt=&quot;My First Page 2&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p&gt;This was my very first website — and also my first contribution on GitHub. It started as a school project: simple HTML and basically no real understanding of CSS. At the time, I was excited just to have something online, but it didn’t take long for me to feel like it wasn’t “me” yet. It worked, but it looked rough, and I knew I could do better.&lt;/p&gt;
&lt;h2&gt;My history page&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/this-website/my-second-page.png&quot; alt=&quot;My Second Page&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/this-website/my-second-page-2.png&quot; alt=&quot;My Second Page 2&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p&gt;Not long after, I made a second version — also for school. It still didn’t have much CSS (I was learning slowly), but I tried to be more creative with the idea. I wanted to tell a story, not just display information. It was definitely an improvement, but I still wasn’t satisfied. I could feel the gap between what I imagined and what I was able to build.&lt;/p&gt;
&lt;h2&gt;My portfolio&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/this-website/my-third-page.png&quot; alt=&quot;My Third Page&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/this-website/my-third-page-2.png&quot; alt=&quot;My Third Page 2&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p&gt;This one was different: it wasn’t for school — it was personal. By then, I finally had a better grasp of CSS, and I could build layouts that looked intentional. I used this website for a while and it did its job as a portfolio, but deep down I still felt it was incomplete. Something about it didn’t fully represent where I wanted to go.&lt;/p&gt;
&lt;h2&gt;This website&lt;/h2&gt;
&lt;p&gt;Eventually, I decided to start over again — this time with a custom template and a clearer concept.&lt;/p&gt;
&lt;p&gt;Life also changed. I had new responsibilities, less free time, and I had to rethink what I actually wanted from a personal website. Over time, I learned a lot more: better design decisions, better organization, better tools, better standards — and a better understanding of myself as a developer.&lt;/p&gt;
&lt;p&gt;Now, for the first time, I can honestly say I’m completely satisfied with it.&lt;/p&gt;
&lt;p&gt;This website is not just a portfolio anymore. It’s a living space: a home for my work, my notes, my experiments, and the things I care about — built slowly, intentionally, and with more meaning than any version before.&lt;/p&gt;
</content:encoded></item><item><title>Canas &amp; Cunha</title><link>https://viniciusnevescosta.com/photos/canas-and-cunha/</link><guid isPermaLink="true">https://viniciusnevescosta.com/photos/canas-and-cunha/</guid><description>Mountains, countryside, and Kiko.</description><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;At the end of the year, my family decided to visit some relatives who live in the countryside. We traveled with a couple of friends, and after about four hours on the road, we arrived in a small town called Canas.&lt;/p&gt;
&lt;p&gt;After spending the night there, we headed to another small town named Cunha, about an hour away. Cunha sits high up, surrounded by mountains, and we spent most of our time in the rural area. It was a special kind of trip for me — I hadn’t been around farm animals since I was a kid.&lt;/p&gt;
&lt;p&gt;That’s also where I met Kiko, a super friendly dog whose name was inspired by the character from Chaves. His favorite game was grabbing plastic bottles and bringing them to us so we could throw them, and he could run after them and bring them back again. Kiko ended up becoming part of the trip, and he’ll always be remembered in the photos I took.&lt;/p&gt;
&lt;p&gt;One day, I want to come back and hike up Pedra da Macela — they say you can see the sea from the top.&lt;/p&gt;


&lt;h2&gt;Photos&lt;/h2&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103593536-66d55829db5a?q=80&amp;w=1740&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Landscape&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103591138-624d7b7bb3c2?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Rose&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103845243-2ef0c85446a4?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Brown cow&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103592863-74520b370579?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Man and nature&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103844971-19862f9d6d66?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sleepy kitten&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103844384-4fbda7de29dc?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;White bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103843498-e85a79ab210d?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;White bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103594197-3d0a4d548091?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Landscape&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103846133-00c5db646ce8?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Chicken and her chicks&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103596048-2dd42f7a7400?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flowers&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103591349-18c11200d683?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Green apples&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103843191-5fc1e2c51ac8?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;White bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842808-db41427925e2?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bulls and cows&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103596183-1e2b8f77be61?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Decorative toucan&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842661-4e36a6dd3126?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Feeding the animals&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103844436-1866dd4481d0?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;White bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842790-04b80f9da850?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bulls and cows&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103593431-5fed3565f994?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Birds flywing&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842315-ea0f2239aa90?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Calf&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103590467-18dcc2852a64?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cloudy sky&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103596405-3163ece580e6?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Decorative bike&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103593977-217ae79c9de3?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Fance and nature&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103593200-e4ed064f7a02?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Landscape&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103845126-8a4da2ffc1fb?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sleepy kitten&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103843338-888d4089fa5a?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cow&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103594338-137ec78f52bc?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Landscape&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842527-dc383cda5203?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Feeding animals&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103845065-06a4686af279?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sleepy kitten&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842968-986c35680fca?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cow&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103843975-ccd8ecc7f706?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103844966-4bb95ada533b?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cat&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103595008-dd6150766e5a?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;My friend Kiko&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103590896-b2fec2d650c4?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Roses&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103595075-ff3d92bdc49e?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;My friend Kiko&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103843432-649eb64132db?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cow&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103843277-453cdfee20cc?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103591401-89ce23f47481?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Family&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103595846-282a3fd21dca?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103843293-bb4e7b1eb5e6?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103593365-36141fcc6d45?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Fance and landscape&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103844248-c2594a45ebfe?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103595190-59de48c750da?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Dirt street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103845865-a933fd3673b5?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103594119-a49c5a9c0b81?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cows and bulls&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103591251-19c2383f41ca?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Apples&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103596980-5beecb34fec5?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;My friend Kiko&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103593497-0d8defa2dfb8?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sun light&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103593659-858f0a715f32?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Dirt street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103843495-de2260778d01?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103844653-1d4668926d90?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sleepy kitten&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103844553-1e6a993dadc3?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cow&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103590664-21f5969b4a72?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Red flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842404-1092e921c1c3?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Calf&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103593864-8e79b9fbd94e?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;White horse&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842485-557c84685779?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Calf and chickens&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103594274-b0ec04506d84?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cow and bulls&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103590723-cb7eeb00140f?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Traffic sign&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842393-1de715eb9c10?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Calf&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103843605-3930472a1b6c?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103842913-b9a25a2bf5a0?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bull&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103590508-09b706d4b881?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103594417-cfe9a0a6e542?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Dirt street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103590574-19a48fdd63d4?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Small town&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103591009-211ec9aaaf2f?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Rose&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103594717-1f7fc9926637?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;My friend Kiko&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103591284-bf4de3e55ff2?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Apples&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103591215-66bb4529a836?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Apples&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103590605-6f96499e19c5?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Red flowers&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103591022-aa2234025fae?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Rose&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103590442-c5c3c57093f1?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103592048-43cdfe4713c0?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Birds home&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103590768-f0c4cc7e3c80?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Dirt street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;</content:encoded></item><item><title>Building an AI SaaS with Nuxt</title><link>https://viniciusnevescosta.com/projects/nuxt-ai-saas/</link><guid isPermaLink="true">https://viniciusnevescosta.com/projects/nuxt-ai-saas/</guid><description>What I learned shipping an internal multi-model AI tool.</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2025 was my first year as a developer. And as I mentioned &lt;a href=&quot;/blog/thoughts-about-2025&quot;&gt;here&lt;/a&gt;, it wasn’t an easy year. Without going into too much detail, I went through several management changes throughout the year—which, unsurprisingly, disrupted continuity and made it harder to keep our roadmap moving forward.&lt;/p&gt;
&lt;p&gt;Still, near the end of the year, we managed to deliver an internal AI project. I can’t share the repository because it isn’t open source and was built exclusively for the company. Even so, I think it’s worth writing about, because I learned a lot from the process.&lt;/p&gt;
&lt;h2&gt;Project scope&lt;/h2&gt;
&lt;p&gt;The initial scope was to build an application where users could:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interact with multiple AI models&lt;/li&gt;
&lt;li&gt;Create and use custom agents based on those models&lt;/li&gt;
&lt;li&gt;Have administrators manage access profiles, create user groups, add users, and register external AI models using API keys&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We had a little under a month and a half to deliver a pilot that would be presented to headquarters in Spain. So I immediately met with my manager to share a few ideas.&lt;/p&gt;
&lt;h2&gt;Architecture and approach&lt;/h2&gt;
&lt;p&gt;I suggested we build a full-stack interface and a backend. The client would communicate through a proxy layer and connect to a RESTful API on the server. That API would then interact with local models via Ollama and persist data in a PostgreSQL database.&lt;/p&gt;
&lt;p&gt;I was responsible for the interface, and I chose &lt;a href=&quot;https://nuxt.com/&quot;&gt;Nuxt&lt;/a&gt;—a meta-framework for &lt;a href=&quot;https://vuejs.org/&quot;&gt;Vue.js&lt;/a&gt; that I hadn’t used professionally before, but already knew about. And honestly: working with Nuxt and its ecosystem ended up being one of the best decisions for this kind of application.&lt;/p&gt;
&lt;h2&gt;Prototyping and UI development&lt;/h2&gt;
&lt;p&gt;As soon as we aligned on the direction in a closed-room session, I started thinking about screen prototypes. I’m not a web designer, and my design knowledge is limited, but a couple of tools helped a lot: &lt;a href=&quot;https://v0.app/&quot;&gt;v0&lt;/a&gt; and &lt;a href=&quot;https://www.figma.com/make/&quot;&gt;Figma Make&lt;/a&gt;. They can generate complete interfaces—from design to code—but I didn’t plan to reuse their code directly. I used them mainly as guidance and inspiration.&lt;/p&gt;
&lt;p&gt;For the actual development, I started from an official dashboard template from &lt;a href=&quot;https://ui.nuxt.com/&quot;&gt;NuxtUI&lt;/a&gt;. Then I customized it, taking inspiration from the UI outputs generated by the tools above. One of the great things about Nuxt is that it uses file-based routing by default—so as you create pages, routes are automatically created as well.&lt;/p&gt;
&lt;p&gt;And of course, I used AI throughout the process to speed up implementation. With that support, I finished the static UI in five days. After that, I began turning the interface into a dynamic application by integrating it with local data and real APIs. I implemented composables to manage state across components and pages.&lt;/p&gt;
&lt;h2&gt;A clean integration pattern&lt;/h2&gt;
&lt;p&gt;As my manager delivered the backend APIs, my job was mostly to wire the Nuxt proxy into the composables using a consistent pattern:&lt;/p&gt;
&lt;p&gt;Component → Page → Composable → Proxy / BFF&lt;/p&gt;
&lt;p&gt;This approach kept maintenance simple: each module had a single responsibility, and it became much harder to accidentally break the client.&lt;/p&gt;
&lt;h2&gt;Rendering AI output safely&lt;/h2&gt;
&lt;p&gt;Another interesting challenge was formatting model outputs. Most responses came back as Markdown—but the raw output looked “unstyled,” almost like plain text. So I decided to render Markdown as HTML for a better reading experience.&lt;/p&gt;
&lt;p&gt;That introduced its own challenges: beyond improving visuals, I needed a sanitizer to prevent any malicious HTML from being injected into the UI.&lt;/p&gt;
&lt;p&gt;Writing a Markdown renderer from scratch would be exhausting and time-consuming, so I looked for existing solutions—and, unsurprisingly, the Nuxt ecosystem already had a strong option: &lt;a href=&quot;https://nuxt.com/modules/mdc&quot;&gt;Nuxt MDC&lt;/a&gt;. It gave me everything I needed, and the moment I rendered the first response properly, I was reminded how mature the ecosystem is.&lt;/p&gt;
&lt;p&gt;I even started rendering LaTeX as mathematical equations and Mermaid as diagrams, since MDC supports plugins that make this kind of extension straightforward.&lt;/p&gt;
&lt;h2&gt;Final result and takeaways&lt;/h2&gt;
&lt;p&gt;So what did we end up with? Not just a prototype to present, but a tool that was already minimally functional. We didn’t implement every final feature—but we didn’t need to for the pilot. It was enough to demonstrate value clearly.&lt;/p&gt;
&lt;p&gt;This experience also reinforced something I strongly believe: the idea that AI will “steal developer jobs” doesn’t match reality—at least not in the way people claim. What worked best for us was treating AI as a copilot: I guided it, reviewed decisions, and took control whenever needed.&lt;/p&gt;
&lt;p&gt;Even if we get to a future with extremely powerful AI, someone will still need to steer it, apply judgment, and make trade-offs—whether the task is small or large.&lt;/p&gt;
&lt;p&gt;My main takeaway from this project is simple: don’t be afraid to use the right tools for the job. Learn them, leverage them, and use them to your advantage.&lt;/p&gt;
</content:encoded></item><item><title>I deleted all my social media accounts</title><link>https://viniciusnevescosta.com/blog/i-deleted-all-my-social-media-accounts/</link><guid isPermaLink="true">https://viniciusnevescosta.com/blog/i-deleted-all-my-social-media-accounts/</guid><description>I chose peace over engagement.</description><pubDate>Fri, 10 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A few days ago, I made a decision that felt both scary and freeing: I deleted all of my social media accounts.&lt;/p&gt;
&lt;p&gt;Instagram. Facebook. Twitter. Reddit. Bluesky. Mastodon… all gone.&lt;/p&gt;
&lt;p&gt;I didn’t do it because I “hate” social media or because I think everyone should quit. I did it because I noticed something simple and uncomfortable: I wasn’t feeling good when I used them. And that was enough.&lt;/p&gt;
&lt;h2&gt;Instagram: the invisible script I never agreed to&lt;/h2&gt;
&lt;p&gt;Instagram was the biggest one for me.&lt;/p&gt;
&lt;p&gt;Whenever I opened the app, I felt like I was supposed to behave in a certain way, like there was a social script I had to follow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Post photos constantly;&lt;/li&gt;
&lt;li&gt;Share everything in Stories;&lt;/li&gt;
&lt;li&gt;Post what music I’m listening to;&lt;/li&gt;
&lt;li&gt;Get more followers;&lt;/li&gt;
&lt;li&gt;Like generic things so I stay “present”.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Even when I wasn’t doing any of that, the pressure was still there. It felt like the platform was quietly pushing me toward performance.&lt;/p&gt;
&lt;p&gt;And honestly, Instagram seems designed to highlight only the best parts of life. People post vacations, achievements, beautiful moments, perfect angles, perfect smiles. After a while, it creates this fake atmosphere where everyone’s life looks flawless.&lt;/p&gt;
&lt;p&gt;Mine isn’t flawless. It’s not supposed to be. And pretending it is—either by posting or by comparing—just didn’t feel healthy.&lt;/p&gt;
&lt;p&gt;Looking at other people’s lives often made me feel worse. Not because of them, but because of the constant comparison. It’s hard to stay grounded when your brain is being fed a never-ending stream of “look how great this is.”&lt;/p&gt;
&lt;p&gt;On top of all that, it’s pretty clear these platforms use mechanisms to keep us scrolling for as long as possible, that&amp;#39;s how they make money, btw. And I could feel it working on me.&lt;/p&gt;
&lt;h2&gt;Reddit: organic, anonymous… and addictive&lt;/h2&gt;
&lt;p&gt;Reddit was different.&lt;/p&gt;
&lt;p&gt;It’s a curious case because it promotes anonymity and organic interaction. In theory, it’s less about image and more about communities. And that’s exactly what made it dangerous for me.&lt;/p&gt;
&lt;p&gt;The subreddits I followed were genuinely good. I learned a lot. I laughed a lot. I found tutorials, stories, discussions, and niche topics I truly enjoy.&lt;/p&gt;
&lt;p&gt;But that’s the problem: it became too easy to get hooked.&lt;/p&gt;
&lt;p&gt;I would check it constantly. A quick look would turn into another post, then another, then another. It stole my focus in a way that didn’t look toxic at first—but it definitely was draining my attention over time.&lt;/p&gt;
&lt;h2&gt;The only “social” platforms I still keep&lt;/h2&gt;
&lt;p&gt;Right now, I only kept a few—and with clear boundaries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LinkedIn: I only log in to update my professional information;&lt;/li&gt;
&lt;li&gt;GitHub (for now): it has some social mechanics, but I use it to contribute to open source and publish my projects;&lt;/li&gt;
&lt;li&gt;YouTube: I follow creators I consider more organic. Videos take longer to come out, but they’re usually higher quality and a good starting point to learn something new;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The result: less anxiety, more peace&lt;/h2&gt;
&lt;p&gt;After deleting everything, something changed almost immediately.&lt;/p&gt;
&lt;p&gt;I started feeling less worried about missing out, less concerned about engagement, less mentally tied to what other people might be posting or thinking.&lt;/p&gt;
&lt;p&gt;It wasn’t like my life suddenly became perfect. It just became quieter. More mine.&lt;/p&gt;
&lt;p&gt;And honestly? It feels like a one-way door.&lt;/p&gt;
&lt;p&gt;I don’t see myself going back.&lt;/p&gt;
</content:encoded></item><item><title>São Paulo&apos;s Spring</title><link>https://viniciusnevescosta.com/photos/sao-paulo-spring/</link><guid isPermaLink="true">https://viniciusnevescosta.com/photos/sao-paulo-spring/</guid><description>Light, concrete, and little moments.</description><pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Here are a few photos I took in São Paulo during the beginning of spring, around the expanded center area.&lt;/p&gt;
&lt;p&gt;I was walking with no rush, paying attention to small details—the light, the streets, the buildings, and the everyday movement that makes the city feel alive.&lt;/p&gt;
&lt;p&gt;This is just a simple collection of moments I wanted to keep.&lt;/p&gt;


&lt;h2&gt;Photos&lt;/h2&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146824-1885ad0f9cb4?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146940-2565dd88fed2?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flowers&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103147024-9fa9e0085626?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Avenue&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103147175-9ec68a207627?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Man choosing books&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103147087-a62fb8fecb8f?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bulding Grafitti&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146932-5569be1cfa1e?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Bulding&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146958-3cace8f46b6c?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Avenue&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146803-3dcc5719b02b?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Traffic sign&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146894-1350a2a831c2?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Avenue&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146558-a2fb9533eeb5?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Purple tree&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103147293-f827705f3aa8?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Avenue&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146728-82b0c5a687e8?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Avenue&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146900-5690028e5c12?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cultural center&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146604-05caaa350d6d?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103147072-48665e367549?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Man reading book&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146961-fb254744a46e?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146734-9d594287ad1e?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Avenue&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146653-689d912df663?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flowers&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103146721-d9940f6fc810?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;</content:encoded></item><item><title>Guararema</title><link>https://viniciusnevescosta.com/photos/guararema/</link><guid isPermaLink="true">https://viniciusnevescosta.com/photos/guararema/</guid><description>Mountains, river, calm streets, and fresh air.</description><pubDate>Thu, 10 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the middle of the year, I was feeling completely overwhelmed — work, college, and personal life all at once. So I decided to take a few days off to clear my head.&lt;/p&gt;
&lt;p&gt;During those days, I played games and read a lot. That’s when I started One Piece and fell in love with it. In just a few days I finished the Alabasta arc, and now I’m in Jaya. Oda is definitely a genius.&lt;/p&gt;
&lt;p&gt;But near the end of my break, I felt like I needed fresh air. I left the city and went to a small town at the beginning of a region known as Vale do Paraíba. I stayed there for three nights, and honestly, it was one of the best decisions I made this year.&lt;/p&gt;
&lt;p&gt;The town is small, surrounded by mountains, and full of little things to explore. Here are some of the photos I took while I was there.&lt;/p&gt;


&lt;h2&gt;Photos&lt;/h2&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025019432-f415e34e3b85?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Train station&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767103055544-a6d9b7a410ce?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Fish statue&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025846017-cdf446e481ce?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025846471-25bae13ac4cd?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Yellow flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025033089-520f35f05e7e?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024962837-6d081adf3d37?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Traffic signs&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025701618-86a2450c97a8?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Garden at night&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024962834-9d7cf7d4e897?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025032894-757f7def8a4b?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sunset&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025845833-1b5a90a6cc1c?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025702155-1cd25209af17?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Fance and river&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025020403-14954f90719a?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Small town&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025020054-3aa55b25f136?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Train line&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025701660-33ae4399dd18?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Garden at night&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025033270-5585f5923055?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025020316-26e85e1d7e18?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sunset&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025707097-3aa31109d98f?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;People walking on catwalk&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025020554-03d34a4a89c7?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Town sign&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025846506-e8eeae7e26cf?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Orange flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025706735-6c6c38acc013?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;White butterfly&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025846414-9e40d3ee440d?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024962860-f0250e1d5f76?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Traffic sign&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025020130-de5c3712359f?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Train line&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025032473-c62a8a3bb092?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Town sign&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025032761-dc4e1cbebce3?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Small town&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025041528-0d804857d49d?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025845931-337bcd8f0879?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024991731-655be514c0bc?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Small town&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025033413-f84b7358983b?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025041969-dccdf3bf7b38?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Purple flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025041868-216fd978c869?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;White flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025846371-88056f89aca6?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025032443-4441a9b1c8c3?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Plane&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025033347-f4f9c4f0b6ac?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025041508-8a15b34fa5f3?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025042386-1113e70e6448?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Garden at night&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024991883-c4fb066927ba?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Small town&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024991773-76f2a135d822?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Small town&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025033483-e709e564ffa0?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025032828-ad3fee1664e8?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sunset&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025706854-56e2479888c3?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Man and nature&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025020188-4702fdd09d95?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Train line&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024991583-6ba0f532508d?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Small town&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025033210-f343d0b7c071?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025033534-d8fc7d1255ae?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025019499-72d321cfc77f?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Train&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025707004-532e0349a606?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Man and nature&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025019468-a1723f1454d8?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Danger sign&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025019381-09efc50872b4?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Train station&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025019979-4dfd1527026f?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;River&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025707349-913ac8bd6b27?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;River and butterfly&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024991407-0ee763c59e06?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Tree&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025020098-b071dbc9fb68?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sunset&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024991911-de3b8c756b08?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Small town&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024962895-08d018c9bdc2?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;River&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024992314-54669e13b9b8?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Red flowers&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024991860-0b4b91d88101?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Path to small town&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767024991275-336a301680ae?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;River&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025019939-ad6302b97aa8?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Train line&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767025020468-bbaf4fede31e?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;River&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893689976-1bdbb163f002?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Historical photoage&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893868158-0b75b06bdf15?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;River&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893689868-61c9fb936041?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Orange flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893806818-bc69fb062412?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;River&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893806809-aff785f7150e?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Catwalk&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893806774-b859cacbf328?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;River&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893689993-2b7235ea6ed0?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Historical information&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893689894-35c0546cca8b?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Catwalk at night&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893689946-f948bb420ef5?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Catwalk at night&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1766893689925-9c2588068f5f?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;</content:encoded></item><item><title>People&apos;s Park</title><link>https://viniciusnevescosta.com/photos/peoples-park/</link><guid isPermaLink="true">https://viniciusnevescosta.com/photos/peoples-park/</guid><description>My first experience with a digital camera at People’s Park.</description><pubDate>Tue, 15 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recently, I bought my first digital camera. Shortly after, some friends decided to go to People’s Park. This was our first time visiting the park, and it was my first time taking pictures with a digital camera. Here are some photos I captured that day.&lt;/p&gt;


&lt;h2&gt;Photos&lt;/h2&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122228386-cfd82e441ec0?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Plane and buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122224551-55a79eb18899?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Buildings and park&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122222815-16a35ccdbddf?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Plane&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122225720-1d11b6a7f79f?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Building in construction&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122229946-7d7c3d5cbacf?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Friends playing soccer&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122230157-e9bb05f257e0?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122230347-03e29dbf06ad?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122227940-fcd9c74ad84c?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Friends playing soccer&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122225458-e52d516916cb?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Cloudy sky&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122228687-7269a944f43c?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122225967-46acdb3287c7?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Mirrored buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122225697-2610be19d16c?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sunset&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122228983-0a7540008783?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122228171-fbcb892638b7?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122226087-4d4b42507eb1?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Park map&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122225591-83e670b6db9d?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Plane&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122227285-a75dced30c8a?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Mirrored buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122230770-7412975161cb?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Park&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122229438-f06d6c601357?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sunset&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122229548-f06f0d58272d?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Park&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122226226-7a97597c6670?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122225914-4593ee5ac808?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122222183-f24f8e9249e7?q=80&amp;w=687&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Train station&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122227026-6be15f58a389?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sticker on traffic sign&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122227656-83b96ed9d987?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Street&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122229726-a653cccd8baf?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Park&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122226875-81436a692e6a?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sticker on traffic sign&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122228844-4424e284c74a?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Park&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122229709-8dc8e350ee00?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Mirrored buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122226762-35f6d355be4f?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Friends walking&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122229200-ded0d3d41c9a?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Park&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122230575-a5a95c74ff19?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Piggeon&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122226554-9f6e5f23fedb?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sunset&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122230068-c165b9367243?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Sunset&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122230433-8b837af72ed3?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Lamp post&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122226597-c97cf958134c?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Plane&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122222785-8554aaa9a2ad?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122223460-49bf5b716983?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Mirrored buildings&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122223675-9c1c7964a90c?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Walking&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122228149-05ec3f9b877e?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Friends playing soccer&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122224675-cd812caa92e8?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Positive message&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122223713-b8265f27ba61?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Plane&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122219795-f30b400ee97b?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Subway station&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122223422-c1f3c5ac7eb1?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Helicopter&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122223349-922a17d95cc7?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Plane&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122223545-e3c4df4f0a81?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Plane&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1767122222072-fc47e78d586b?q=80&amp;w=1470&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Subway station&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;</content:encoded></item><item><title>Obsidian with Syncthing and Gitwatch workflow</title><link>https://viniciusnevescosta.com/blog/a-great-writing-suite/</link><guid isPermaLink="true">https://viniciusnevescosta.com/blog/a-great-writing-suite/</guid><description>Open-source sync and backup for Obsidian.</description><pubDate>Sat, 30 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;If you are looking for a way to keep your notes synchronized across all your devices while maintaining a bulletproof, automated backup history—without relying on proprietary clouds—this guide is for you.&lt;/p&gt;
&lt;p&gt;We are going to combine three powerful tools: Obsidian, Syncthing, and Gitwatch.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; This guide assumes you are running a Linux distribution (I was using Fedora when I originally designed this workflow). While the concepts apply to any OS, the specific commands below are tailored for the Linux terminal.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Why This Stack?
Before we start typing commands, let&amp;#39;s look at the tools.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Obsidian: A powerful, extensible knowledge base that works on top of a local folder of plain text Markdown files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Syncthing: A continuous file synchronization program. It replaces proprietary sync and cloud services with something open, trustworthy, and decentralized.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gitwatch: A script that watches a folder for changes and automatically commits them to a Git repository. This is our safety net.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Part 1: Installation&lt;/h2&gt;
&lt;p&gt;Let&amp;#39;s get our tools ready.&lt;/p&gt;
&lt;h3&gt;1. Obsidian&lt;/h3&gt;
&lt;p&gt;You can grab Obsidian from your distro&amp;#39;s software manager (like GNOME Software) or download the AppImage/Flatpak directly from the &lt;a href=&quot;https://obsidian.md/download&quot;&gt;official website&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;2. Syncthing&lt;/h3&gt;
&lt;p&gt;We need Syncthing on every device you want to keep in sync (your laptop, desktop, phone, etc.). On Fedora, install it via dnf:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo dnf install syncthing
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3. Gitwatch&lt;/h3&gt;
&lt;p&gt;Gitwatch relies on git and inotify-tools. Let&amp;#39;s install dependencies and set up the script:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Install dependencies
sudo dnf install git inotify-tools

# Clone the repository
git clone https://github.com/gitwatch/gitwatch.git

# Install the script globally
cd gitwatch
sudo install -b gitwatch.sh /usr/local/bin/gitwatch
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Part 2: Configuration&lt;/h2&gt;
&lt;h3&gt;1. Setting up Obsidian&lt;/h3&gt;
&lt;p&gt;First, create a dedicated home for your notes. I recommend a structure like &lt;code&gt;./documents/obsidian&lt;/code&gt;. Inside that, create a subfolder specifically for the vault you want to sync, for example, &lt;code&gt;./documents/obsidian/sync&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;2. Configuring Syncthing&lt;/h3&gt;
&lt;p&gt;Now, let&amp;#39;s connect your devices.&lt;/p&gt;
&lt;p&gt;Start Syncthing: Run syncthing in your terminal. It should automatically open the web GUI at &lt;a href=&quot;http://127.0.0.1:8384&quot;&gt;http://127.0.0.1:8384&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Connect Devices: Click &lt;strong&gt;&amp;quot;Add Remote Device&amp;quot;&lt;/strong&gt; and exchange Device IDs between your computers and phone.&lt;/p&gt;
&lt;p&gt;Sync the Folder: Click &lt;strong&gt;&amp;quot;Add Folder&amp;quot;.&lt;/strong&gt; Give it a label (e.g., &amp;quot;Obsidian Vault&amp;quot;) and point it to your path: /home/youruser/documents/obsidian/sync.&lt;/p&gt;
&lt;p&gt;Share: Check the devices you want to share this folder with. Once you accept the prompt on your other devices, your files will sync peer-to-peer. Magic!&lt;/p&gt;
&lt;p&gt;The Catch: Syncthing is amazing at syncing, but it also syncs mistakes. If you accidentally delete a file on your phone, it disappears from your computer instantly. As the Syncthing &lt;a href=&quot;https://medium.com/r/?url=https%3A%2F%2Fdocs.syncthing.net%2Fusers%2Ffaq.html%23is-syncthing-my-ideal-backup-application&quot;&gt;FAQ&lt;/a&gt; states:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Syncthing is not a great backup application… use other tools to keep your data safe from your (or our) mistakes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is where Git comes in to save the day.&lt;/p&gt;
&lt;h3&gt;3. Setting up Gitwatch&lt;/h3&gt;
&lt;p&gt;We will use Git to create a versioned history of your notes. Even if you delete everything, you can roll back time.&lt;/p&gt;
&lt;p&gt;Initialize the Repo: Navigate to your vault and start git:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /home/youruser/documents/obsidian/sync
git init
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Tip:&lt;/strong&gt; I recommend setting up an SSH key for GitHub, GitLab, etc. So you don&amp;#39;t have to enter passwords. You can check out this &lt;a href=&quot;https://gist.github.com/rahularity/86da20fe3858e6b311de068201d279e3&quot;&gt;gist&lt;/a&gt; for a quick SSH how-to.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This command tells Gitwatch to watch the folder and push changes to your remote repository automatically.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /
gitwatch -s [seconds] -r [remote repo] -b main [folder path, e.g., /home/user/documents/obsidian/sync]
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Part 3: Automating Everything&lt;/h2&gt;
&lt;p&gt;We don&amp;#39;t want to run these commands manually every time we boot up. Let&amp;#39;s use systemd to make them run silently in the background.&lt;/p&gt;
&lt;p&gt;First, create the user systemd directory:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir -p &amp;quot;$HOME/.config/systemd/user&amp;quot;
cd &amp;quot;$HOME/.config/systemd/user&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;1. Automating Syncthing&lt;/h3&gt;
&lt;p&gt;Create a file named &lt;code&gt;syncthing@.service&lt;/code&gt; and paste this configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[Unit]
Description=Syncthing - Open Source Continuous File Synchronization for %I
Documentation=man:syncthing(1)
After=network.target
StartLimitIntervalSec=60
StartLimitBurst=4

[Service]
User=%i
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0
Restart=on-failure
RestartSec=1
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
ProtectSystem=full
PrivateTmp=true
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

# Elevated permissions to sync ownership (disabled by default),
# see https://docs.syncthing.net/advanced/folder-sync-ownership
#AmbientCapabilities=CAP_CHOWN CAP_FOWNER

[Install]
WantedBy=multi-user.targetcd /
mkdir -p &amp;quot;$HOME/.config/systemd/user &amp;amp;&amp;amp; cd $HOME/.config/systemd/user&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Start the service, replace &amp;#39;myuser&amp;#39; with your system username:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;systemctl enable syncthing@myuser.service
systemctl start syncthing@myuser.service
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;2. Automating Gitwatch&lt;/h3&gt;
&lt;p&gt;Create a file named &lt;code&gt;gitwatch@.service&lt;/code&gt; in the same directory:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[Unit]
Description=Watch file or directory and git commit all changes. run with: systemctl --user --now enable gitwatch@$(systemd-escape &amp;quot;&amp;#39;-r url/to/repository&amp;#39; /path/to/folder&amp;quot;).service

[Service]
Environment=&amp;quot;SCRIPT_ARGS=%I&amp;quot;
ExecStart=/usr/local/bin/gitwatch -s [seconds until committing] -r [remote repo link] -b main [folder path, ex: /home/user/Documents/obsidian/Sync]

[Install]
WantedBy=default.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Start the service:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;systemctl --user --now enable gitwatch@$(systemd-escape &amp;quot;&amp;#39;-r url/to/repository&amp;#39; /path/to/folder&amp;quot;).service
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;And there you have it. You now have a note-taking system that allows you to write on any device, syncs instantly via Syncthing, and creates an immutable backup history in the cloud via Gitwatch.&lt;/p&gt;
&lt;p&gt;It’s private, it’s robust, and best of all—it’s yours.&lt;/p&gt;
</content:encoded></item><item><title>Frog Developers</title><link>https://viniciusnevescosta.com/projects/frogdevs/</link><guid isPermaLink="true">https://viniciusnevescosta.com/projects/frogdevs/</guid><description>A three-project delivery for my final course project.</description><pubDate>Thu, 01 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Frog Developers was my final course project at ETEC, delivered for a real business: Equilíbrio Natural. Instead of treating the project like a fictional assignment, we scoped it like a real product and shipped a small suite of projects that covered both internal operations and customer-facing needs.&lt;/p&gt;
&lt;p&gt;The delivery included three projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cross-platform inventory control system (Windows, Linux, Android)&lt;/li&gt;
&lt;li&gt;Customer website for business info and product availability&lt;/li&gt;
&lt;li&gt;Team website presenting our identity, members, and delivered work&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;The story behind this project is in:&lt;br&gt;&lt;a href=&quot;/blog/rebuilding-after-the-pandemic-part-2&quot;&gt;Rebuilding after the pandemic — Part 2&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;My role&lt;/h2&gt;
&lt;p&gt;Although this was a team project, I was responsible for all of the development.&lt;/p&gt;
&lt;h2&gt;Projects&lt;/h2&gt;
&lt;h3&gt;Inventory Control&lt;/h3&gt;
&lt;p&gt;A multi-platform inventory system designed for daily internal operations: managing products, categories, and stores/units with a history log and expiration tracking.&lt;/p&gt;
&lt;h4&gt;Highlights&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Admin and visitor access modes&lt;/li&gt;
&lt;li&gt;CRUD for products + search&lt;/li&gt;
&lt;li&gt;Change history (audit-style log)&lt;/li&gt;
&lt;li&gt;Automatic expiration calculation&lt;/li&gt;
&lt;li&gt;Built to run on Windows, Linux, and Android&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Stack&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Vue + Vite, TailwindCSS&lt;/li&gt;
&lt;li&gt;Vue Router, Pinia&lt;/li&gt;
&lt;li&gt;Firebase (Firestore)&lt;/li&gt;
&lt;li&gt;Electron + Capacitor (cross-platform packaging)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Customer Website&lt;/h3&gt;
&lt;p&gt;A single-page website for customers with key business information, contact options, store lookup, and product availability.&lt;/p&gt;
&lt;h4&gt;Highlights&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Interactive sections/cards&lt;/li&gt;
&lt;li&gt;Email sending flow&lt;/li&gt;
&lt;li&gt;Store lookup + product availability&lt;/li&gt;
&lt;li&gt;Integration entry point to the app&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Stack&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Vue + Vite, TailwindCSS&lt;/li&gt;
&lt;li&gt;Firebase (Firestore)&lt;/li&gt;
&lt;li&gt;Netlify (deployment)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Team Website&lt;/h3&gt;
&lt;p&gt;The official Frog Developers website, focused on presenting the team and the work delivered during the project.&lt;/p&gt;
&lt;h4&gt;Highlights&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Light/dark themes&lt;/li&gt;
&lt;li&gt;Internationalization (multi-language)&lt;/li&gt;
&lt;li&gt;Modern landing layout&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Stack&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Vue + Vite&lt;/li&gt;
&lt;li&gt;UnoCSS, VueUse&lt;/li&gt;
&lt;li&gt;Vue I18n&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Media&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/frogdevs/inventory-control-login.png&quot; alt=&quot;Inventory Control Login&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Inventory control&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/frogdevs/customer-website.png&quot; alt=&quot;Customer Website&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Customer website&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/frogdevs/team-website.png&quot; alt=&quot;Team Website&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Team website&lt;/p&gt;

&lt;h2&gt;What I learned&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Scope is everything: a smaller, well-defined product ships faster and better.&lt;/li&gt;
&lt;li&gt;A consistent design system improves both UX and dev speed.&lt;/li&gt;
&lt;li&gt;Performance comes from details (bundling, image formats, loading strategy).&lt;/li&gt;
&lt;li&gt;Presentation is part of the product—how you communicate the work matters.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FrogDevs/equilibrionatural-controle_estoque&quot;&gt;Inventory Control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FrogDevs/equilibrionatural-website&quot;&gt;Customer Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/FrogDevs/website/tree/b9a5b0ddc5e954f5d8b3883dc3914f463f95f11b&quot;&gt;Team Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>Criptphy — Password Manager</title><link>https://viniciusnevescosta.com/projects/criptphy/</link><guid isPermaLink="true">https://viniciusnevescosta.com/projects/criptphy/</guid><description>A school project built for the Ideias de Futuro challenge.</description><pubDate>Fri, 01 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Criptphy is a password manager prototype we built in 2022 for a civic-tech challenge promoted by Ideias de Futuro, in partnership with the São Paulo government and Google. The goal was to create a tech solution that could help people in the city—so we focused on a very real, very common problem:&lt;/p&gt;
&lt;p&gt;A lot of people reuse the same password across multiple accounts because it’s easy… until it isn’t.&lt;/p&gt;
&lt;p&gt;Criptphy was our attempt to turn that pain point into a practical solution: a simple web app concept for securely storing and organizing passwords.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I explain in more detail how we arrived at this idea in this post: &lt;a href=&quot;/blog/rebuilding-after-the-pandemic-part-1&quot;&gt;Rebuilding after the pandemic — Part 1&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;My role&lt;/h2&gt;
&lt;p&gt;This was a two-person team project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Me: Front-end (UI, layout, interaction, integration with the API);&lt;/li&gt;
&lt;li&gt;My teammate: Back-end (server-side logic, database, endpoints).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tech stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Front-end: HTML, CSS, TypeScript;&lt;/li&gt;
&lt;li&gt;Back-end: PHP;&lt;/li&gt;
&lt;li&gt;Database: MySQL.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Architecture&lt;/h2&gt;
&lt;p&gt;Criptphy followed a straightforward split:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For the website we used: HTML, CSS and TypeScript;&lt;/li&gt;
&lt;li&gt;A PHP back-end that handled data persistence and communication with MySQL&lt;/li&gt;
&lt;li&gt;The front-end interacted with the back-end through HTTP requests (API-style integration)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Hosting&lt;/h2&gt;
&lt;p&gt;During the event, we deployed the prototype like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Front-end: Heroku;&lt;/li&gt;
&lt;li&gt;Back-end: Railway.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Current status&lt;/h2&gt;
&lt;p&gt;Criptphy is no longer online and not actively maintained.&lt;/p&gt;
&lt;p&gt;That said, the full source code is still available and can be explored on GitHub.&lt;/p&gt;
&lt;h2&gt;Outcome&lt;/h2&gt;
&lt;p&gt;We were selected to present Criptphy in-person at the Ideias de Futuro center, in front of judges, journalists, and representatives from the government.&lt;/p&gt;
&lt;p&gt;At the end of the event:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Criptphy won 2nd place in the Development category;&lt;/li&gt;
&lt;li&gt;We received a Kindle as a prize.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Media&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/criptphy/hero.png&quot; alt=&quot;Hero&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Landing Page: Hero section.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://viniciusnevescosta.com/projects/criptphy/about.png&quot; alt=&quot;About&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Landing Page: About section.&lt;/p&gt;

&lt;hr&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Criptphy/Criptphy&quot;&gt;Front-end&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Criptphy/backend&quot;&gt;Back-end&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Lambari</title><link>https://viniciusnevescosta.com/photos/lambari/</link><guid isPermaLink="true">https://viniciusnevescosta.com/photos/lambari/</guid><description>Capturing the beauty of this lovable city.</description><pubDate>Sun, 01 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Some memories from Lambari, a interior city in the Minas Gerais state, Brazil. For who don&amp;#39;t known, Minas Gerais or MG is a.k.a the land of the pão de queijo, a typical breed with cheese inside it. It&amp;#39;s very tasty with coffee.&lt;/p&gt;


&lt;h2&gt;Photos&lt;/h2&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1639225017153-7bef29d95176?q=80&amp;w=2232&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1639225017423-af76d88477c1?w=900&amp;auto=format&amp;fit=crop&amp;q=60&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxjb2xsZWN0aW9uLXBhZ2V8Mnw5bHIzOGdyVGl1TXx8ZW58MHx8fHx8&quot; alt=&quot;Natural landscapes&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1639225016920-82427c81bce7?w=900&amp;auto=format&amp;fit=crop&amp;q=60&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxjb2xsZWN0aW9uLXBhZ2V8M3w5bHIzOGdyVGl1TXx8ZW58MHx8fHx8&quot; alt=&quot;Rose&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1639225016894-f65b16337fce?q=80&amp;w=2232&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Yellow flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;
&lt;img src=&quot;https://images.unsplash.com/photo-1639225017000-7e65bf1b65e5?q=80&amp;w=2232&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&quot; alt=&quot;Pink flower&quot; style=&quot;max-width: 100%; height: auto; margin: 10px 0;&quot; /&gt;</content:encoded></item></channel></rss>