<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jozef Cipa</title><link>https://jozefcipa.com/</link><description>Recent content on Jozef Cipa</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 04 Aug 2026 12:52:23 +0000</lastBuildDate><atom:link href="https://jozefcipa.com/rss.xml" rel="self" type="application/rss+xml"/><item><title>Meet Wordiez - a vocabulary app curated by you</title><link>https://jozefcipa.com/blog/meet-wordiez-a-vocabulary-app-curated-by-you/</link><pubDate>Tue, 04 Aug 2026 12:52:23 +0000</pubDate><guid>https://jozefcipa.com/blog/meet-wordiez-a-vocabulary-app-curated-by-you/</guid><description>Wordiez helps you build a custom vocabulary library directly from the content you read, rather than relying on generic word lists. By integrating translation and spaced-repetition quizzes into your daily browsing, the tool ensures you only practice the specific words you personally encounter. You can manage your collection and study sessions across multiple platforms with seamless syncing.</description></item><item><title>How I access my private homelab from the internet without a VPN</title><link>https://jozefcipa.com/blog/how-i-access-my-private-homelab-from-the-internet-without-a-vpn/</link><pubDate>Wed, 15 Jul 2026 18:40:36 +0000</pubDate><guid>https://jozefcipa.com/blog/how-i-access-my-private-homelab-from-the-internet-without-a-vpn/</guid><description>Accessing self-hosted services from outside a local network typically involves choosing between a complex VPN or exposing ports to the public internet. By implementing mutual TLS, devices present a client certificate during the connection handshake to prove their identity before any data is processed. This approach allows specifically authorized devices to access homelab services directly through a secure gateway, bypassing the need for manual VPN connections or recurring service fees.</description></item><item><title>Turning an old 27” iMac into an external monitor</title><link>https://jozefcipa.com/blog/turning-an-old-27-imac-into-an-external-monitor/</link><pubDate>Thu, 07 May 2026 14:54:41 +0000</pubDate><guid>https://jozefcipa.com/blog/turning-an-old-27-imac-into-an-external-monitor/</guid><description>This project explores repurposing a vintage 27-inch iMac into a functional external display. By gutting the outdated internal hardware and installing a modern controller board, it is possible to breathe new life into the iconic aluminum chassis. The process requires careful disassembly and custom wiring to ensure the screen and integrated speakers function seamlessly with modern computers.</description></item><item><title>Building a USB HID Device with Raspberry Pi Pico and TinyGo</title><link>https://jozefcipa.com/blog/building-a-usb-hid-device-with-raspberry-pi-pico-and-tinygo/</link><pubDate>Tue, 10 Mar 2026 11:22:40 +0000</pubDate><guid>https://jozefcipa.com/blog/building-a-usb-hid-device-with-raspberry-pi-pico-and-tinygo/</guid><description>This project explores the construction of a custom USB controller using a Raspberry Pi Pico and the TinyGo programming language. By leveraging the Human Interface Device protocol, the device captures physical button presses—such as short, double, and long triggers—and translates them into customizable reports. These events are then processed by a host-side application, which executes user-defined Lua scripts to perform actions like system commands.</description></item><item><title>Upgrading my iPod Classic</title><link>https://jozefcipa.com/blog/upgrading-my-ipod-classic/</link><pubDate>Fri, 26 Sep 2025 10:15:38 +0000</pubDate><guid>https://jozefcipa.com/blog/upgrading-my-ipod-classic/</guid><description>This project explores the modern utility of the iPod Classic by upgrading its aging components with contemporary flash storage and expanded battery capacity. The process details how these modifications transform a legacy device into a reliable, distraction-free music player. Beyond the hardware, it reflects on the appeal of personalizing obsolete electronics through creative restoration.</description></item><item><title>Exploring Scandinavia ‒ my journey to Nordkapp</title><link>https://jozefcipa.com/blog/exploring-scandinavia-my-journey-to-nordkapp/</link><pubDate>Sat, 30 Aug 2025 16:05:07 +0000</pubDate><guid>https://jozefcipa.com/blog/exploring-scandinavia-my-journey-to-nordkapp/</guid><description>This trip covers an 18-day, 7,000-kilometer motorcycle journey from Prague to the northernmost point of Europe and back. The account details the experience of riding through diverse Scandinavian landscapes, including forests, mountain ranges, and coastal fjords. By sharing daily highlights and logistical realities, this overview captures the essence of long-distance motorcycle travel.</description></item><item><title>My EDC collection</title><link>https://jozefcipa.com/blog/my-edc-collection/</link><pubDate>Mon, 18 Aug 2025 10:11:20 +0000</pubDate><guid>https://jozefcipa.com/blog/my-edc-collection/</guid><description>Everyday carry collections consist of personal items selected for their utility, reliability, or specific aesthetic appeal. This collection features a mix of modern mobile electronics, vintage audio devices, and functional tactile tools. Each piece serves a purpose in supporting daily tasks or providing a focused, analog experience away from constant digital connectivity.</description></item><item><title>How to do Raspberry Pi OS backups</title><link>https://jozefcipa.com/blog/how-to-do-raspberry-pi-os-backups/</link><pubDate>Wed, 30 Jul 2025 13:03:44 +0000</pubDate><guid>https://jozefcipa.com/blog/how-to-do-raspberry-pi-os-backups/</guid><description>MicroSD cards used in single-board computers can fail unexpectedly, leading to the loss of configuration and project data. Creating a full system image provides a recovery path to ensure work is not lost if storage fails. This approach focuses on cloning raw disk data and optimizing the resulting file size for efficient storage.</description></item><item><title>Extending your application with Lua scripts</title><link>https://jozefcipa.com/blog/extending-your-application-with-lua-scripts/</link><pubDate>Sun, 01 Jun 2025 22:49:31 +0000</pubDate><guid>https://jozefcipa.com/blog/extending-your-application-with-lua-scripts/</guid><description>Lua is a lightweight scripting language well-suited for embedding directly into applications to handle custom logic. By integrating a Lua VM, host programs gain the ability to execute user scripts while controlling access to system resources. This approach allows developers to extend application functionality without increasing overall architectural complexity.</description></item><item><title>How I built a custom Homekit thermostat for 40€</title><link>https://jozefcipa.com/blog/how-i-built-a-custom-homekit-thermostat-for-40eur/</link><pubDate>Sun, 09 Mar 2025 18:22:16 +0000</pubDate><guid>https://jozefcipa.com/blog/how-i-built-a-custom-homekit-thermostat-for-40eur/</guid><description>This project explores the development of a custom, budget-friendly smart thermostat that integrates directly with HomeKit. The device features a touchscreen interface for local control and provides real-time temperature monitoring while managing boiler heating cycles. It demonstrates the technical challenges and practical implementation of embedding networking, UI libraries, and hardware control on a microprocessor.</description></item><item><title>Watching Github repo stars via Telegram</title><link>https://jozefcipa.com/blog/watching-github-repo-stars-via-telegram/</link><pubDate>Thu, 27 Feb 2025 07:57:09 +0000</pubDate><guid>https://jozefcipa.com/blog/watching-github-repo-stars-via-telegram/</guid><description>Keeping track of new stars on a personal repository can be a frequent task for developers. By utilizing webhooks and serverless functions, it is possible to automate this process to receive real-time updates directly on a mobile device. This approach provides a practical way to stay informed about project engagement without manually checking the repository dashboard.</description></item><item><title>Monitoring your website with Upptime</title><link>https://jozefcipa.com/blog/monitoring-your-website-with-upptime/</link><pubDate>Sun, 02 Feb 2025 22:39:27 +0000</pubDate><guid>https://jozefcipa.com/blog/monitoring-your-website-with-upptime/</guid><description>Unexpected downtime can lead to significant issues if it goes unnoticed for long periods of time. Implementing automated monitoring ensures administrators are alerted immediately when a website becomes unresponsive. This approach leverages existing version control infrastructure to provide continuous status checks and public reporting dashboards.</description></item><item><title>Novus just got better (again)</title><link>https://jozefcipa.com/blog/novus-just-got-better-again/</link><pubDate>Thu, 16 Jan 2025 08:36:29 +0000</pubDate><guid>https://jozefcipa.com/blog/novus-just-got-better-again/</guid><description>The latest release of Novus introduces a new command designed to streamline administrative tasks by enabling passwordless sudo access with security constraints. This update also adds improved operational transparency, helpful UI feedback for long-running processes, and support for quick domain definitions. These enhancements aim to refine the development workflow for those managing local server environments.</description></item><item><title>How to use sudo without a password in your programs</title><link>https://jozefcipa.com/blog/how-to-use-sudo-without-a-password-in-your-programs/</link><pubDate>Tue, 14 Jan 2025 19:51:47 +0000</pubDate><guid>https://jozefcipa.com/blog/how-to-use-sudo-without-a-password-in-your-programs/</guid><description>Automating tasks that require elevated privileges often leads to repetitive and annoying password prompts. By configuring specific entries in the sudoers file, developers can enable password-less execution for targeted scripts or binaries. This approach requires careful implementation to prevent security vulnerabilities and privilege escalation risks.</description></item><item><title>Novus v0.0.4 released 🚀</title><link>https://jozefcipa.com/blog/novus-v0-0-4-released/</link><pubDate>Thu, 14 Nov 2024 15:58:48 +0000</pubDate><guid>https://jozefcipa.com/blog/novus-v0-0-4-released/</guid><description>This release of the local HTTPS proxy tool introduces a web-based dashboard and improved service management to simplify development workflows. The update resolves configuration validation issues and refines how background services are monitored and restarted. Users can now enjoy a more robust interface and better error handling when setting up local development domains.</description></item><item><title>Publishing a Go binary with Homebrew</title><link>https://jozefcipa.com/blog/publishing-go-binary-with-homebrew/</link><pubDate>Mon, 22 Jul 2024 09:32:37 +0000</pubDate><guid>https://jozefcipa.com/blog/publishing-go-binary-with-homebrew/</guid><description>Making software accessible via package managers like Homebrew streamlines the distribution process for developers. This post covers the workflow to build, release, and distribute Go binaries as a custom Homebrew tap. It also explores automating the entire release lifecycle to simplify version updates.</description></item><item><title>Introducing Novus - a local HTTPS proxy for better developer experience</title><link>https://jozefcipa.com/blog/novus-local-https-proxy-for-better-developer-experience/</link><pubDate>Wed, 12 Jun 2024 22:07:23 +0000</pubDate><guid>https://jozefcipa.com/blog/novus-local-https-proxy-for-better-developer-experience/</guid><description>Managing multiple local development services often requires complicated handling of ports, DNS settings, and SSL certificates. This utility simplifies that process by automatically configuring local proxies to serve development projects over custom HTTPS domains. It reduces environment configuration overhead, allowing for a more consistent and production-like experience during local testing.</description></item><item><title>LaundryAlert - never forget your laundry again</title><link>https://jozefcipa.com/blog/laundryalert-never-forget-your-laundry-again/</link><pubDate>Thu, 01 Feb 2024 10:20:07 +0000</pubDate><guid>https://jozefcipa.com/blog/laundryalert-never-forget-your-laundry-again/</guid><description>Forgetful habits regarding completed laundry cycles led to the development of a custom monitoring system that triggers push notifications on mobile devices. By combining a light-sensitive sensor on a washing machine with a control board, a solution was created to detect status changes and alert users remotely. This project combines basic electronics with custom software to solve a frequent household annoyance.</description></item><item><title>Self signed SSL certificates on iOS</title><link>https://jozefcipa.com/blog/self-signed-ssl-certificates-on-ios/</link><pubDate>Thu, 18 Jan 2024 23:51:14 +0000</pubDate><guid>https://jozefcipa.com/blog/self-signed-ssl-certificates-on-ios/</guid><description>Development on local network services often requires the use of self-signed SSL certificates for secure communication. Mobile devices typically reject these certificates by default because they lack validation from a recognized certificate authority. This process outlines how to bridge that gap by trusting a local root certificate on an iOS device to ensure secure, private connections.</description></item><item><title>Javascript objects are tricky</title><link>https://jozefcipa.com/blog/javascript-objects-are-tricky/</link><pubDate>Fri, 08 Sep 2023 23:55:34 +0000</pubDate><guid>https://jozefcipa.com/blog/javascript-objects-are-tricky/</guid><description>Unexpected behavior occurs when using standard objects as collections for dynamic input. Prototype properties can conflict with data keys, leading to type errors during data processing. Using specialized data structures provides a more reliable and performant approach for handling arbitrary keys.</description></item><item><title>Server-sent events or how ChatGPT typing animation works</title><link>https://jozefcipa.com/blog/server-sent-events-or-how-chatgpt-typing-animation-works/</link><pubDate>Tue, 23 May 2023 00:31:35 +0000</pubDate><guid>https://jozefcipa.com/blog/server-sent-events-or-how-chatgpt-typing-animation-works/</guid><description>Real-time communication enables modern web applications to push data to users instantly instead of waiting for traditional request-response cycles. This article explores how Server-Sent Events facilitate streaming content directly from a server, powering features like the typing effect seen in chat interfaces. It provides a practical overview of implementing these streams to improve user experience in web applications.</description></item><item><title>Database locks, lost updates and idempotency</title><link>https://jozefcipa.com/blog/database-locks-lost-updates-and-idempotency/</link><pubDate>Thu, 26 Jan 2023 23:14:39 +0000</pubDate><guid>https://jozefcipa.com/blog/database-locks-lost-updates-and-idempotency/</guid><description>Distributed systems frequently face challenges with concurrency and duplicate requests that can lead to data loss or incorrect application states. This post explores practical strategies for maintaining data integrity, including leveraging HTTP headers for optimistic concurrency control and idempotency. It also examines how database-level transactions and row-level locking mechanisms can prevent race conditions in complex workflows.</description></item><item><title>Assuming IAM role and role chaining in AWS</title><link>https://jozefcipa.com/blog/assuming-iam-role-and-role-chaining-in-aws/</link><pubDate>Sun, 13 Nov 2022 21:14:26 +0000</pubDate><guid>https://jozefcipa.com/blog/assuming-iam-role-and-role-chaining-in-aws/</guid><description>Managing temporary security credentials across AWS accounts allows applications to securely access resources. Using the Security Token Service to assume roles requires a clear understanding of trust policies and session duration limits. A specific limitation occurs during role chaining, where the session length is constrained compared to assumptions made by IAM users.</description></item><item><title>Running HTTPS on localhost</title><link>https://jozefcipa.com/blog/running-https-on-localhost/</link><pubDate>Mon, 31 Oct 2022 17:36:16 +0000</pubDate><guid>https://jozefcipa.com/blog/running-https-on-localhost/</guid><description>Development environments often require HTTPS to properly test features that rely on secure connections. This guide covers generating self-signed certificates and configuring local web servers to enable encrypted traffic on a development machine. It also looks at how to map custom domain names to local resources to simplify the testing process.</description></item><item><title>Keeping track of database changes and when it can be useful</title><link>https://jozefcipa.com/blog/keeping-track-of-database-changes-and-when-it-can-be-useful/</link><pubDate>Wed, 21 Sep 2022 20:42:50 +0000</pubDate><guid>https://jozefcipa.com/blog/keeping-track-of-database-changes-and-when-it-can-be-useful/</guid><description>This article explores the concept of database replication and how it can be utilized to synchronize data between systems or feed external services. It covers the mechanics of write-ahead logging and logical decoding, which allow tracked changes to be exported in usable formats. The post also highlights necessary configuration steps for managed environments and potential pitfalls to monitor when implementing these techniques.</description></item><item><title>Why use multiple unsubscribe groups when sending emails</title><link>https://jozefcipa.com/blog/why-use-multiple-unsubscribe-groups-when-sending-emails/</link><pubDate>Mon, 27 Jun 2022 17:09:56 +0000</pubDate><guid>https://jozefcipa.com/blog/why-use-multiple-unsubscribe-groups-when-sending-emails/</guid><description>We all know how annoying all those emails that we receive from various websites might be, especially when we don’t expect them. So naturally, there should be an option to unsubscribe. However there are some things that you have to be careful about.</description></item><item><title>Travelling around Argentina</title><link>https://jozefcipa.com/blog/traveling-around-argentina/</link><pubDate>Tue, 07 Jun 2022 17:36:11 +0000</pubDate><guid>https://jozefcipa.com/blog/traveling-around-argentina/</guid><description>This article recounts a journey across Argentina, highlighting logistical challenges and practical advice for navigating the country&amp;rsquo;s unique infrastructure. It provides insights into managing local payments, transportation, and connectivity across diverse regions from Patagonia to the Andean north. The account serves as a guide for others planning a similar trip through this expansive and varied landscape.</description></item><item><title>Feature Flags</title><link>https://jozefcipa.com/blog/feature-flags/</link><pubDate>Tue, 11 Jan 2022 23:41:17 +0000</pubDate><guid>https://jozefcipa.com/blog/feature-flags/</guid><description>Feature flags provide a mechanism to toggle specific application logic without requiring a full code redeployment. They offer a reliable way to manage service dependencies, handle incident responses, and facilitate gradual feature rollouts. Maintaining clean code necessitates regularly auditing and removing these flags once they are no longer required.</description></item><item><title>Showing the active Firebase project in the command line</title><link>https://jozefcipa.com/blog/showing-the-active-firebase-project-in-the-command-line/</link><pubDate>Sat, 09 Jan 2021 00:09:06 +0000</pubDate><guid>https://jozefcipa.com/blog/showing-the-active-firebase-project-in-the-command-line/</guid><description>Managing multiple Firebase environments can be error-prone when relying on manual commands to verify the current context. A custom shell integration provides a persistent visual indicator of the active project directly within the command prompt. This approach prevents accidental deployments to the wrong environment by referencing local configuration files automatically.</description></item><item><title>How We Migrated All User Files to AWS S3</title><link>https://jozefcipa.com/blog/how-we-migrated-all-user-files-to-aws-s3/</link><pubDate>Tue, 05 Jan 2021 15:21:15 +0000</pubDate><guid>https://jozefcipa.com/blog/how-we-migrated-all-user-files-to-aws-s3/</guid><description>Migrating a large volume of user files between cloud providers requires careful planning to maintain service stability and data integrity. This process explores the transition from initial sequential scripts to a highly parallelized architecture capable of handling millions of records efficiently. The final approach demonstrates how optimizing infrastructure and leveraging worker-based processing can significantly improve performance and resource utilization.</description></item><item><title>Sharing gRPC protobufs between microservices</title><link>https://jozefcipa.com/blog/sharing-grpc-protobufs-between-microservices/</link><pubDate>Sun, 23 Feb 2020 21:18:37 +0000</pubDate><guid>https://jozefcipa.com/blog/sharing-grpc-protobufs-between-microservices/</guid><description>Maintaining consistent Protocol Buffer definitions across multiple independent microservices can be a challenge. This approach uses a centralized repository for proto files and automates the generation of language-specific client libraries. Versioned output repositories are then integrated into projects to ensure API stability and simplified dependency management.</description></item><item><title>Automatically pausing Spotify on macOS</title><link>https://jozefcipa.com/blog/automatically-pausing-spotify-on-macos/</link><pubDate>Sat, 06 Apr 2019 13:10:22 +0000</pubDate><guid>https://jozefcipa.com/blog/automatically-pausing-spotify-on-macos/</guid><description>Managing media playback timing on desktop devices often requires custom solutions for automated interruptions. This approach uses shell scripting to bridge system controls with application commands. It provides a straightforward method to ensure audio playback ceases after a specified duration on macOS.</description></item><item><title>When dream comes true (USA trip)</title><link>https://jozefcipa.com/blog/when-dream-comes-true--usa-trip/</link><pubDate>Fri, 09 Nov 2018 12:51:50 +0000</pubDate><guid>https://jozefcipa.com/blog/when-dream-comes-true--usa-trip/</guid><description>This trip report chronicles an initial journey through major North American cities after years of saving. It highlights experiences exploring iconic urban landmarks, bustling cityscapes, and popular tourist destinations. The account captures the excitement and wonder of visiting long-awaited locations for the first time.</description></item><item><title>Watching your UNIX scripts</title><link>https://jozefcipa.com/blog/watching-your-unix-scripts/</link><pubDate>Tue, 30 Jan 2018 10:53:23 +0000</pubDate><guid>https://jozefcipa.com/blog/watching-your-unix-scripts/</guid><description>Maintaining long-running background processes can be a challenge in restricted hosting environments where traditional supervisor tools are unavailable. A lightweight bash script can effectively monitor command execution and ensure processes restart automatically upon failure. This approach provides a simple, dependency-free method to maintain service reliability without requiring extra infrastructure.</description></item><item><title>How I bypassed our school internet system. Twice.</title><link>https://jozefcipa.com/blog/how-i-bypassed-our-school-internet-system-twice/</link><pubDate>Fri, 15 Dec 2017 18:04:39 +0000</pubDate><guid>https://jozefcipa.com/blog/how-i-bypassed-our-school-internet-system-twice/</guid><description>This narrative explores two attempts to bypass dormitory network restrictions by manipulating configuration files and decompiling existing management software. By analyzing local administrative tools and automating network requests, the author outlines a technical approach to maintaining internet access during restricted hours. The process highlights common oversights in school system security and configuration management.</description></item><item><title>Sending exceptions to mail in Laravel</title><link>https://jozefcipa.com/blog/sending-exceptions-to-mail-in-laravel/</link><pubDate>Thu, 09 Nov 2017 16:37:42 +0000</pubDate><guid>https://jozefcipa.com/blog/sending-exceptions-to-mail-in-laravel/</guid><description>Monitoring production application errors is essential for identifying hidden issues that may arise after deployment. While dedicated error reporting platforms are industry standard, smaller projects can implement custom notification systems for immediate alerts. This approach leverages the framework&amp;rsquo;s native exception handling capabilities to capture and relay failure details directly to the developer.</description></item><item><title>About</title><link>https://jozefcipa.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jozefcipa.com/about/</guid><description>&lt;p&gt;I&amp;rsquo;m Jozef, a software developer with &lt;strong&gt;10+ years&lt;/strong&gt; of experience, focusing mostly on backend and web applications.&lt;/p&gt;
&lt;p&gt;Most of my day happens in &lt;strong&gt;Node.js&lt;/strong&gt; and &lt;strong&gt;TypeScript&lt;/strong&gt;, with Postgres and AWS somewhere nearby. Over the years, &lt;strong&gt;Go&lt;/strong&gt; went from &amp;ldquo;language I&amp;rsquo;m curious about&amp;rdquo; to the thing I reach for whenever I build my own tools — like &lt;a href="https://github.com/jozefcipa/novus"&gt;novus&lt;/a&gt;, a local HTTPS proxy, or a &lt;a href="https://github.com/jozefcipa/usb-button"&gt;USB macro button&lt;/a&gt; running TinyGo on a Raspberry Pi Pico. In the past I also worked with PHP, jQuery, and a little bit of Python — we don&amp;rsquo;t talk about the XSLT era 😅.&lt;/p&gt;</description></item><item><title>Projects</title><link>https://jozefcipa.com/projects/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jozefcipa.com/projects/</guid><description/></item><item><title>Work</title><link>https://jozefcipa.com/work/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://jozefcipa.com/work/</guid><description/></item></channel></rss>