[{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/android/","section":"Tags","summary":"","title":"Android","type":"tags"},{"content":"With over two decades of experience as a software developer, George Litos is a seasoned professional based in Thessaloniki, Greece. He has a proven track record in leading and participating in research projects and developing innovative solutions.\nInterests: Programming, Playing with Open Source, Automating everything, Mixing the above 💥\nExperience # Senior Software Engineer 2023 - Present Trinity Systems Specializing in hardware RFID technologies and software development. Team Lead (IT R\u0026amp;D) 2022 - 2023 AgroApps PC Heading the IT R\u0026D department for agricultural solutions. Software Architect 2020 - 2022 HYPERTECH SA Full-stack development and server administration services. Senior Back-end Developer 2017 - 2020 Schoox, Inc. Enterprise LMS and talent development platform. Senior Developer, Research Associate 1999 - 2017 Information Technologies Institute (CERTH/ITI) Contributing to numerous EU and GSRI-funded research projects. ","date":"23 March 2026","externalUrl":null,"permalink":"/","section":"George Litos","summary":"With over two decades of experience as a software developer, George Litos is a seasoned professional based in Thessaloniki, Greece. He has a proven track record in leading and participating in research projects and developing innovative solutions.\n","title":"George Litos","type":"page"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/ios/","section":"Tags","summary":"","title":"Ios","type":"tags"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/linux/","section":"Tags","summary":"","title":"Linux","type":"tags"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/macos/","section":"Tags","summary":"","title":"Macos","type":"tags"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/productivity/","section":"Tags","summary":"","title":"Productivity","type":"tags"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":" unArgus # Your Unraid server, in your pocket.\nunArgus is a native app for monitoring and managing your Unraid server in real time. It connects directly to your server\u0026rsquo;s GraphQL API and gives you full visibility and control - no cloud, no middleman.\nAvailable for Android, iOS, macOS, Windows, and Linux.\nFeatures # Dashboard # A single screen that tells you everything at a glance. Live CPU and memory usage with animated \u0026ldquo;status eyes\u0026rdquo; that change colour based on load. Rolling charts that track the last 300 data points. Array and cache utilisation bars. UPS status with charge, load, input voltage, and estimated runtime. Parity check history. Server uptime, registration, and network info.\nArray Management # View every disk in your array with vendor, model, serial, temperature, spin status, error count, and usage percentage. Tap any disk for a full detail dialog. Start and stop the array with confirmation safeguards. A safety setting lets you disable the stop button entirely to prevent accidents.\nDocker Containers # Browse all your containers with real-time status. Start, stop, and restart with one tap. Filter by All, Running, or Stopped - each showing a live count. Sort by name, status, or creation date. Tap a port chip to open the container\u0026rsquo;s web UI in your browser. The app detects when the Docker service itself is down and tells you.\nVirtual Machines # Full VM lifecycle control - start, stop, force stop, pause, resume, and reboot. Filter and sort just like Docker. Confirmation dialogs protect against accidental shutdowns (configurable in settings).\nShares # Browse all user shares with used/free space, cache allocation status, and include/exclude disk assignments.\nNotifications # Real-time push notifications delivered via WebSocket subscriptions. View unread and archived notifications in separate tabs. Archive all with one tap.\nLogs # Browse system log files and Docker container logs. Live tail mode for real-time monitoring. Filter, copy to clipboard, and export.\nSystem Information # Detailed pages for CPU (specifications, cache hierarchy, flags), memory (per-slot breakdown with manufacturer, serial, speed), baseboard, and operating system.\nPlugins # View all installed plugins with version and update status.\nMulti-Language # Full localization support with English and Greek included. The app respects your device language or lets you pick manually in settings. Every string in the app is translated - labels, errors, confirmations, status messages, and settings.\nSettings # unArgus is built to be configurable:\nTab Order - drag to reorder which tabs appear in the bottom bar vs. the \u0026ldquo;More\u0026rdquo; menu Safety - disable the stop array button, require confirmation before stopping Docker containers or VMs Polling - set Docker and VM refresh intervals (15s, 30s, 60s, or off) Display - temperature unit (Celsius/Fahrenheit), default sort order for Docker and VMs Language - English and Greek, with full localization support for adding more Connection Handling # The app handles network issues gracefully. A persistent banner shows connection status with automatic retry and exponential backoff. If your server is unreachable at startup, you get a clear error screen with a retry button instead of a blank login form.\nHow to connect # Install the Unraid Connect plugin on your server (or use Unraid 7.2.0+ which includes the API) Generate an API key: unraid-api apikey --create Open unArgus, enter your server URL and API key That\u0026rsquo;s it Support # unArgus is free to use. If you find it useful, you can support development on Ko-fi.\nPrivacy Policy for unArgus # This Privacy Policy describes the data practices of George Litos (\u0026ldquo;I,\u0026rdquo; \u0026ldquo;me,\u0026rdquo; or \u0026ldquo;my\u0026rdquo;) for my free application, unArgus (\u0026ldquo;Application\u0026rdquo;).\nMy Commitment to Your Privacy:\nI respect your privacy and am committed to protecting any information you provide while using my Application.\nHow the Application Works:\nunArgus connects directly to your Unraid server on your local network using the server\u0026rsquo;s GraphQL API. All communication stays between your device and your server. No data passes through my servers or any third-party cloud service.\nWhat I Do Not Collect:\nI do not collect, store, transmit, or share any personal information. This includes:\nDevice information (device type, operating system, etc.) Usage data (application activity, time spent using the app, settings) Account information (username, email address) Server data (IP addresses, API keys, server configuration, disk or container information) All credentials and settings are stored locally on your device using on-device storage and are never transmitted to me or any third party.\nThird-Party Services:\nThe Application does not include any analytics, tracking, advertising, or crash reporting SDKs. The Application does not have any in-app purchases. No data is shared with third parties.\nThe Application is designed to be a safe, private, and straightforward experience for all users.\n","date":"23 March 2026","externalUrl":null,"permalink":"/projects/unargus/","section":"Projects","summary":"Monitor and manage your Unraid server in real time","title":"unArgus","type":"projects"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/unraid/","section":"Tags","summary":"","title":"Unraid","type":"tags"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/windows/","section":"Tags","summary":"","title":"Windows","type":"tags"},{"content":"After running this site on Hugo Academic (and its many incarnations) for several years, I finally pulled the plug and migrated to Blowfish. Here\u0026rsquo;s why, and what the experience was like.\nThe identity crisis # If you\u0026rsquo;ve used this theme, you know the naming history:\nHugo Academic -the original name, a clean academic portfolio theme for Hugo Wowchemy -rebranded around 2020, new name, new organization, new module paths Hugo Blox Builder -rebranded again, with yet another GitHub org, new module paths, and a new \u0026ldquo;no-code builder\u0026rdquo; marketing angle Each rename brought breaking changes. Module import paths changed, config file structures were reorganized, template names were updated. Every time, you had to hunt through changelogs, update go.mod, fix config files, and hope nothing else broke. Documentation often lagged behind or still referenced the previous name, making debugging a guessing game.\nThe stability problem # Hugo Blox had a recurring pattern: a new Hugo release would come out, and the theme would break. Users would open issues, wait for fixes, and pin to older Hugo versions in the meantime. Then a Hugo Blox update would come out that required the newer Hugo, breaking anyone who hadn\u0026rsquo;t upgraded yet.\nThe Hugo forum and GitHub discussions are full of users stuck between incompatible Hugo and theme versions, with errors like can't evaluate field File or missing output formats. The typical advice was to pin Hugo to a specific version or start from scratch.\nFor a static site generator -something that should be rock-solid and boring -this was way too much maintenance.\nThe open core question # Hugo Blox is technically MIT-licensed, and the core framework is genuinely open source. But the project operates on an \u0026ldquo;Open Core\u0026rdquo; model, with paid tiers (Plus, Pro) for cloud editing, AI features, and premium blocks. The free tier is complete and functional, but the commercial pressure shapes the project\u0026rsquo;s direction.\nThis isn\u0026rsquo;t inherently bad -developers deserve to get paid for their work. But when a project\u0026rsquo;s priorities shift toward selling premium services, the open source core tends to get less love. Bug fixes slow down, documentation pushes you toward the paid product, and the \u0026ldquo;free\u0026rdquo; experience feels increasingly like a funnel.\nFor my personal site, I wanted something with no commercial agenda -just a well-maintained theme that does its job.\nWhy Blowfish # I evaluated several Hugo themes and landed on Blowfish for these reasons:\nMIT license, no open-core, no paid tiers, no upselling Tailwind CSS -same foundation as Hugo Blox, so the transition was natural Actively maintained -regular releases, responsive maintainer Built-in features -search (Fuse.js), dark mode, KaTeX math, Mermaid diagrams, code copy, table of contents -all without extra build steps or plugins Simple architecture -standard Hugo theme, installed as a git submodule, no Hugo Modules complexity Clean documentation -one name, one set of docs, no confusion What the migration looked like # The migration touched about 215 files :\nConfig: Rewrote all YAML configs as TOML (Hugo Blox used a bespoke YAML config structure; Blowfish uses standard Hugo TOML) Content: Renamed directories (post/ → posts/, project/ → projects/, etc.), updated front matter across ~60 files, renamed all featured.* images to feature.* Layouts: Created compatibility shortcodes for Hugo Blox-specific ones (spoiler, callout, audio, etc.), built custom layouts for publications and talks, and wrote a Reveal.js slide template to replace the Blox plugin Search: Dropped Pagefind (which required an extra build step) in favor of Blowfish\u0026rsquo;s built-in Fuse.js search Comments: My custom Bluesky comment integration worked with zero changes -just dropped layouts/partials/comments.html in place The whole thing built on the first real attempt (after fixing a few missing shortcodes). The site went from a 10-second build with Hugo Blox to under 1 second with Blowfish.\nWhat I lost # Honestly, not much:\nWork experience timeline on the homepage -recreated using Blowfish\u0026rsquo;s timeline shortcode Tag cloud widget -replaced by a Tags page in the nav menu All-in-one scrolling homepage -now a profile page with recent posts; other sections are separate pages Plotly chart shortcode -only used in draft posts, commented out Was it worth it? # Absolutely. The site builds faster, the config is simpler, the theme is stable, and I\u0026rsquo;m not worried about the next rename breaking everything. I can update Hugo without checking if my theme supports it first.\nIf you\u0026rsquo;re still on Hugo Blox and dreading the next update, consider making the switch. The migration is a bit of work, but the result is a simpler, more maintainable site.\n","date":"23 March 2026","externalUrl":null,"permalink":"/posts/goodbye-hugo-blox/","section":"Posts","summary":"Why I migrated my site away from Hugo Blox Builder and what I learned along the way.","title":"Goodbye Hugo Blox, Hello Blowfish","type":"posts"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/hugo/","section":"Tags","summary":"","title":"Hugo","type":"tags"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/open-source/","section":"Tags","summary":"","title":"Open Source","type":"tags"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/tools/","section":"Tags","summary":"","title":"Tools","type":"tags"},{"content":"","date":"23 March 2026","externalUrl":null,"permalink":"/tags/web/","section":"Tags","summary":"","title":"Web","type":"tags"},{"content":" \u0026ldquo;Docker: A Deep Dive\u0026rdquo; Building, Shipping, and Running Applications\nGeorge Litos @5/9/2025 v1.0.0\nAn introduction to Docker\n","date":"5 September 2025","externalUrl":null,"permalink":"/slides/docker/","section":"Slides","summary":"An introduction to Docker","title":"Docker","type":"slides"},{"content":"","date":"5 September 2025","externalUrl":null,"permalink":"/tags/docker/","section":"Tags","summary":"","title":"Docker","type":"tags"},{"content":"","date":"5 September 2025","externalUrl":null,"permalink":"/slides/","section":"Slides","summary":"","title":"Slides","type":"slides"},{"content":"","date":"3 September 2025","externalUrl":null,"permalink":"/tags/flutter/","section":"Tags","summary":"","title":"Flutter","type":"tags"},{"content":"","date":"3 September 2025","externalUrl":"https://github.com/glls/littleollama","permalink":"/projects/littleollama/","section":"Projects","summary":"A cross-platform information tool for Ollama, built with Flutter","title":"LittleOllama","type":"projects"},{"content":"","date":"3 September 2025","externalUrl":null,"permalink":"/tags/tool/","section":"Tags","summary":"","title":"Tool","type":"tags"},{"content":"","date":"1 September 2025","externalUrl":null,"permalink":"/tags/containers/","section":"Tags","summary":"","title":"Containers","type":"tags"},{"content":" What is Docker? # Docker is a containerization platform that packages applications and their dependencies into lightweight, portable containers. Think of a container as a standardized shipping box for software - it includes everything needed to run an application: code, runtime, system tools, libraries, and settings.\nHow Docker Works # Docker uses OS-level virtualization to create isolated environments that share the host operating system\u0026rsquo;s kernel. Unlike traditional virtual machines that require a full guest OS, containers are much more efficient because they only include the application layer. Do yourself a favor and run docker on Linux.\nKey Benefits for Developers # Environment Consistency: \u0026ldquo;It works on my machine\u0026rdquo; becomes a thing of the past. Docker ensures your application runs identically across development, testing, and production environments. If it works in a Docker container locally, it will work the same way everywhere.\nSimplified Setup: New team members can get a complex application running with just a few Docker commands instead of spending hours installing dependencies and configuring environments. This dramatically reduces onboarding time.\nIsolation: Applications run in separate containers, preventing conflicts between different projects that might require different versions of the same dependency. You can run multiple versions of Node.js, Python, or databases simultaneously without interference.\nScalability: Containers can be easily replicated and distributed across multiple servers. Container orchestration platforms like Kubernetes make it simple to scale applications up or down based on demand.\nResource Efficiency: Containers use fewer resources than virtual machines since they share the host OS kernel. You can run more applications on the same hardware.\nVersion Control for Infrastructure: Dockerfiles serve as code that describes your application\u0026rsquo;s environment, making infrastructure reproducible and version-controllable alongside your application code.\nMicroservices Architecture: Docker makes it practical to break applications into smaller, independent services that can be developed, deployed, and scaled separately.\nClick on the Slides button above to view the presentation. You can also check more Docker related posts\n","date":"1 September 2025","externalUrl":null,"permalink":"/talks/docker/","section":"Presentations","summary":"An introduction to Docker","title":"Docker","type":"talks"},{"content":"","date":"1 September 2025","externalUrl":null,"permalink":"/talks/","section":"Presentations","summary":"","title":"Presentations","type":"talks"},{"content":"","date":"1 September 2025","externalUrl":null,"permalink":"/tags/virtualization/","section":"Tags","summary":"","title":"Virtualization","type":"tags"},{"content":"","date":"1 September 2025","externalUrl":null,"permalink":"/tags/browser/","section":"Tags","summary":"","title":"Browser","type":"tags"},{"content":"Here\u0026rsquo;s a list of my favorite browser extensions (each author\u0026rsquo;s own words in quotes, original images included):\nuBlock Origin - Finally, an efficient blocker. Easy on CPU and memory\nby Raymond Hill\nuBlock Origin is not an \u0026ldquo;ad blocker\u0026rdquo;, it\u0026rsquo;s a wide-spectrum content blocker with CPU and memory efficiency as a primary feature.\nInstead of just blocking ads, uBlock Origin is a comprehensive content blocker designed with efficiency at its core. It\u0026rsquo;s built to be exceptionally light on your computer\u0026rsquo;s CPU and memory, ensuring a smooth browsing experience without the typical performance hit of many other blockers. It gives you control over what content loads on a page, making your browsing faster and more secure by preventing unwanted scripts and trackers from running.\nProton Pass - Free Password Manager\nby Proton\nFree and fully encrypted password manager to keep your logins and passwords safe.\nKeep your online life secure and organized with Proton Pass, a free and fully encrypted password manager. Developed by the same company known for its secure email service, Proton Pass stores all of your logins and passwords safely, making it easy to access them on any device. It helps you create strong, unique passwords for every site you use, so you never have to remember them all and your accounts are protected from breaches.\n2FAS Auth - Two Factor Authentication\nby 2FAS\n2FAS Browser Extension is simple, private, and secure: 1 click, 1 tap, and your token is automatically entered!\nSimplify your online security with the 2FAS Auth browser extension. This extension makes two-factor authentication (2FA) quick, private, and secure. With just one click or tap, your authentication token is automatically entered, saving you from having to manually type in a code every time you log in. It\u0026rsquo;s a seamless way to add an extra layer of protection to your most important accounts without adding any hassle to your routine.\nOneTab - Save up to 95% memory and reduce tab clutter\nby OneTab\nWhenever you find yourself with too many tabs, click the OneTab icon to convert all of your tabs into a list. When you need to access the tabs again, you can either restore them individually or all at once.\nIf you\u0026rsquo;re a heavy multitasker with dozens of open tabs, OneTab is a game changer for keeping your browser running smoothly. By clicking the OneTab icon, you can instantly convert all of your open tabs into a single, organized list. This simple action can save up to 95% of your browser\u0026rsquo;s memory, significantly reducing clutter and speeding up your computer. When you need a tab back, you can restore them individually or all at once, making it a flexible and efficient way to manage your workflow.\nSingleFile - Save a complete page into a single HTML file\nby Gildas\nSingleFile is an extension that helps you to save a complete page (with CSS, images, fonts, frames, etc.) as a single HTML file.\nEver need to save a complete webpage for offline access? SingleFile is the perfect tool for the job. This extension allows you to save an entire webpage—including all of its CSS, images, fonts, and frames—as a single, self-contained HTML file. It\u0026rsquo;s an easy and reliable way to archive articles, receipts, or any other web content you want to keep without worrying about missing images or broken links.\nVideo DownloadHelper - Download Videos from the Web by Video DownloadHelper\nDownload videos from the web. Easy, smart, no tracking.\nDownload your favorite videos from the web with Video DownloadHelper. This smart and easy-to-use extension detects videos on a webpage and gives you options to download them directly. It\u0026rsquo;s designed to be simple and efficient, with no tracking, so you can save videos from a wide variety of sites privately and securely.\n","date":"1 September 2025","externalUrl":null,"permalink":"/posts/browser_ext/","section":"Posts","summary":"A list of my favorite browser extensions that enhance security, productivity, and media handling.","title":"Essential Browser Extensions for Security, Productivity, and Media","type":"posts"},{"content":"","date":"1 September 2025","externalUrl":null,"permalink":"/tags/extensions/","section":"Tags","summary":"","title":"Extensions","type":"tags"},{"content":"","date":"17 August 2025","externalUrl":null,"permalink":"/tags/development/","section":"Tags","summary":"","title":"Development","type":"tags"},{"content":"Hey everyone! Today, I want to share a bit about my programming journey and introduce you to a fantastic, often overlooked tool that\u0026rsquo;s been a consistent companion through the years: Lazarus Free Pascal.\nMy story in (real) coding began, like many in the late 80s and early 90s, with the legendary Turbo C. I remember the thrill of typing out code in that stark blue text-mode editor, and the satisfaction of seeing my C programs compile. But there was a challenge, especially with my trusty one-floppy 8088 PC, an Olivetti Prodest PC 1. Compiling anything beyond the simplest applications meant a constant dance of swapping floppy disks – one for the compiler, another for the libraries, then back again. It was a tedious, but character-building, experience! That\u0026rsquo;s when I discovered Turbo Pascal. Its integrated development environment (IDE) was the same as Turbo C without the disk swapping! Everything I needed was right there. The speed and simplicity of Pascal, coupled with the seamless workflow, made it my go-to language. It felt like magic after the floppy shuffle of C.\nSeveral years were spent gaming and programming on an Amiga 500 with Lattice C and Kick Pascal, battling tight memory limits, quirky toolchains, and constant floppy swaps to learn the ins and outs of building small projects for AmigaDOS.\nFast forward to the 2000s, and the Windows era. Borland continued to be a major player with Borland Delphi and C++Builder. Delphi, with its visual component library (VCL) and rapid application development (RAD) capabilities, was a game-changer for Windows GUI programming. Building sophisticated applications with drag-and-drop ease was incredibly empowering. C++Builder offered a similar RAD experience for C++ developers, leveraging the same powerful VCL framework. These tools were at the forefront of Windows development for a long time.\nThe Resurgence: Lazarus FPC - A Modern Open-Source Powerhouse # Years passed, and while the Borland tools evolved under different ownership, I was thrilled to discover that the spirit of Turbo Pascal and Delphi lives on, stronger than ever, in Lazarus FPC.\nLazarus is an open-source, cross-platform IDE that uses the Free Pascal Compiler (FPC). It\u0026rsquo;s a testament to the enduring power and flexibility of the Pascal language and the RAD paradigm. What makes Lazarus truly remarkable is its commitment to being Free and Open-Source Software (FOSS), supported by a vibrant and dedicated community. Why Lazarus FPC is a Big Deal # Delphi Compatibility: If you\u0026rsquo;re coming from a Delphi background, Lazarus will feel incredibly familiar. It aims for high compatibility with Delphi\u0026rsquo;s Object Pascal dialect and its Visual Component Library (VCL), offering a similar component-based, drag-and-drop development experience.\nTruly Cross-Platform: This is where Lazarus shines! You can develop applications on one operating system and compile them for others with little to no code changes. This means you can create native applications for:\nWindows (32-bit and 64-bit) Linux (GTK, Qt) macOS And even some embedded systems like Raspberry Pi! This \u0026ldquo;write once, compile anywhere\u0026rdquo; philosophy saves an immense amount of time and effort.\nNative Binaries: Unlike some other cross-platform solutions that rely on virtual machines or runtimes, Lazarus compiles your code into native executables. This results in highly performant applications with a small footprint and no external dependencies.\nRich Component Library (LCL): The Lazarus Component Library (LCL) is extensive, providing a wide array of visual and non-visual components for building all sorts of applications, from simple utilities to complex database systems.\nActive Community and FOSS: Being open-source means Lazarus is constantly evolving, with bug fixes, new features, and a supportive community ready to help. It\u0026rsquo;s a refreshing contrast to proprietary tools where you might be at the mercy of a single vendor.\nReal-World Applications Built with Lazarus FPC # You might be surprised by some of the well-known applications that are built with Lazarus and Free Pascal. Here are just a few examples:\nDouble Commander: A popular, open-source, cross-platform file manager with a dual-pane interface, similar to Total Commander. It\u0026rsquo;s a fantastic example of a robust application built entirely with Lazarus. Beyond Compare (macOS and Linux versions): This widely used data comparison utility leverages Lazarus for its macOS and Linux editions. And many more! The list is constantly growing, check the wiki here, showcasing the power and versatility of Lazarus FPC for various types of software.\nMy Ongoing Journey # My Pascal/C/C++ programming journey has steadily evolved — from the floppy-swapping days of Turbo C and Turbo Pascal, through the visual RAD era of Delphi and C++Builder, to the open-source, cross-platform power of Lazarus FPC.\nIf you\u0026rsquo;re looking for a powerful, flexible, and free alternative for building native applications across different operating systems, I highly recommend giving Lazarus FPC a try. You might just find your new favorite development environment!\nHappy coding! ✨\nReferences # Turbo C 2.01 Turbo Pascal 5.5 Olivetti Prodest PC 1 MS-DOS 6.22 Wikipedia: Borland Borland Delphi 7.0 Wikipedia: Free Pascal Wikipedia: Lazarus (IDE) Wikipedia: Visual Component Library ","date":"17 August 2025","externalUrl":null,"permalink":"/posts/lazarus/","section":"Posts","summary":"Hey everyone! Today, I want to share a bit about my programming journey and introduce you to a fantastic, often overlooked tool that’s been a consistent companion through the years: Lazarus Free Pascal.\n","title":"From Floppy Swaps to Cross-Platform Power: My Journey to Lazarus FPC 🚀","type":"posts"},{"content":"","date":"17 August 2025","externalUrl":null,"permalink":"/tags/retro/","section":"Tags","summary":"","title":"Retro","type":"tags"},{"content":"Unraid is a proprietary Linux-based operating system designed for home servers and small businesses. It\u0026rsquo;s known for its unique storage management system, which provides flexibility and data protection. You can use Unraid to run a variety of services, including web servers, databases, and CI/CD tools, all on a single machine.\nKey Features for Developer\u0026rsquo;s tasks # Docker and Virtualization: Unraid has built-in support for running Docker containers and virtual machines. This is a major plus and why I chose to build such a machine instead of a Linux server; it allows easy deployment and management of isolated application environments. You can choose between a local VPS or a Dockerized environment.\nFlexible Storage: Unraid\u0026rsquo;s most distinctive feature is its storage array. It combines drives of different sizes into a single, logical pool. This is unlike traditional RAID, which typically requires drives of the same size. Unraid uses a parity drive (or two for more protection) to protect against a single (or two) drive failure. Data is written directly to individual drives, which makes it easy to add or remove drives without rebuilding the entire array. For developers, this means they can start with a small setup and expand storage as needed without downtime or complex migrations.\nPlugin System and Community Apps: Unraid has a robust plugin system and a \u0026ldquo;Community Apps\u0026rdquo; store. This lets you easily install and manage a wide range of applications, including many useful for development, like GitLab and various reverse proxies. For example, I use Gitea, Mailpit (an email and SMTP testing tool), MariaDB, MongoDB, Redis, and TimescaleDB along with some others. Since there wasn\u0026rsquo;t a ready-to-use template for TimescaleDB, I created one and shared it with the community (it was easy).\nUse Cases # Developers can use Unraid for:\nLocal Development Environment: Host your code repositories, databases, and application servers in a single, controlled environment. CI/CD Pipeline: Run self-hosted runners for Gitlab CI, Jenkins, or other CI/CD platforms. Media and Data Hoarding: Use it as a personal media server with Plex or as a centralized backup destination for your projects. Docker: Leverage Docker containers for microservices, development environments, or isolated applications. Virtual Machines: Run various operating systems, like Windows or different Linux distributions, for testing or specialized development tasks. You can also develop your own Community Applications and share them with others, like I did with the templates at https://github.com/glls/Docker-Templates-Unraid.\n","date":"17 August 2025","externalUrl":null,"permalink":"/posts/unraid/","section":"Posts","summary":"Unraid is a proprietary Linux-based operating system designed for home servers and small businesses. It’s known for its unique storage management system, which provides flexibility and data protection. You can use Unraid to run a variety of services, including web servers, databases, and CI/CD tools, all on a single machine.\n","title":"A Developer's Introduction to Unraid","type":"posts"},{"content":"","date":"17 August 2025","externalUrl":null,"permalink":"/tags/self-hosting/","section":"Tags","summary":"","title":"Self-Hosting","type":"tags"},{"content":"","date":"17 August 2025","externalUrl":null,"permalink":"/tags/server/","section":"Tags","summary":"","title":"Server","type":"tags"},{"content":"","date":"17 August 2025","externalUrl":null,"permalink":"/tags/music/","section":"Tags","summary":"","title":"Music","type":"tags"},{"content":"In an age dominated by music streaming, a dedicated community of audiophiles and music lovers is preserving the art of the personal music collection. They are digital archivists, meticulously curating libraries of high-fidelity audio files, from rare vinyl rips to lossless studio masters. This pursuit, however, requires more than just a hard drive full of music; it demands a robust set of tools for organization, management, and playback. This is where the triumvirate of Navidrome, Picard, and Supersonic comes into play, offering a powerful, open-source ecosystem for the serious collector.\nNavidrome: Your Personal Streaming Service # At the heart of the modern self-hosted music setup lies a server (UNRAID in my case), and Navidrome has emerged as a favorite in this space. Imagine having your very own Spotify, but with your meticulously curated library instead of a corporate-controlled catalog. That\u0026rsquo;s the essence of Navidrome. It is a lightweight, open-source music server that allows you to stream your personal music collection from any web browser or mobile device.\nUnlike commercial streaming services that can abruptly alter their catalogs or downgrade audio quality, Navidrome gives you complete control. It\u0026rsquo;s designed to handle very large music collections, with developers testing it on libraries of up to 900,000 songs. Its resource-efficient nature means it can run smoothly on low-powered devices like a Raspberry Pi, making it accessible to a wide range of users.\nNavidrome\u0026rsquo;s web interface is modern, responsive, and easy to navigate. It automatically scans your library for new files and changes, ensuring your collection is always up-to-date. But its true power lies in its compatibility. Navidrome supports the Subsonic API, a de facto standard for music server clients. This means you can use a variety of third-party mobile apps for iOS and Android, such as DSub, Substreamer, or Ultrasonic, to access your music on the go. This flexibility, combined with features like on-the-fly transcoding to save mobile data and a multi-user system for family and friends, makes Navidrome the cornerstone of a personal music cloud.\nMusicBrainz Picard: The Meticulous Librarian # Before you can stream your music with Navidrome, it needs to be properly organized and tagged. This is where MusicBrainz Picard steps in as an indispensable tool. A common problem with digital music is inconsistent or missing metadata—the information embedded in audio files like song title, artist, album, and year. A music collection without good metadata is a chaotic mess, a digital junkyard of \u0026ldquo;Track 01\u0026rdquo; files.\nPicard is a cross-platform music tagger that uses the massive, community-maintained MusicBrainz database to identify and tag your audio files with unparalleled accuracy. Its most impressive feature is its use of AcoustID audio fingerprints. This technology allows Picard to \u0026ldquo;listen\u0026rdquo; to a song and identify it based on its unique sonic signature, even if the file has no existing metadata. This is a game-changer for cleaning up poorly organized libraries.\nBeyond identification, Picard offers powerful tools for organization. It can automatically rename your files and sort them into a logical folder structure based on your preferences. For example, you can script it to create folders structured like \u0026ldquo;Artist/Album/Track Number - Title.\u0026rdquo; Picard also finds and downloads the correct cover art, ensuring your music library is not only organized but also visually appealing. By using Picard, you transform a disorganized jumble of files into a clean, searchable, and aesthetically pleasing collection.\nSupersonic: The Sleek Desktop Client # While Navidrome\u0026rsquo;s web interface is excellent, many users prefer a dedicated desktop application for their music playback. This is where Supersonic shines. Supersonic is a lightweight, full-featured desktop client designed specifically for self-hosted music servers that support the Subsonic API, including Navidrome.\nSupersonic provides a native desktop experience that is often faster and more responsive than a web browser. It\u0026rsquo;s built with modern technologies and offers a clean, intuitive user interface that makes browsing your music library a pleasure. It includes a built-in 15-band graphic equalizer, allowing you to fine-tune your audio playback. You can also scrobble plays to your server, download songs, albums, or playlists for offline listening, and even access synced lyrics.\nSupersonic addresses a key pain point for self-hosted music enthusiasts: the lack of a high-quality, cross-platform desktop client. While many web interfaces are functional, a native application can provide a more polished and integrated experience. Supersonic fills this gap perfectly, acting as a bridge between your local computer and your personal music server. It allows you to enjoy the best of both worlds: the centralized control and accessibility of a server with the performance and features of a dedicated desktop player.\nThe Synergy of the Trio # The true power of Navidrome, Picard, and Supersonic is not in their individual capabilities but in their synergy. They form a complete workflow for the digital music archivist. First, you use MusicBrainz Picard to clean and tag your music files, ensuring they are perfectly organized and contain rich metadata. Next, you point your Navidrome server to this beautifully curated library. Navidrome then indexes the files and makes them available for streaming anywhere in the world. Finally, you can use Supersonic on your desktop to seamlessly connect to your Navidrome server, giving you a powerful and feature-rich way to listen to your music collection.\nThis trio of tools represents a significant shift from the corporate-driven streaming paradigm back to a model of personal ownership and control. By leveraging these open-source projects, music lovers can build a system that is tailored to their needs, respects their privacy, and ensures their music collection remains a vibrant, well-organized part of their digital life.\nAs a bonus for Android users, the mobile player Tempo is a highly-regarded and robust alternative, offering a seamless and beautiful interface for accessing your Navidrome library on the go.\n","date":"17 August 2025","externalUrl":null,"permalink":"/posts/music/","section":"Posts","summary":"In an age dominated by music streaming, a dedicated community of audiophiles and music lovers is preserving the art of the personal music collection. They are digital archivists, meticulously curating libraries of high-fidelity audio files, from rare vinyl rips to lossless studio masters. This pursuit, however, requires more than just a hard drive full of music; it demands a robust set of tools for organization, management, and playback. This is where the triumvirate of Navidrome, Picard, and Supersonic comes into play, offering a powerful, open-source ecosystem for the serious collector.\n","title":"The Digital Archivist's Toolkit: Navidrome, Picard, and Supersonic for the Modern Music Collection","type":"posts"},{"content":"","date":"6 July 2025","externalUrl":null,"permalink":"/tags/python/","section":"Tags","summary":"","title":"Python","type":"tags"},{"content":"","date":"6 July 2025","externalUrl":"https://github.com/glls/sensors","permalink":"/projects/sensors-framework/","section":"Projects","summary":"Playing with sensors and time series data","title":"Sensors","type":"projects"},{"content":"","date":"6 July 2025","externalUrl":null,"permalink":"/tags/sensors/","section":"Tags","summary":"","title":"Sensors","type":"tags"},{"content":"","date":"6 July 2025","externalUrl":null,"permalink":"/tags/time-series/","section":"Tags","summary":"","title":"Time Series","type":"tags"},{"content":"Amiberry by Dimitris Panokostas is the best emulator for the Amiga home computer. It is designed to run on Raspberry Pi, Linux and MacOS. If you are using Windows, try WinUAE which is the original emulator that Amiberry is forked from, with Amiberry being optimized for Raspberry Pi.\nIt provides a user-friendly interface and supports a wide range of Amiga games and applications. Amiberry like WinUAE, aims to deliver an authentic Amiga experience by accurately emulating the hardware and software of the original system. It includes features such as support for WHDLoad games, customizable controls, and various display options.\nHomepage: https://amiberry.com GitHub: https://github.com/BlitterStudio/amiberry Wiki: https://github.com/BlitterStudio/amiberry/wiki\nIn this intro article we are going to install Amiberry-Lite on a Raspberry Pi 400 running the official Raspberry Pi OS. We will be using the lite version of Amiberry because it is better for emulating Amiga games on Pi 4/400 (you can find the details on the official wiki page).\nThis guide assumes you have a basic understanding of using the command line and have a Raspberry Pi set up with an internet connection. If you don\u0026rsquo;t have the official Raspberry Pi OS installed, you can download it from the Raspberry Pi website. Most of the times I use an old external SSD drive for better performance and durability.\nInstallation 💾 # Download the latest release of Amiberry-Lite from the GitHub releases page. Look for the file named amiberry-lite-\u0026lt;version\u0026gt;-debian-\u0026lt;distro\u0026gt;-\u0026lt;arch\u0026gt;.zip. If you don\u0026rsquo;t know which version to download, you can check which distro you are using by running the following command in the terminal:\nlsb_release -a This will display information about your Linux distribution, including the version and codename. Make sure to download the correct version of Amiberry-Lite for your system architecture (e.g., armhf for Raspberry Pi 2/3, arm64 for Pi 4/400).\nTo check the architecture of your Raspberry Pi, you can run the following command:\narch In my case the result is aarch64, which means I need to download the arm64 version of Amiberry-Lite.\nUnzip the downloaded file to a directory of your choice. You can use the following commands in the terminal to unzip and install :\ncd ~/Downloads unzip amiberry-lite-v5.8.8-debian-bookworm-arm64.zip sudo apt install ./amiberry-lite_5.8.8_arm64.deb This will install Amiberry-Lite and its dependencies on your Raspberry. You can now run it by typing amiberry-lite in the terminal.\nRunning 👾 # Get your Amiga Floppy Disk images ready and prepare to enter nostalgia mode. I\u0026rsquo;m going to run Battle Squadron, which is one of my favorites Amiga classics, you can download it at the official game site. Select the \u0026ldquo;Floppy Drives\u0026rdquo; screen and load the ADF file in DF0:, you can adjust the Floppy Drive Emulation Speed slider to 800% for faster loading times. While running the emulator press F12 (Fn-F2 on Pi 400) to open the Amiberry GUI. Check th \u0026ldquo;Input\u0026rdquo; tab for keyboard layout options, and have in mind that standard game controllers work out of the box.\nThis article only scratches the surface of Amiberry-Lite. There are many more features and options to explore depending on which Amiga game you are playing and the Amiga model you are going to emulate. Hopefully there will be more articles in the future about Amiberry and retro computing in general.\nHave fun remembering the good old days of Amiga gaming!\n/thanks MiDWan! 👍\n","date":"21 April 2025","externalUrl":null,"permalink":"/posts/amiberry/","section":"Posts","summary":"A guide to installing Amiberry-Lite, the best Amiga emulator, on Raspberry Pi","title":"Amiberry-Lite on Raspberry Pi","type":"posts"},{"content":"","date":"21 April 2025","externalUrl":null,"permalink":"/tags/amiga/","section":"Tags","summary":"","title":"Amiga","type":"tags"},{"content":"","date":"21 April 2025","externalUrl":null,"permalink":"/tags/emulation/","section":"Tags","summary":"","title":"Emulation","type":"tags"},{"content":"","date":"21 April 2025","externalUrl":null,"permalink":"/tags/raspberry-pi/","section":"Tags","summary":"","title":"Raspberry Pi","type":"tags"},{"content":"","date":"21 April 2025","externalUrl":null,"permalink":"/tags/retro-gaming/","section":"Tags","summary":"","title":"Retro Gaming","type":"tags"},{"content":"A curated list of my GitHub stars! Generated by starred.\nContents # ActionScript Assembly Batchfile C C# C++ CSS Clojure D Dart Dockerfile Fluent Fortran FreeMarker GDScript Game Maker Language Gherkin Go HTML Java JavaScript Jinja Jupyter Notebook Kotlin Lua Makefile Markdown NSIS Objective-C Odin Others PHP PLpgSQL Pascal Perl PowerShell Python QML Rich Text Format Ruby Rust SVG Scala Shell Svelte Swift TypeScript Zig ActionScript # TerryCavanagh/VVVVVV - The source code to VVVVVV! http://thelettervsixtim.es/ increpare/bfxr - Flash + AIR sound effects generator. Based on Sfxr. spyros-papadimitriou/yperatou - Assembly # jhorneman/ambermoon - Historical source code and documents related to Ambermoon, the role-playing game developed by Thalion Software GmbH, and published for the Commodore Amiga in 1993. Batchfile # massgravel/Microsoft-Activation-Scripts - Open-source Windows and Office activator featuring HWID, Ohook, TSforge, and Online KMS activation methods, along with advanced troubleshooting. C # glmcdona/Process-Dump - Windows tool for dumping malware PE files from memory back to disk for analysis. scallyw4g/bonsai - The procedural generation voxel engine bvschaik/julius - An open source re-implementation of Caesar III libvips/libvips - A fast image processing library with low memory needs. haiwen/seafile - Beyond file syncing and sharing, a new way to organize your files with extensible file properties and flexible views o-gs/dji-firmware-tools - Tools for handling firmwares of DJI products, with focus on quadcopters. Klipper3d/klipper - Klipper is a 3d-printer firmware lwfinger/rtw88 - A backport of the Realtek Wifi 5 drivers from the wireless-next repo. obsproject/obs-studio - OBS Studio - Free and open source software for live streaming and screen recording karpathy/llama2.c - Inference Llama 2 in one file of pure C nefarius/DsHidMini - Virtual HID Mini-user-mode-driver for Sony DualShock 3 Controllers aros-development-team/AROS - Main AROS repository for active development. Contains the main Operating System components and Build System. opentyrian/opentyrian - An open-source port of the scrolling shooter Tyrian. pikvm/ustreamer - µStreamer - Lightweight and fast MJPEG-HTTP streamer wdas/ptex - Per-Face Texture Mapping for Production Rendering https://wdas.github.io/ptex phoboslab/wipeout-rewrite - kusma/amiga-dev - Amiga development environment (VBCC+VASM+VLINK) Danny02/OpenCTM - OpenCTM is a file format, a software library and a tool set for compression of 3D triangle meshes. The geometry is compressed to a fraction of comparable file formats (3DS, STL, COLLADA\u0026hellip;), and the f timescale/timescaledb - A time-series database for high-performance real-time analytics packaged as a Postgres extension wg/wrk - Modern HTTP benchmarking tool apache/age - Graph database optimized for fast analysis and real-time data processing. It is provided as an extension to PostgreSQL. esnet/iperf - iperf3: A TCP, UDP, and SCTP network bandwidth measurement tool linuxmint/nemo - File browser for Cinnamon debauchee/barrier - Open-source KVM software Genymobile/scrcpy - Display and control your Android device tvheadend/tvheadend - Tvheadend is the leading TV streaming server for Linux with ATSC, DVB-C/C2, DVB-S/S2, DVB-T/T2, IPTV, SAT\u0026gt;IP and unix pipe input sources pjreddie/NeHe-Tutorials-Using-GLFW - NeHe Tutorials using GLFW for windowing. AlexeyAB/darknet - YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet ) netdata/netdata - The fastest path to AI-powered full stack observability, even for lean teams. apache/guacamole-server - The Apache Guacamole proxy daemon (guacd), C API (libguac), and protocol support. HandBrake/HandBrake - HandBrake\u0026rsquo;s development repository endlessm/cnijfilter2 - Canon printer drivers MrZammler/iGame - iGame is a simple frontend for launching whdload games. sumatrapdfreader/sumatrapdf - SumatraPDF reader libretro/RetroArch - Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3. Wargus/wargus - Importer and scripts for Warcraft II: Tides of Darkness, the expansion Beyond the Dark Portal, and Aleonas Tales jens-maus/amissl - \u0026#x1f510; AmiSSL is the AmigaOS/MorphOS/AROS port of OpenSSL. It wraps the full functionality of OpenSSL into a full-fledged Amiga shared library that makes it possible for Amiga applicat libyal/libewf - Libewf is a library to access the Expert Witness Compression Format (EWF) microsoftarchive/redis - Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes Hexxeh/rpi-firmware - Firmware files for the Raspberry Pi AltraMayor/f3 - F3 - Fight Flash Fraud SynoCommunity/spksrc - Cross compilation framework to create native packages for the Synology\u0026rsquo;s NAS mpc-hc/mpc-hc - MPC-HC\u0026rsquo;s main repository. For support use our Trac: https://trac.mpc-hc.org/ FFmpeg/FFmpeg - Mirror of https://git.ffmpeg.org/ffmpeg.git moonlight-stream/moonlight-android - GameStream client for Android dghost/quake2vr - Quake II for Oculus Rift contiki-os/contiki - The official git repository for Contiki, the open source OS for the Internet of Things C# # Marlamin/wow.tools.local - Locally runnable version of the wow.tools website and some of its features Klocman/Bulk-Crap-Uninstaller - Remove large amounts of unwanted applications quickly. OpenTabletDriver/OpenTabletDriver - Open source, cross-platform, user-mode tablet driver space-wizards/space-station-14 - A multiplayer game about paranoia and chaos on a space station. Remake of the cult-classic Space Station 13. scrtwpns/mixbox - Mixbox is a library for natural color mixing based on real pigments. Kareadita/Kavita - Kavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and share your reading collection with you BleuBleu/FamiStudio - FamiStudio NES Music Editor hellzerg/optimizer - The finest Windows Optimizer bytefeld/epc.net - A .NET library to work with Electronic Product Codes (EPC, SSCC, SGTIN) OpenRA/OpenRA - Open Source real-time strategy game engine for early Westwood games such as Command \u0026amp; Conquer: Red Alert written in C# using SDL and OpenGL. Runs on Windows, Linux, *BSD and Mac OS X. microsoft/PowerToys - Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows UltimateFishbot/UltimateFishbot - A simple World of Warcraft fishbot written in VB.net danhermes/xamarin-xaml-book-examples - Building Xamarin.Forms Mobile Apps Using XAML - examples from the book by Dan Hermes JonasNilson/idle_master_extended - 🃏 Get your Steam Trading Cards the Fast Way (Fast Mode Extension 🚀) Depressurizer/Depressurizer - A Steam library categorizing tool. robertohuertasm/SQLite4Unity3d - SQLite made easy for Unity3d JustArchiNET/ArchiSteamFarm - C# application with primary purpose of farming Steam cards from multiple accounts simultaneously. HearthSim/Hearthstone-Deck-Tracker - A deck tracker and deck manager for Hearthstone on Windows praeclarum/sqlite-net - Simple, powerful, cross-platform SQLite client and ORM for .NET Theo47/Depressurizer - Depressurizer is a program that helps you categorize your steam games. chocolatey/choco - Chocolatey - the package manager for Windows nefarius/ScpToolkit - Windows Driver and XInput Wrapper for Sony DualShock 3/4 Controllers rallion/depressurizer - PintaProject/Pinta - Simple GTK Paint Program SonyWWS/ATF - Authoring Tools Framework (ATF) is a set of C#/.NET components for making tools on Windows. ATF has been in continuous development in Sony Computer Entertainment\u0026rsquo;s (SCE) Worldwide Studios central tool AdamsLair/duality - a 2D Game Development Framework BlitterStudio/amigula - Amiga Games UAE Launcher playgameservices/play-games-plugin-for-unity - Google Play Games plugin for Unity C++ # qbittorrent/qBittorrent - qBittorrent BitTorrent client henki-robotics/robotics_essentials_ros2 - Learn the basics of robotics through hands-on experience using ROS 2 and Gazebo simulation. gemrb/gemrb - GemRB is a portable open-source implementation of Bioware’s Infinity Engine. Cirrus-Minor/witchblast - Roguelite dungeon crawler game aristocratos/btop - A monitor of resources alicevision/AliceVision - 3D Computer Vision Framework nomic-ai/gpt4all - GPT4All: Run Local LLMs on Any Device. Open-source and available for commercial use. taglib/taglib - TagLib Audio Meta-Data Library pauldreik/rdfind - find duplicate files utility BlitterStudio/amiberry-lite - Optimized Amiga emulator for Linux electronicarts/CnC_Red_Alert - Command and Conquer: Red Alert opendata-stuttgart/sensors-software - sourcecode for reading sensor data OpenTTD/OpenTTD - OpenTTD is an open source simulation game based upon Transport Tycoon Deluxe RamboRogers/rfhunter - RFHunter is a device to find hidden Cameras at AirBNBs hoffstadt/DearPyGui - Dear PyGui: A fast and powerful Graphical User Interface Toolkit for Python with minimal dependencies Frostshake/WMVx - WoW model viewer fork / re-write. tonioni/WinUAE - WinUAE Amiga emulator LMMS/lmms - Cross-platform music production software hydrogen-music/hydrogen - The advanced drum machine for Linux, macOS, and Windows aseprite/aseprite - Animated sprite editor \u0026amp; pixel art tool (Windows, macOS, Linux) grannypron/uaf - haiku/haiku - The Haiku operating system. (Pull requests will be ignored; patches may be sent to https://review.haiku-os.org). acoustid/chromaprint - C library for generating audio fingerprints used by AcoustID cnr-isti-vclab/meshlab - The open source mesh processing system ashaduri/gsmartcontrol - GSmartControl - Hard disk drive and SSD health inspection tool fritzing/fritzing-app - Fritzing desktop application PixarAnimationStudios/OpenUSD - Universal Scene Description rcaelers/workrave - Workrave is a program that assists in the recovery and prevention of Repetitive Strain Injury (RSI). The program frequently alerts you to take micro-pauses, rest breaks and restricts you to your daily organicmaps/organicmaps - 🍃 Organic Maps is a free Android \u0026amp; iOS offline maps app for more than 6M travelers, tourists, hikers, and cyclists. It uses crowd-sourced OpenStreetMap data and is developed with love by the community ggml-org/llama.cpp - LLM inference in C/C++ fietensen/ggpo-py - GGPO Python bindings pond3r/ggpo - Good Game, Peace Out Rollback Network SDK BVLC/caffe - Caffe: a fast open framework for deep learning. SerenityOS/serenity - The Serenity Operating System 🐞 aarnt/octopi - A powerful Pacman (Package Manager) front end using Qt libs hluk/CopyQ - Clipboard manager with advanced features oguzhaninan/Stacer - Linux System Optimizer and Monitoring - https://oguzhaninan.github.io/Stacer-Web ValveSoftware/Proton - Compatibility tool for Steam Play based on Wine and additional components drogonframework/drogon - Drogon: A C++14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows lettier/3d-game-shaders-for-beginners - 🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game. nasa/fprime - F´ - A flight software and embedded systems framework opentrack/opentrack - Head tracking software for MS Windows, Linux, and Apple OSX coin3d/coin - Coin3D core library ModOrganizer2/modorganizer - Mod manager for various PC games. Discord Server: https://discord.gg/ewUVAqyrQX if you would like to be more involved Sumwunn/AchievementsModsEnabler - Enables achievements in Fallout 4 \u0026amp; Skyrim SE when using mods. This is designed to be version independent. pqrs-org/Karabiner-Elements - Karabiner-Elements is a powerful tool for customizing keyboards on macOS simulationcraft/simc - Simulationcraft engine/GUI facebook/react-native - A framework for building native applications using React kometbomb/prototracker - Prototracker Studio3T/robomongo - Native cross-platform MongoDB management tool BlitterStudio/amiberry - Optimized Amiga emulator sshock/AFFLIBv3 - AFF is an open and extensible file format to store disk images and associated metadata. tensorflow/tensorflow - An Open Source Machine Learning Framework for Everyone x64dbg/x64dbg - An open-source user mode debugger for Windows. Optimized for reverse engineering and malware analysis. NVIDIA/caffe - Caffe: a fast open framework for deep learning. Chips-fr/uae4arm-rpi - Port of uae4arm on Raspberry Pi and Libretro keepassx/keepassx - KeePassX is a cross platform port of the windows application “Keepass Password Safe”. Eun/MoveToDesktop - Move windows using hotkeys or the system menu google/zooshi - Multi-platform game where you feed well dressed animals with sushi acaudwell/Gource - software version control visualization pqrs-org/Karabiner-archived - Karabiner (KeyRemap4MacBook) is a powerful utility for keyboard customization. Pulse-Eight/libcec - USB CEC Adapter communication Library mapeditor/tiled - Flexible level editor deskflow/deskflow - Share a single keyboard and mouse between multiple computers. mamedev/mame - MAME FrodeSolheim/fs-uae - Cross-platform Amiga emulator with a slight focus on gaming, but also with solid support for productivity apps including just-in-time (JIT) compilation. urraka/texpack - Simple cross-platform command line texture packer based on the MaxRects algorithm by Jukka Jylänki (https://github.com/juj/RectangleBinPack). opencv/opencv - Open Source Computer Vision Library vlc-qt/vlc-qt - VLC-Qt - a simple library to connect Qt application with libVLC bwapi/bwapi - Brood War API GarageGames/Torque2D - MIT Licensed Open Source version of Torque 2D game engine from GarageGames loot/loot - A modding utility for Starfield and some Elder Scrolls and Fallout games. diwu/AnalyticX - A C++ wrapper of Flurry for Cocos2d-X. Supports Android and iOS. Razor-qt/razor-qt - Razor is now LXQt: CSS # SixArm/ui-ux-design-guide - UI/UX Design Guide: this book explains one topic per page, like a big glossary, easy wiki, quick encyclopedia, or summary notes. Edited by Joel Parker Henderson (@joelparkerhenderson). jamiewilson/predawn - Predawn is a dark interface and syntax theme for Sublime Text and Atom. aleksip/shila-drupal-theme - Atomic design and Pattern Lab friendly, component-based, fairly unopinionated starting point for new Drupal themes ColorlibHQ/AdminLTE - AdminLTE - Free admin dashboard template based on Bootstrap 5 SU-SWS/open_framework - Open Framework Drupal Theme Clojure # tonsky/FiraCode - Free monospaced font with programming ligatures D # portmobile/LAGP-Example-Code - Example code from the book Learning Android Game Programming: A Hands On Guide for Building Your First Android Game Dart # s3ppo/unraid_mobile_ui - ubuntu/app-center - App Store for Ubuntu made with Flutter 🧡 💙 SpicyChair/pluvia_weather_flutter - Pluvia 🌦️ | A weather app with beautiful animations, built with Flutter. felangel/bloc - A predictable state management library that helps implement the BLoC design pattern SharezoneApp/sharezone-app - Sharezone is a collaborative school organization app for iOS, Android, macOS and web with +500,000 downloads. Built with Flutter \u0026amp; Firebase. sbis04/flutter_camera_demo - Flutter camera demo authpass/authpass - AuthPass - Password Manager based on Flutter for all platforms. Keepass 2.x (KDBX 3 and KDBX 4) compatible. flutter/flutter - Flutter makes it easy and fast to build beautiful apps for mobile and beyond Dockerfile # goldbergyoni/nodebestpractices - \u0026#x2705; The Node.js best practices list (July 2024) laradock/laradock - Full PHP development environment for Docker. Fluent # janeczku/calibre-web - \u0026#x1f4da; Web app for browsing, reading and downloading eBooks stored in a Calibre database Fortran # KUL-RSDA/AquaCrop - AquaCrop source code endorsed by FAO FreeMarker # mozilla/send - Simple, private file sharing from the makers of Firefox GDScript # git-learning-game/oh-my-git - An interactive Git learning game! Game Maker Language # YoYoGames/GMRT-Beta - Bug Tracking for new GameMaker Runtime Beta patrickgh3/DerpXml - Lightweight SAX-style XML parser for GameMaker Gherkin # acquia/drupal-spec-tool - A tool for specifying Drupal architecture details and generating automated tests for them. Go # gohugoio/hugo - The world’s fastest framework for building websites. jurkovic-nikola/OpenLinkHub - Open source interface for iCUE LINK Hub and other Corsair AIOs, Hubs for Linux. Manage RGB lighting, fan speeds, system metrics, as well as keyboards, mice, headsets via a web dashboard. photoprism/photoprism - AI-Powered Photos App for the Decentralized Web 🌈💎✨ dweymouth/supersonic - A lightweight and full-featured cross-platform desktop client for self-hosted music servers hybridgroup/gobot - Golang framework for robotics, drones, and the Internet of Things (IoT) maxence-charriere/go-app - A package to build progressive web apps with Go programming language and WebAssembly. cgzirim/seek-tune - An implementation of Shazam\u0026rsquo;s song recognition algorithm. ollama/ollama - Get up and running with Kimi-K2.5, GLM-5, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other models. simulot/immich-go - An alternative to the immich-CLI command that doesn\u0026rsquo;t depend on nodejs installation. It tries its best for importing google photos takeout archives. navidrome/navidrome - 🎧 Your Personal Streaming Service AlexxIT/go2rtc - Ultimate camera streaming application JanDeDobbeleer/oh-my-posh - The most customisable and low-latency cross platform/shell prompt renderer mudler/LocalAI - LocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required. miniflux/v2 - Minimalist and opinionated feed reader kubernetes/kubernetes - Production-Grade Container Scheduling and Management Jguer/yay - Yet another Yogurt - An AUR Helper written in Go tristangoossens/snake-go - Snake game made in Go! 🐍 github/gh-ost - GitHub\u0026rsquo;s Online Schema-migration Tool for MySQL FiloSottile/mkcert - A simple zero-config tool to make locally trusted development certificates with any names you\u0026rsquo;d like. ddev/ddev - Docker-based local PHP+Node.js web development environments syncthing/syncthing - Open Source Continuous File Synchronization HTML # nunocoracao/blowfish - Personal Website \u0026amp; Blog Theme for Hugo FluxionNetwork/fluxion - Fluxion is a remake of linset by vk496 with enhanced functionality. publiclab/leaflet-multispectral - Multispectral color manipulation and processing (NDVI etc) for Leaflet image overlays with pure JavaScript in Image Sequencer vnglst/pong-wars - It\u0026rsquo;s the eternal battle between day and night, good and bad. Written in JavaScript with some HTML \u0026amp; CSS in one index.html. sanderfrenken/Universal-LPC-Spritesheet-Character-Generator - Character Generator based on Universal-LPC-Spritesheet ebelinski/apilevels - A microsite overview of all Android 🤖 versions and their corresponding API/SDK levels, version codes, codenames, and market shares. hunar4321/particle-life - A simple program to simulate artificial life using attraction/reuplsion forces between many particles ossu/computer-science - 🎓 Path to a free self-taught education in Computer Science! LukaszPawlowski-MS/Optimize-Publish-To-Web - Shows how to optimize a Power BI Publish to embed code to fit perfectly in a web page. russellsamora/scrollama - Scrollytelling with IntersectionObserver. FrontendMasters/learning-roadmap - The Front-End Developer Learning Roadmap by Frontend Masters drupaltools/drupaltools.github.io - A curated list of OS tools used for Drupal related tasks. hack-tools/hack-tools.github.io - Tools, resources, tips and other \u0026ldquo;hackathon related\u0026rdquo; stuff. google/material-design-lite - Material Design Components in HTML/CSS/JS privacytools/privacytools.io - 🛡🛠 You are being watched. Protect your privacy against global mass surveillance. FrontendMasters/front-end-handbook-2017 - 2017 edition of our front-end development guide iloire/watchmen - A simple node.js service monitor google/fonts - Font files available from Google Fonts, and a public issue tracker for all things Google Fonts JustSteveKing/Bolt-Medium - A Medium Inspired blogging theme for Bolt CMS ripienaar/free-for-dev - A list of SaaS, PaaS and IaaS offerings that have free tiers of interest to devops and infradev cvondrick/vatic - Efficiently Scaling Up Video Annotation with Crowdsourced Marketplaces. IJCV 2012 danmunn/redmine_dmsf - Fork of svn repository for redmine_dmsf google/styleguide - Style guides for Google-originated open-source projects Java # termux/termux-app - Termux - a terminal emulator application for Android OS extendible by variety of packages. thingsboard/thingsboard - Open-source IoT Platform - Device management, data collection, processing and visualization. CappielloAntonio/tempo - An open source and lightweight music client for Subsonic, designed and built natively for Android. Vagelis-Prokopiou/yt - YouTube code geopaparazzi/geopaparazzi - Because not all paparazzis are evil! hwding/pdf-unstamper - Remove textual watermark of any font, any encoding and any language with pdf-unstamper now! billthefarmer/sig-gen - Android Signal Generator oracle/graal - GraalVM compiles applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀 googlearchive/science-journal - Use the sensors in your mobile devices to perform science experiments. Science doesn’t just happen in the classroom or lab—tools like Science Journal let you see how the world works with just your pho Haehnchen/idea-php-annotation-plugin - Add PHP annotation support for PhpStorm and IntelliJ amitshekhariitbhu/awesome-android-things - A curated list of awesome android things tutorials, libraries and much more at one place Nilhcem/tensorflow-classifier-android - http://nilhcem.com/android/custom-tensorflow-classifier IvanVolosyuk/diskusage - Automatically exported from code.google.com/p/diskusage timusus/Shuttle - Shuttle Music Player nordicsemi/Android-Scanner-Compat-Library - A compat library for Bluetooth Low Energy scanning on Android. alexstyl/Greek-namedays - All Greek Namedays in JSON format bpellin/keepassdroid - KeePass implementation for android osmdroid/osmdroid - OpenStreetMap-Tools for Android Revivius/nb-darcula - Darcula LAF for NetBeans magarena/magarena - Magarena is a single-player fantasy card game played against a computer opponent. lukehutch/android-multitouch-controller - Automatically exported from code.google.com/p/android-multitouch-controller fyhertz/spydroid-ipcamera - A powerful and funny android app. that streams the camera and microphone of your phone to your browser or to VLC antoniolg/MaterializeYourApp - Example of a Material App for Android libgdx/libgdx - Desktop/Android/HTML5/iOS Java game development framework UnderwaterApps/overlap2d-runtime-libgdx - Overlap2D - UI and Level Editor libgdx runtime nicolasgramlich/AndEngineExamples - AndEngine - Examples EssexUniversityMCTS/gvgai - This is the framework for the General Video Game Competition - http://www.gvgai.net/ syncthing/syncthing-android - Wrapper of syncthing for Android. CellularPrivacy/Android-IMSI-Catcher-Detector - AIMSICD • Fight IMSI-Catcher, StingRay and silent SMS! watabou/pixel-dungeon - Traditional roguelike game with pixel-art graphics and simple interface sergstetsuk/CosyDVR - android open source auto DVR INsReady/DrupalCloud - DrupalCloud is a library for native Android applications to communicate with Drupal web services. roboguice/roboguice - Google Guice on Android, version 3.0 [RETIRED] JakeWharton/ActionBarSherlock - [DEPRECATED] Action bar implementation which uses the native action bar on Android 4.0+ and a custom implementation on pre-4.0 through a single API and theme. iPaulPro/aFileChooser - [DEPRECATED] Android library that provides a file explorer to let users select files on external storage. routerkeygen/routerkeygenAndroid - Router Keygen generate default WPA/WEP keys for several routers. nicolasgramlich/AndEngine - Free Android 2D OpenGL Game Engine voidcode/Diaspora-Webclient - A simple android/ Diaspora-Webclient wiglenet/wigle-wifi-wardriving - Nethugging client for Android, from wigle.net JavaScript # usebruno/bruno - Opensource IDE For Exploring and Testing API\u0026rsquo;s (lightweight alternative to Postman/Insomnia) openseadragon/openseadragon - An open-source, web-based viewer for zoomable images, implemented in pure JavaScript. zen-browser/desktop - Welcome to a calmer internet mozilla-firefox/firefox - The official repository of Mozilla\u0026rsquo;s Firefox web browser. d-demirci/django-adminlte3 - AdminLTE Templates, Template Tags, and Admin Theme for Django Mintplex-Labs/anything-llm - The all-in-one AI productivity accelerator. On device and privacy first with no annoying setup or configuration. Mathics3/Mathics3-django - Django front-end to Mathics3 PavelDoGreat/WebGL-Fluid-Simulation - Play with fluids in your browser (works even on mobile) murdos/musicbrainz-userscripts - Collection of userscripts for MusicBrainz, by various authors ronkok/Hurmet - Rich text editor on the web, featuring live calculations. anvaka/map-of-github - Inspirational Mapping stuartmatthews/leaflet-geotiff - Leaflet plugin for displaying geoTIFF raster data trekhleb/javascript-algorithms - 📝 Algorithms and data structures implemented in JavaScript with explanations and links to further readings mapbox/pixelmatch - The smallest, simplest and fastest JavaScript pixel-level image comparison library drawdb-io/drawdb - Free, simple, and intuitive online database diagram editor and SQL generator. floccusaddon/floccus - \u0026#x2601;\u0026#xfe0f; Sync your bookmarks privately across browsers and devices Kruithne/wow.export - 📦 wow.export is the number one export toolkit for World of Warcraft. gethomepage/homepage - A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations. sparkbox/bouncy-ball - \u0026#x1f534; Compare web animation techniques by bouncing a ball with each one. looeee/discoverthreejs-site - Repo for the book Discover three.js! nolimits4web/swiper - Most modern mobile touch slider with hardware accelerated transitions processing/p5.js - p5.js is a client-side JS platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. It is based on the core principles of Processin steffest/DPaint-js - Webbased image editor, modeled after the legendary Deluxe Paint with a focus on retro Amiga file formats: read and write Amiga icon files and IFF ILBM images/animations YoYoGames/GameMaker-HTML5 - GameMaker HTML5 runtime naptha/tesseract.js - Pure Javascript OCR for more than 100 Languages 📖🎉🖥 Tsam88/gym-app - alyssaxuu/mapus - A map tool with real-time collaboration 🗺️ nagix/mini-tokyo-3d - A real-time 3D digital map of Tokyo\u0026rsquo;s public transport system linuxfoundation/lf-podcast - From the Linux Foundation office in New York City, welcome to \u0026ldquo;The Untold Stories of Open Source\u0026rdquo;. Each week we explore the people who are supporting Open Source projects, how they became involved wit tilemill-project/tilemill - TileMill is a modern map design studio gildas-lormeau/SingleFile - Web Extension for saving a faithful copy of a complete web page in a single HTML file hackjutsu/Lepton - 💻 Democratizing Snippet Management (macOS/Win/Linux) eurostat/eurostat-map - Thematic web maps based on D3 🗺️ potree/potree - WebGL point cloud viewer for large datasets vercel/next.js - The React Framework btholt/complete-intro-to-react-v6 - learn React.js with Brian Holt emotion-js/emotion - 👩‍🎤 CSS-in-JS library designed for high performance style composition btholt/intro-to-web-dev-v2 - Intro to Web Dev, v2 segunadebayo/chakra-ui - ⚡️Simple, Modular \u0026amp; Accessible UI Components for your React Applications EDCD/coriolis - Coriolis Shipyard for Elite Dangerous juliangarnier/anime - JavaScript animation engine xeokit/xeokit-bim-viewer - Built with xeokit SDK. IFC, BIM and Point Cloud 3D Viewer as a package. Enables AEC \u0026amp; GIS applications with double precision global coordinates. parallax/jsPDF - Client-side JavaScript PDF generation for everyone. leeoniya/uPlot - 📈 A small, fast chart for time series, lines, areas, ohlc \u0026amp; bars BreeeZe/rpos - Raspberry Pi Onvif Server aframevr/aframe - \u0026#x1f170;\u0026#xfe0f; Web framework for building virtual reality experiences. ElasticHQ/elasticsearch-HQ - Monitoring and Management Web Application for ElasticSearch instances and clusters. santinic/hackwage - RSS/JSON Aggregator and Search Engine for IT Jobs PacktPublishing/React-and-React-Native-Second-Edition - React and React Native, Second Edition, published by Packt axios/axios - Promise based HTTP client for the browser and node.js mozilla/pdf.js - PDF Reader in JavaScript jondot/awesome-react-native - Awesome React Native components, news, tools, and learning material! cnwangjie/better-onetab - \u0026#x1f4d1; A better OneTab for Chrome \u0026#x1f4dd; Coding-Coach/coding-coach - This is the landing page :) Kruithne/Recipe-Completion - A website for tracking World of Warcraft profession progress mrdoob/three.js - JavaScript 3D Library. gorhill/uBlock - uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean. Leaflet/Leaflet - 🍃 JavaScript library for mobile-friendly interactive maps 🇺🇦 evolus/pencil - The Pencil Project\u0026rsquo;s unique mission is to build a free and opensource tool for making diagrams and GUI prototyping that everyone can use. winstonjs/winston - A logger for just about everything. verekia/js-stack-from-scratch - 🛠️⚡ Step-by-step tutorial to build a modern JavaScript stack. summernote/summernote - Super Simple WYSIWYG Editor wenzhixin/bootstrap-table - An extended table for integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation, Vue.js) karpathy/convnetjs - Deep Learning in Javascript. Train Convolutional Neural Networks (or ordinary ones) in your browser. dli/paint - Fluid Paint - http://david.li/paint keplr-io/quiver - Interactive convnet features visualization for Keras vmasto/react-slides - The UI as a Pure Function vmasto/express-babel - Express starter kit with ES2017+ support, testing, linting, and code coverage cornerstonejs/cornerstone - [Deprecated] Use Cornerstone3D Instead https://cornerstonejs.org/ piskelapp/piskel - A simple web-based tool for Spriting and Pixel art. auduno/clmtrackr - Javascript library for precise tracking of facial features via Constrained Local Models ajlkn/skel - A lightweight responsive framework for the www trailsjs/sails-auth - Passport-based User Authentication system for sails.js applications. Designed to work well with the sails-permissions module. allensarkisyan/VideoFrame - VideoFrame - HTML5 Video SMPTE Time Code and Frame Seeking API tsevdos/greek-in-tech-site - An ES6, Backbone, single page application (SPA), that demonstrates many greek words and names that we constantly use on modern computing and software engineering dthree/cash - Cross-platform Linux commands in ES6 sirodoht/ketchup - Pomodoro timer in React tj/consolidate.js - Template engine consolidation library for node.js bevacqua/dragula - \u0026#x1f44c; Drag and drop so simple it hurts codecombat/codecombat - Game for learning how to code. victorporof/Sublime-HTMLPrettify - HTML, CSS, JavaScript, JSON, React/JSX and Vue code formatter for Sublime Text 2 and 3 via node.js balderdashy/waterline - An adapter-based ORM for Node.js with support for mysql, mongo, postgres, mssql (SQL Server), and more tarlepp/Taskboard - a Sails application to mimic \u0026ldquo;scrum-ban\u0026rdquo; taskboard. irlnathan/activityoverlord - An application I\u0026rsquo;m building to learn sails.js balderdashy/sails - Realtime MVC Framework for Node.js hypest/ipcamAlarmPebble - Toggle the email alarm in your foscam ip camera. LiberatedPixelCup/Universal-LPC-Spritesheet-Character-Generator - Character Generator based on Universal-LPC-Spritesheet irlnathan/activityoverlord20 - This is an update to activityOverlord. CodeboxIDE/codebox - Open source cloud \u0026amp; desktop IDE miloyip/nativejson-benchmark - C/C++ JSON parser/generator benchmark vjeux/jsWoWModelViewer - Display World of Warcraft Models (M2) in WebGL NUKnightLab/TimelineJS - TimelineJS: A Storytelling Timeline built in JavaScript. wise9/enchant.js - A simple JavaScript framework for creating games and apps atom/atom - :atom: The hackable text editor phaserjs/phaser - Phaser is a fun, free and fast 2D game framework for making HTML5 games for desktop and mobile web browsers, supporting Canvas and WebGL rendering. drichard/mindmaps - An open source, offline capable, mind mapping application leveraging HTML5 technologies linuxmint/cinnamon - A Linux desktop featuring a traditional layout, built from modern technology and introducing brand new innovative features. vitalets/x-editable-yii - Yii extension for creating editable elements giovdk21/yiiplayground - Repository of the Yii Playground project clevertech/YiiBooster - YiiBooster icos-urenio/virtual-city-market - Empowers the city local marketplace by bringing together customers and merchants. mozilla/BrowserQuest - DEPRECATED - A HTML5/JavaScript multiplayer game experiment adam-p/markdown-here - Google Chrome, Firefox, and Thunderbird extension that lets you write email in Markdown and render it before sending. googlearchive/ChromeWebLab - The Chrome Web Lab for Makers, Hackers and everyone thomaspark/bootswatch - Themes for Bootstrap malsup/blockui - jQuery BlockUI Plugin tomayac/isearch - I-SEARCH GUI Jinja # CuriousLearner/django-keel - A versatile, production-ready Django project template for any use case Build SaaS applications, API backends, web apps, or internal tools with one template. iiab/iiab - Internet-in-a-Box - Build your own LIBRARY OF ALEXANDRIA with a Raspberry Pi ! Jupyter Notebook # facebookresearch/sam2 - The repository provides code for running inference with the Meta Segment Anything Model 2 (SAM 2), links for downloading the trained model checkpoints, and example notebooks that show how to use the m udlbook/udlbook - Understanding Deep Learning - Simon J.D. Prince tloen/alpaca-lora - Instruct-tune LLaMA on consumer hardware tensorflow/codelabs - onnx/models - A collection of pre-trained, state-of-the-art models in the ONNX format jcjohnson/densecap - Dense image captioning in Torch Kotlin # scubajeff/lespas - Les Pas, photo album app for Nextcloud user breezy-weather/breezy-weather - A feature-rich weather app with good visualizations and more than 50 sources. topjohnwu/Magisk - The Magic Mask for Android feelfreelinux/octo4a - Use your old Android device as an OctoPrint server. JetBrains/kotlin - The Kotlin Programming Language. kickstarter/android-oss - Kickstarter for Android. Bring new ideas to life, anywhere. nickbutcher/plaid - An Android app which provides design news \u0026amp; inspiration as well as being an example of implementing material design. Lua # VgerMods/Pawn - Pawn: find upgrades, do more damage, win. (Download releases and ask questions at CurseForge.) koreader/koreader - An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices WeakAuras/WeakAuras2 - World of Warcraft addon that provides a powerful framework to display customizable graphics on your screen. Ludovicus-Maior/WoW-Pro-Guides - A World of Warcraft addon bringing guides into the game. Makefile # 13rac1/twemoji-color-font - Twitter Unicode emoji color OpenType-SVG font for Linux/MacOS/Windows exynos5420/android_device_samsung_n2awifi - Markdown # codecrafters-io/build-your-own-x - Master programming by recreating your favorite technologies from scratch. selwynpolit/d9book - Drupal at your Fingertips: A modern Drupal quick reference for developers NSIS # Apress/gamemaker-studio-100-prog-challenges - Source code for \u0026lsquo;GameMaker: Studio 100 Programming Challenges\u0026rsquo; by Ben Tyers Objective-C # sveinbjornt/Sloth - Mac app that shows all open files, directories, sockets, pipes and devices in use by all running processes. Nice GUI for lsof. yujitach/MenuMeters - my fork of MenuMeters by http://www.ragingmenace.com/software/menumeters/ HexFiend/HexFiend - A fast and clever hex editor for macOS emcrisostomo/MenuMeters - CPU, memory, disk, and network monitoring tools for macOS Cozmonat/HWSensors - HWSensors is a software bundle that includes drivers and applications that allow you to access information from hardware sensors available on your Mac sequelpro/sequelpro - MySQL/MariaDB database management for macOS MacPass/MacPass - A native macOS KeePass client mikepj/XRG - System monitor for macOS. eczarny/spectacle - Spectacle allows you to organize your windows without using a mouse. alcatraz/Alcatraz - Package manager for Xcode arauchfuss/Simple-Comic - OS X comic viewer Odin # gaultier/minesweeper-from-scratch - A video game only using direct X11 calls for rendering, without any library, in Odin. Others # MrV2K/Amiga-Game-Selector - A place to store the scripts for Amiga Game Selector artnitolog/awesome-arxiv - Curated resources for discovering, reading, and working with arXiv papers spthermo/mechkeyboards - DIY 60% mechanical keyboard experience sharing. junfanz1/Software-Engineer-Coding-Interviews - Data Structure Algorithms, (GenAI/ML) System Design, Machine Learning, DevOps coding interview practices sindresorhus/awesome-whisper - 🔊 Awesome list for Whisper — an open-source AI-powered speech recognition system developed by OpenAI deepseek-ai/DeepSeek-R1 - NVIDIAGameWorks/rtx-remix - Combined repo for the RTX-Remix runtime and toolkit mlfoundations/MINT-1T - 🍃 MINT-1T: A one trillion token multimodal interleaved dataset. nicanorflavier/spf-dkim-dmarc-simplified - Email security is a key part of internet communication. But what are SPF, DKIM, and DMARC, and how do they work? This guide will explain it all in simple terms to make these concepts clearer. Kavex/GameDev-Resources - \u0026#x1f3ae; \u0026#x1f3b2; A wonderful list of Game Development resources. arcataroger/awesome-engineering-games - A curated list of engineering-related video games rated Very Positive or higher on Steam p0rcupine/Contract-Killer - The Greek version of Contract Killer springload/awesome-wagtail - A curated list of awesome packages, articles, and other cool resources from the Wagtail community. Haxxnet/Compose-Examples - Various Docker Compose examples of selfhosted FOSS and proprietary projects. michiganrobotics/rob501 - Mathematics for Robotics meanands/heroku-free-alternatives - Free tier of Heroku Dynos, Postgres and Data for Redis will no longer be available after November 28, 2022. Let\u0026rsquo;s find a list of services with a free plan that developers can use as an alternative to BlitterStudio/AnimPlayer - A simple multi-format, multi-platform Anim player Agri-Hub/Callisto-Dataset-Collection - A list of datasets aiming to enable Artificial Intelligence applications that use Copernicus data. awesome-selfhosted/awesome-selfhosted - A list of Free Software network services and web applications which can be hosted on your own servers theodorosploumis/greek-fonts - Awesome Greek Fonts list theodorosploumis/awesome-drupal - A collection of awesome resources, tools, books, podcasts etc for Drupal CMS. aiba/react-native-m1 - react-native 0.64.2 with Apple M1 and XCode 12.5 dimitrisraptis96/design-heaven - \u0026#x1f47c; Stunning open source design resources for designers and developers dracula/gamemaker-studio - 🧛🏻‍♂️ Dark theme for GameMaker Studio 2 jwasham/coding-interview-university - A complete computer science study plan to become a software engineer. zziz/pwc - This repository is no longer maintained. adnan360/lazarus-beginners-guide - A book written for new Lazarus users, named \u0026ldquo;Beginners’ Guide to Lazarus IDE\u0026rdquo;. Moved to: https://gitlab.com/adnan360/lazarus-beginners-guide 44bits/awesome-opensource-documents - \u0026#x1f4d8; A curated list of awesome open source or open source licensed documents, guides, books. kargig/greek-spammers - Greek Spammers Email Addresses Blacklist ziadoz/awesome-php - A curated list of amazingly awesome PHP libraries, resources and shiny things. veggiemonk/awesome-docker - \u0026#x1f433; A curated list of Docker resources and projects googlecreativelab/quickdraw-dataset - Documentation on how to access and use the Quick, Draw! Dataset. hechoendrupal/drupal8-links - Drupal 8 links \u0026amp; resources wireapp/wire - \u0026#x3030;\u0026#xfe0f; Overview of the open source code for Wire postlight/awesome-cms - 📚 A collection of open and closed source Content Management Systems (CMS) for your perusal. ChristosChristofidis/awesome-deep-learning - A curated list of awesome Deep Learning tutorials, projects and communities. NVIDIA/nvidia-docker - Build and run Docker containers leveraging NVIDIA GPUs yeoman/yeoman - Yeoman - a set of tools for automating development workflow lukasz-madon/awesome-remote-job - A curated list of awesome remote jobs and resources. Inspired by https://github.com/vinta/awesome-python sindresorhus/quick-look-plugins - List of useful Quick Look plugins for developers Eun/DisableMonitor - Easily disable or enable a monitor on your Mac. awesomedata/awesome-public-datasets - A topic-centric list of HQ open datasets. michael-jahn-dev/SoDaReloaded-Theme - Dark and light custom UI themes for Sublime Text 3 optimized for better readability. jlevy/the-art-of-command-line - Master the command line, in one page Homebrew/legacy-homebrew - 💀 The former home of Homebrew/homebrew (deprecated) codepath/android_guides - Extensive Open-Source Guides for Android Developers kahun/awesome-sysadmin - A curated list of amazingly awesome open source sysadmin resources inspired by Awesome PHP. eellak/transmem - Translation Memory of Greek-English terms leereilly/games - Archived — A list of games, add-ons, maps, etc. hosted on GitHub. Any genre. Any platform. Any engine. macfuse/macfuse - macFUSE umbrella repository crawshaw/sqlitejdbc - SQLite JDBC Driver PHP # unraid/webgui - Unraid Web UI phoronix-test-suite/phoronix-test-suite - The Phoronix Test Suite open-source, cross-platform automated testing/benchmarking software. Part-DB/Part-DB-server - Part-DB is an Open source inventory management system for your electronic components librespeed/speedtest - Self-hosted Speed Test for HTML5 and more. Easy setup, examples, configurable, mobile friendly. Supports PHP, Node, Multiple servers, and more ec-europa/joinup-dev - The Joinup project moved to https://git.fpfis.eu/ec-europa/digit-joinup-reference thephpleague/oauth2-client - Easy integration with OAuth 2.0 service providers. DesignPatternsPHP/DesignPatternsPHP - Sample code for several design patterns in PHP 8.x grokability/snipe-it - A free open source IT asset/license management system kapolos/pramda - Practical Functional Programming in PHP urlhum/UrlHum - The modern, privacy-aware URL Shortener built in PHP. sebastianbergmann/container-amiga-gcc - Containerfile for AmigaOS Cross-Compiler Toolchain octobercms/october - Self-hosted CMS platform based on the Laravel PHP Framework. fzaninotto/Faker - Faker is a PHP library that generates fake data for you d6lts/drupal - Fork of Drupal core for Drupal 6 LTS support. theodorosploumis/distros.bid - A saas to create drupal websites in seconds using docker containers. sebastianbergmann/phpunit - The PHP Unit Testing framework. vlucas/phpdotenv - Loads environment variables from .env to getenv(), $_ENV and $_SERVER automagically. symfony/symfony - The Symfony PHP framework phpsysinfo/phpsysinfo - phpSysInfo: a customizable PHP script that displays information about your system nicely PrivateBin/PrivateBin - A minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES. itsam/imc - Improve My City :: The new extension package for Joomla 3 danielmiessler/SecLists - SecLists is the security tester\u0026rsquo;s companion. It\u0026rsquo;s a collection of multiple types of lists used during security assessments, collected in one place. List types include usernames, passwords, URLs, sensi justafish/drupal_cors - Drupal CORS module http://drupal.org/project/cors yiisoft/yii - Yii PHP Framework 1.1.x drupal/drupal - Verbatim mirror of the git.drupal.org repository for Drupal core. Please see the https://github.com/drupal/drupal#contributing. PRs are not accepted on GitHub. drupalcommerce/commerce - Commerce 2.x development seblucas/cops - Calibre OPDS (and HTML) PHP Server : web-based light alternative to Calibre content server / Calibre2OPDS to serve ebooks (epub, mobi, pdf, \u0026hellip;) mishamx/yii-user - Yii PHP Framework extension for registration and management users accounts. schmunk42/yii-relation - Yii Framework active record relation components schmunk42/gii-template-collection - Gii Template Collection with code templates for models and CRUDs yiiext/activerecord-relation-behavior - Inspired by and put together the awesomeness of many yii extensions that aim to improve saving of related records. Comes with 100% test coverage and well structured and clean code so it can savely be evan108108/RESTFullYii - RESTFull API for your Yii application drush-ops/drush - Drush is a command-line shell and scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those who spend their working hours hacking away at the command prompt. icos-urenio/Improve-my-city - Improve my city allows citizens to report, vote and track non-emergency issues PLpgSQL # datalens-tech/datalens - A modern, scalable analytics system Pascal # tomboy-notes/tomboy-ng - Next generation of Tomboy damieng/DiskImageManager - Visual inspection tool for .dsk Spectrum/Amstrad disk images Fr0sT-Brutal/awesome-pascal - A curated list of awesome Delphi/FreePascal/(any)Pascal frameworks, libraries, resources, and shiny things. Inspired by awesome-\u0026hellip; stuff. Open source and freeware only! doublecmd/doublecmd - Double Commander is a free cross platform open source file manager with two panels side by side. neurolabusc/MRIcron - Simple medical imaging visualization tool designed for NIfTI images. Includes dcm2nii for conversion of DICOM, Philips, and other proprietary formats. JAM-Software/Virtual-TreeView - Virtual Treeview is a Delphi treeview control neurolabusc/surf-ice - GLSL surface rendering source code. Compiled versions available from NITRC. Loads 3DS, CTM, DXF, FreeSurfer, GII (GIfTI), GTS, LWO2, MS3D, MZ3, NV (BrainNetViewer), OBJ, OFF, PLY, STL, VTK. Tractograp mike-lischke/GraphicEx - GraphicEx - a Delphi image loader library Perl # liske/needrestart - Restart daemons after library updates. metabrainz/musicbrainz-server - Server for the MusicBrainz project (website, API, database tools) PowerShell # ScoopInstaller/Scoop - A command-line installer for Windows. leddt/visualstudio-colors-solarized - Visual Studio color schemes based on https://github.com/altercation/solarized Python # 9001/copyparty - Portable file server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file Joelzeller/DigitalRaceDashSlim - Digital Race Dash designed for use on Raspberry Pi in a Honda S2000 kivy/kivy - Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS ArgeliusLabs/Chasing-Your-Tail-NG - MUCH Improved version of the Python Chasing Your Tail Tool to help you determine if you\u0026rsquo;re being followed apurvsinghgautam/robin - AI-Powered Dark Web OSINT Tool neondatabase/appdotbuild-agent - The agent that generates working apps (and maybe some other things) google-research/tnco - TNCO is a heuristic tool that optimizes tensor network contraction paths. langchain-ai/langgraph - Build resilient language agents as graphs. langchain-ai/langchain - The agent engineering platform pydantic/pydantic - Data validation using Python type hints run-llama/llama_index - LlamaIndex is the leading document agent and OCR platform KoljaB/RealtimeVoiceChat - Have a natural, spoken conversation with AI! amigavision/AmigaVision - The ultimate Amiga games \u0026amp; demo scene setup for MiSTer \u0026amp; Pocket FPGAs, emulators, and real hardware. Open source, community driven. This is an Amiga HDF image builder that uses WHDLoad and custom inst nginx-proxy/nginx-proxy - Automated nginx proxy for Docker containers using docker-gen jamessewell/django-timescaledb - A Django database backend and tooling for Timescaledb. DFRobot/DFRobot_ENS160 - zauberzeug/nicegui - Create web-based user interfaces with Python. The nice way. dw-0/kiauh - Klipper Installation And Update Helper willmiao/ComfyUI-Lora-Manager - LoRA Manager for ComfyUI - A powerful extension for organizing, previewing, and integrating LoRA models with metadata and workflow support. exo-explore/exo - Run frontier AI locally. deepseek-ai/DeepSeek-V3 - soimort/you-get - \u0026#x23ec; Dumb downloader that scrapes the web hyperknot/openfreemap - Free and open-source map hosting solution with custom styles for websites and apps, using OpenStreetMap data Dicklesworthstone/visual_astar_python - Generate Cool-Looking Mazes and Animations Illustrating the A* Pathfinding Algorithm mdqinc/SDL_GameControllerDB - A community sourced database of game controller mappings to be used with SDL Game Controller functionality NVIDIA/warp - A Python framework for accelerated simulation, data generation and spatial computing. OpenShot/openshot-qt - OpenShot Video Editor is an award-winning free and open-source video editor for Linux, Mac, and Windows, and is dedicated to delivering high quality video editing and animation solutions to the world. bruin-data/ingestr - ingestr is a CLI tool to copy data between any databases with a single command seamlessly. ArchiveBox/ArchiveBox - 🗃 Open source self-hosted web archiving. Takes URLs/browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more\u0026hellip; vale46n1/immich_duplicate_finder - A Comprehensive Solution for Identifying and Managing Duplicate Photos in Immich Comfy-Org/ComfyUI - The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. open-webui/open-webui - User-friendly AI Interface (Supports Ollama, OpenAI API, \u0026hellip;) llmware-ai/llmware - Unified framework for building enterprise RAG pipelines with small, specialized models puddletag/puddletag - Powerful, simple, audio tag editor for GNU/Linux TypeTogether/Playwrite - Sensei primary repository. AlexanderKoch-Koch/low_cost_robot - meichthys/foss_photo_libraries - Free and Open Source Photo Libraries OctoPrint/OctoPrint - OctoPrint is the snappy web interface for your 3D printer! Ultimaker/Cura - 3D printer / slicing GUI built on top of the Uranium framework geerlingguy/ansible-for-devops - Ansible for DevOps examples. maguowei/starred - Create and maintain your own Awesome-style list from GitHub stars! Acly/krita-ai-diffusion - Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. AUTOMATIC1111/stable-diffusion-webui - Stable Diffusion web UI mckinsey/vizro - Vizro is a low-code toolkit for building high-quality data visualization apps. kantord/SeaGOAT - local-first semantic code search engine lm-sys/FastChat - An open platform for training, serving, and evaluating large language models. Release repo for Vicuna and Chatbot Arena. tatsu-lab/stanford_alpaca - Code and documentation to train Stanford\u0026rsquo;s Alpaca models, and generate the data. Frojd/Wagtail-Pipit - Pipit is a Wagtail CMS boilerplate which aims to provide an easy and modern developer workflow with a React-rendered frontend. wagtail/wagtail - A Django content management system focused on flexibility and user experience vinta/awesome-python - An opinionated list of Python frameworks, libraries, tools, and resources weewx/weewx - WeeWX code repository TheAlgorithms/Python - All Algorithms implemented in Python ahupp/python-magic - A python wrapper for libmagic bentoml/OpenLLM - Run any open-source LLMs, such as DeepSeek and Llama, as OpenAI compatible API endpoint in the cloud. EngineersNeedArt/SystemSix - e-Ink Calendar Textualize/textual - The lean application framework for Python. Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and a web browser. joke2k/faker - Faker is a Python package that generates fake data for you. newren/git-filter-repo - Quickly rewrite git repository history (filter-branch replacement) aboutcode-org/scancode-toolkit - \u0026#x1f50d; ScanCode detects licenses, copyrights, dependencies by \u0026ldquo;scanning code\u0026rdquo; \u0026hellip; to discover and inventory open source and third-party packages used in your code. Sponsored by NLnet, the Google Summer jarun/buku - \u0026#x1f516; Personal mini-web in text fastapi/fastapi - FastAPI framework, high performance, easy to learn, fast to code, ready for production rougier/scientific-visualization-book - An open access book on scientific visualization using python and matplotlib django/django - The Web framework for perfectionists with deadlines. earwig/git-repo-updater - A console script that allows you to easily update multiple git repositories at once makism/dyconnmap - A dynamic connectome mapping module in python. aquacropos/aquacrop - AquaCrop-OSPy: Python implementation of AquaCrop-OS arsenetar/dupeguru - Find duplicate files PySimpleGUI/PySimpleGUI - Python GUIs for Humans! PySimpleGUI is the top-rated Python application development environment. Launched in 2018 and actively developed, maintained, and supported in 2024. Transforms tkinter, Qt, WxP public-apis/public-apis - A collective list of free APIs nanohop/sketch-to-react-native - Convert Sketch files into React Native components NVlabs/stylegan2-ada-pytorch - StyleGAN2-ADA - Official PyTorch implementation LibrePhotos/librephotos - A self-hosted open source photo management service. This is the repository of the backend. internetarchive/openlibrary - One webpage for every book ever published! Netflix/metaflow - Build, Manage and Deploy AI/ML Systems NVIDIAGameWorks/kaolin - A PyTorch Library for Accelerating 3D Deep Learning Research localstack/localstack - 💻 A fully functional local AWS cloud stack. Develop and test your cloud \u0026amp; Serverless apps offline ytisf/theZoo - A repository of LIVE malwares for your own joy and pleasure. theZoo is a project created to make the possibility of malware analysis open and available to the public. cvat-ai/cvat - Annotate better with CVAT, the industry-leading data engine for machine learning. Used and trusted by teams at any scale, for data of any scale. chubin/wttr.in - \u0026#x26c5; The right way to check the weather skorokithakis/pythess - The code files/presentations/everything else used in the PyThess meetup tensorflow/models - Models and examples built with TensorFlow skorokithakis/catt - Cast All The Things allows you to send videos from many, many online sources to your Chromecast. yousseb/meld - Meld for macOS psf/requests-html - Pythonic HTML Parsing for Humans™ edent/SuperTinyIcons - Under 1KB each! Super Tiny Icons are miniscule SVG versions of your favourite website and app logos aws/aws-cli - Universal Command Line Interface for Amazon Web Services trustedsec/social-engineer-toolkit - The Social-Engineer Toolkit (SET) repository from TrustedSec - All new versions of SET will be deployed here. luk6xff/Packt-Publishing-Free-Learning - Scripts that automatically claim and download free daily eBooks from https://www.packtpub.com/packt/offers/free-learning lclarkmichalek/archey3 - Simple python script to print the Archlinux logo with basic system information. alexjc/neural-enhance - Super Resolution for images using deep learning. junyanz/iGAN - Interactive Image Generation via Generative Adversarial Networks certbot/certbot - Certbot is EFF\u0026rsquo;s tool to obtain certs from Let\u0026rsquo;s Encrypt and (optionally) auto-enable HTTPS on your server. It can also act as a client for any other CA that uses the ACME protocol. sublimehq/package_control - The Sublime Text package manager philferriere/dlwin - GPU-accelerated Deep Learning on Windows 10 native Theano/Theano - Theano was a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. It is being continued as PyTensor: www.github.com grnet/synnefo - Synnefo is open source cloud software, used to create massively scalable IaaS clouds. kovidgoyal/calibre - The official source code repository for the calibre ebook manager minimaxir/big-list-of-naughty-strings - The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data. josephmisiti/awesome-machine-learning - A curated list of awesome Machine Learning frameworks, libraries and software. enginespot/js-beautify-sublime - js-beautify for sublime powerline/powerline - Powerline is a statusline plugin for vim, and provides statuslines and prompts for several other applications, including zsh, bash, tmux, IPython, Awesome and Qtile. SublimeCodeIntel/SublimeCodeIntel - 💡 Full-featured code intelligence and smart autocomplete for Sublime Text Scifabric/pybossa - PYBOSSA is the ultimate crowdsourcing framework (aka microtasking) to analyze or enrich data that can\u0026rsquo;t be processed by machines alone. metabrainz/picard - Picard is a cross-platform music tagger powered by the MusicBrainz database EbookFoundation/free-programming-books - \u0026#x1f4da; Freely available programming books celery/celery - Distributed Task Queue (development branch) QML # alicevision/Meshroom - Node-based Visual Programming Toolbox Rich Text Format # 1fish2/IFF - The \u0026ldquo;EA IFF-85\u0026rdquo; (Interchange File Format) Repository Ruby # Homebrew/brew - 🍺 The missing package manager for macOS (or Linux) hashicorp/vagrant - Vagrant is a tool for building and distributing development environments. github-linguist/linguist - Language Savant. If your repository\u0026rsquo;s language is being reported incorrectly, send us a pull request! Rust # n0-computer/dumbpipe - Unix pipes between devices ratatui/ratatui - A Rust crate for cooking up terminal user interfaces (TUIs) 👨‍🍳🐀 https://ratatui.rs twvd/snow - Classic Macintosh emulator ruffle-rs/ruffle - A Flash Player emulator written in Rust Inlyne-Project/inlyne - Introducing Inlyne, a GPU powered yet browserless tool to help you quickly view markdown files in the blink of an eye. lovasoa/dezoomify-rs - Zoomable image downloader for Google Arts \u0026amp; Culture, Zoomify, IIIF, and others rustdesk/rustdesk - An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer. astral-sh/uv - An extremely fast Python package and project manager, written in Rust. zed-industries/zed - Code at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter. obi1kenobi/trustfall - A query engine for any combination of data sources. Query your files and APIs as if they were databases! ajour/ajour - A World of Warcraft addon manager written in Rust. sharkdp/bat - A cat(1) clone with wings. influxdata/influxdb - Scalable datastore for metrics, events, and real-time analytics SVG # gilbarbara/logos - A huge collection of SVG logos Scala # mrdimosthenis/creative-scala - Translation of \u0026ldquo;Creative Scala\u0026rdquo; to Greek Shell # obra/superpowers - An agentic skills framework \u0026amp; software development methodology that works. nvm-sh/nvm - Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions mkasberg/ghostty-ubuntu - Ubuntu/Debian (.deb) packages for Ghostty laurent22/rsync-time-backup - Time Machine style backup with rsync. quickemu-project/quickemu - Quickly create and run optimised Windows, macOS and Linux virtual machines Naunter/BT_BlockLists - Transmission block list nginx-proxy/acme-companion - Automated ACME SSL certificate generation for nginx-proxy oscarfonts/docker-geoserver - pi-hole/pi-hole - A black hole for Internet advertisements theodorosploumis/drupal-best-practices - Opinion based, short list with common best practices for Drupal. MichaIng/DietPi - Lightweight justice for your single-board computer! papers-we-love/papers-we-love - Papers from the computer science community to read and discuss. d3/d3 - Bring data to life with SVG, Canvas and HTML. \u0026#x1f4ca;\u0026#x1f4c8;\u0026#x1f389; nikolas-n/Speedport-Plus-Cosmote-Router-hacks - Exploring the Sercomm made router of Cosmote - OTE Group (Deutsche Telekom in Greece) OpenELEC/dvb-firmware - powerline/fonts - Patched fonts for Powerline users. dakshshah96/local-cert-generator - 🚀 A set of scripts to quickly generate a HTTPS certificate for your local development environment. wodby/docker4drupal - Docker-based Drupal stack CISOfy/lynis - Lynis - Security auditing tool for Linux, macOS, and UNIX-based systems. Assists with compliance testing (HIPAA/ISO27001/PCI DSS) and system hardening. Agentless, and installation optional. k4m4/movies-for-hackers - 🎬 A curated list of movies every hacker \u0026amp; cyberpunk must watch. opengapps/opengapps - The main repository of the Open GApps Project BlitterStudio/amiberry-v1 - A script to configure a Minibian system as a dedicated Amiga emulation machine sublimehq/Packages - Syntax highlighting files shipped with Sublime Text and Sublime Merge bohoomil/fontconfig-ultimate - freetype2-infinality run-time settings =\u0026gt; infinality compatible fontconfig =\u0026gt; infinality-bundle Hexxeh/rpi-update - An easier way to update the firmware of your Raspberry Pi magicmonty/bash-git-prompt - An informative and fancy bash prompt for Git users margaritis/dotfiles - Time for burning dotfiles, Heisenberg approves! BlackArch/blackarch - An ArchLinux based distribution for penetration testers and security researchers. Svelte # kevinclement/SimpleArmory - World of Warcraft armory site that presents your armory in a simple manor. Swift # thealpa/SaneSideButtons - A macOS menu bar app that enables system-wide navigation functionality for side buttons on third-party mice. jordanbaird/Ice - Powerful menu bar manager for macOS mangerlahn/Latest - A small utility app for macOS that makes sure you know about all the latest updates to the apps you use. utmapp/UTM - Virtual machines for iOS and macOS rxhanson/Rectangle - Move and resize windows on macOS with keyboard shortcuts and snap areas p0deje/Maccy - Lightweight clipboard manager for macOS ptsochantaris/trailer - Managing Pull Requests and Issues For GitHub \u0026amp; GitHub Enterprise OpenEmu/OpenEmu - 🕹 Retro video game emulation for macOS TypeScript # anomalyco/opencode - The open source coding agent. code-yeongyu/oh-my-openagent - omo; the best agent harness - previously oh-my-opencode zevnda/steam-game-idler - Farm Steam trading cards, manage achievements, and idle games automatically — an all-in-one alternative to ArchiSteamFarm, Steam Achievement Manager, and Idle Master dontriskit/awesome-ai-system-prompts - 🧠 Curated collection of system prompts for top AI tools. Perfect for AI agent builders and prompt engineers. Incuding: ChatGPT, Claude, Perplexity, Manus, Claude-Code, Loveable, v0, Grok, same new, wi shadcn-ui/ui - A set of beautifully-designed, accessible components and a code distribution platform. Works with your favorite frameworks. Open Source. Open Code. unraid/api - Unraid API / Connect / UI Monorepo laurent22/joplin - Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS. BlueprintLabIO/markdown-ui - An open standard for rendering interactive widgets in plain Markdown. apache/echarts - Apache ECharts is a powerful, interactive charting and data visualization library for browser linkwarden/linkwarden - ⚡️⚡️⚡️ Self-hosted collaborative bookmark manager to collect, read, annotate, and fully preserve what matters, all in one place. janhq/jan - Jan is an open source alternative to ChatGPT that runs 100% offline on your computer. phosphor-icons/homepage - The homepage of Phosphor Icons, a flexible icon family for everyone ZoeyVid/NPMplus - a fork of nginx-proxy-manager microsoft/playwright - Playwright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API. browserbase/stagehand - The AI Browser Automation Framework dzhng/deep-research - An AI-powered research assistant that performs iterative, deep research on any topic by combining search engines, web scraping, and large language models. The goal of this repo is to provide the simp niivue/niivue - a WebGL2 based medical image viewer. Supports over 30 formats of volumes and meshes. SendWithSES/Drag-and-Drop-Email-Designer - Free, open source, HTML email template editor and no code designer. redotvideo/revideo - Create Videos with Code placemark/placemark - A flexible web-based editor, converter, visualization tool, for geospatial data civitai/civitai - A repository of models, textual inversions, and more NginxProxyManager/nginx-proxy-manager - Docker container for managing Nginx proxy hosts with a simple, powerful interface rvion/CushyStudio - 🛋 The AI and Generative Art platform for everyone shoelace-style/shoelace - Shoelace is now Web Awesome. Come see what’s new! caprover/caprover - Scalable PaaS (automated Docker+nginx) - aka Heroku on Steroids getumbrel/umbrel - An elegant home server OS. Run OpenClaw, store your files and photos, run a Bitcoin node, and do more with over 300 apps in the Umbrel App Store. marmelab/react-admin - A frontend Framework for single-page applications on top of REST/GraphQL APIs, using TypeScript, React and Material Design react-grid-layout/react-grid-layout - A draggable and resizable grid layout with responsive breakpoints, for React. immich-app/immich - High performance self-hosted photo and video management solution. makeplane/plane - 🔥🔥🔥 Open-source Jira, Linear, Monday, and ClickUp alternative. Plane is a modern project management platform to manage tasks, sprints, docs, and triage. darkroomengineering/lenis - Smooth scroll at it should be voidcosmos/npkill - List any node_modules 📦 dir in your system and how heavy they are. You can then select which ones you want to erase to free up space 🧹 appsmithorg/appsmith - Platform to build admin panels, internal tools, and dashboards. Integrates with 25+ databases and any API. cosmosgl/graph - GPU-accelerated force graph layout and rendering tldraw/tldraw - very good whiteboard infinite canvas SDK TerriaJS/terriajs - A library for building rich, web-based geospatial 2D \u0026amp; 3D data platforms. chapter-three/next-drupal - Next.js for Drupal has everything you need to build a next-generation front-end for your Drupal site: SSG, SSR, and ISR, Multi-site, Authentication, Webforms, Search API, I18n and Preview mode (works pavkout/react-mailkit - Create awesome and fully responsive emails without stress. niconiahi/chakra-paginator - An aria compliant and completely typed pagination library built upon Chakra UI with styling flexibility kept in mind chakra-ui/chakra-ui - Chakra UI is a component system for building SaaS products with speed ⚡️ katspaugh/wavesurfer.js - Audio waveform player onehungrymind/fem-enterprise-patterns - dendronhq/dendron - The personal knowledge management (PKM) tool that grows as you do! excalidraw/excalidraw - Virtual whiteboard for sketching hand-drawn like diagrams WowUp/WowUp - WowUp the World of Warcraft addon updater Sidoine/Ovale - An add-on for World of Warcraft that displays icons based on scripts eclipse-che/che - Kubernetes based Cloud Development Environments for Enterprise Teams freeCodeCamp/freeCodeCamp - freeCodeCamp.org\u0026rsquo;s open-source codebase and curriculum. Learn math, programming, and computer science for free. api-platform/api-platform - 🕸️ Create REST and GraphQL APIs, scaffold Jamstack webapps, stream changes in real-time. Flaque/quirk - ✨🐙 A GPL Licensed Cognitive Behavioral Therapy app for iOS and Android. Currently a teaching tool captbaritone/webamp - Winamp 2 reimplemented for the browser fengyuanchen/cropperjs - JavaScript image cropper. kamranahmedse/developer-roadmap - Interactive roadmaps, guides and other educational content to help developers grow in their careers. itchio/itch - 🎮 The best way to play your itch.io games microsoft/vscode - Visual Studio Code zz85/space-radar - Fast Disk And Memory Space Visualization App for Mac, Windows and Ubuntu Automattic/simplenote-electron - Simplenote for Web, Windows, and Linux reduxjs/redux - A JS library for predictable global state management joemccann/dillinger - The last Markdown editor, ever. BabylonJS/Babylon.js - Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework. sahat/satellizer - Token-based AngularJS Authentication turbulenz/turbulenz_engine - Turbulenz is a modular 3D and 2D game framework for making HTML5 powered games for browsers, desktops and mobile devices. Zig # ghostty-org/ghostty - 👻 Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration. License # To the extent possible under law, glls has waived all copyright and related or neighboring rights to this work.\n","date":"10 March 2025","externalUrl":null,"permalink":"/posts/awesome-stars/","section":"Posts","summary":"A curated list of my GitHub stars!","title":"Awesome Stars","type":"posts"},{"content":"","date":"5 June 2024","externalUrl":null,"permalink":"/tags/game/","section":"Tags","summary":"","title":"Game","type":"tags"},{"content":"Space8 is a retro style shoot\u0026rsquo;em up game. The player controls a spaceship that can move in all directions and shoot at enemies. The game is set in space and the player must avoid asteroids and enemy ships while shooting them down. The game features multiple levels with increasing difficulty and a boss fight at the end. The player can collect power-ups to upgrade their ship and weapons. The game has a high score system to keep track of the player\u0026rsquo;s progress. Space8 is a fun and challenging game that will keep players entertained for hours.\nPrivacy Policy for Space8 # This Privacy Policy describes the data practices of Cyberpunk Games (\u0026ldquo;we,\u0026rdquo; \u0026ldquo;us,\u0026rdquo; or \u0026ldquo;our\u0026rdquo;) for our free game, Space8 (\u0026ldquo;Game\u0026rdquo;).\nOur Commitment to Your Privacy:\nWe respect your privacy and are committed to protecting any information you provide while using our Game. Since it is a completely offline game, we do not collect any personal information from you. This includes:\nDevice information (device type, operating system, etc.) Gameplay data (game progress, time spent playing, achievements) Account information (username, email address) The game does not require an internet connection to play and does not have any in-app purchases. The game does not display any ads or share any data with third parties. The game is designed to be a safe and enjoyable experience for players of all ages.\n","date":"5 June 2024","externalUrl":null,"permalink":"/projects/space8/","section":"Projects","summary":"A retro style shoot’em up game","title":"Space8","type":"projects"},{"content":"","date":"20 May 2024","externalUrl":null,"permalink":"/tags/benchmark/","section":"Tags","summary":"","title":"Benchmark","type":"tags"},{"content":"","date":"20 May 2024","externalUrl":"https://github.com/glls/web-service-albums-benchmark","permalink":"/projects/benchmark-api/","section":"Projects","summary":"The correct way to benchmark your web server","title":"Benchmarking API Frameworks","type":"projects"},{"content":"","date":"20 May 2024","externalUrl":null,"permalink":"/tags/frameworks/","section":"Tags","summary":"","title":"Frameworks","type":"tags"},{"content":"","date":"27 April 2024","externalUrl":null,"permalink":"/tags/dietpi/","section":"Tags","summary":"","title":"DietPi","type":"tags"},{"content":"","date":"27 April 2024","externalUrl":null,"permalink":"/tags/privacy/","section":"Tags","summary":"","title":"Privacy","type":"tags"},{"content":"","date":"27 April 2024","externalUrl":null,"permalink":"/tags/security/","section":"Tags","summary":"","title":"Security","type":"tags"},{"content":"Virtual Private Networks (VPNs) keep your traffic private, but the older ones can feel heavy and slow. WireGuard fixes that and looks good doing it (the logo is great 😎).\nIt is tiny and modern, so it stays fast without hogging CPU or RAM. The crypto is up to date, so you get solid encryption without the vintage baggage of older protocols.\nSetup is friendly too. WireGuard has first-class clients for Linux, macOS, Windows, Android, iOS, and more. Grab a config, point it at your server, and you are online.\nMy setup: I dropped WireGuard on a Raspberry Pi 4 running DietPi and connected to my self-hosted VPN in a few minutes on both my MacBook Air and my Android phone (Motorola G54). Check the install options here—there is something for every platform, including iOS and OpenWRT.\nPerformance has been rock solid, with barely any hit to speed. I can hop into my Unraid server and Synology NAS on my LAN without friction.\nUpdate: My shiny Fritz!Box router ships with WireGuard built in. If you have one, see the supported setups here.\n","date":"27 April 2024","externalUrl":null,"permalink":"/posts/wireguard/","section":"Posts","summary":"Virtual Private Networks (VPNs) keep your traffic private, but the older ones can feel heavy and slow. WireGuard fixes that and looks good doing it (the logo is great 😎).\nIt is tiny and modern, so it stays fast without hogging CPU or RAM. The crypto is up to date, so you get solid encryption without the vintage baggage of older protocols.\n","title":"Wireguard: A Better VPN","type":"posts"},{"content":"","date":"12 March 2024","externalUrl":null,"permalink":"/tags/cheatsheet/","section":"Tags","summary":"","title":"Cheatsheet","type":"tags"},{"content":"","date":"12 March 2024","externalUrl":null,"permalink":"/tags/image/","section":"Tags","summary":"","title":"Image","type":"tags"},{"content":" The command line might seem intimidating, but it offers hidden gems for everyday tasks. Today, we\u0026rsquo;ll explore its power for image and video conversions, giving you more control over your media files for future reference or projects.\nImage Manipulation # Here are some examples of how to manipulate images with ImageMagick\u0026rsquo;s tools, as always there are tons of options available, so make sure to check the official documentation for more details.\nTIP: parameter order matters a lot in ImageMagick\nResize Images # magick input.png -resize 100x200 output.jpg # or mogrify -resize 50% *.png Remove background # ImageMagick Examples\nTo remove the black background from an image, use the following command:\nmagick input.png -fuzz 5% -transparent black out.png Extent canvas size with transparency # convert input.png -background none -gravity center -extent 512x512 output.png # or mogrify -background none -gravity center -extent 512x512 *.png Looping GIFs: Ever wanted a GIF to play endlessly? # convert -delay 20 -loop 0 nonloopingImage.gif loopingImage.gif This creates a looping version of nonloopingImage.gif with a delay of 20 milliseconds between frames. Adjust the delay for faster or slower playback. The -loop 0 sets unlimited loops.\nCreating GIFs with Transparency: Want a GIF with clear backgrounds? # magick -delay 100 -loop 0 -dispose previous *.png hands.gif This command combines all PNG files in the current directory (replace *.png with specific filenames if needed) into a GIF named hands.gif. The -delay 100 sets a delay of 100 milliseconds, -loop 0 enables infinite looping, and -dispose previous ensures transparency in the final GIF.\nPNG optimization # optipng is a command-line tool that optimizes PNG images to reduce file size without losing quality. Here\u0026rsquo;s how to use it:\noptipng -strip all image.png SVG to PNG Conversion # Scalable Vector Graphics (SVG) are perfect for logos and icons, but sometimes you need a PNG image. Here\u0026rsquo;s how to convert SVG to PNG using rsvg-convert\nrsvg-convert -h 32 icon.svg \u0026gt; icon-32.png This command converts icon.svg to a PNG named icon-32.png with a height of 32 pixels. Replace 32 with your desired pixel height or width for a specific aspect ratio.\nAudio Manipulation # Generate audio from console # Play a sine wave at 234Hz for 5 seconds using the play command:\nplay -n synth 5 sin 234 hz Here\u0026rsquo;s a breakdown of the options used:\n-n This option tells play to play the sound only once (for 5 seconds in this case). synth This specifies that we want to generate a synthesized sound. 5 This is the duration in seconds for which the sound will be played. sin This keyword tells play to generate a sine wave. 234 hz This defines the frequency of the sine wave as 234 Hertz. Make sure you have the play command from SoX installed on your system for this to work.\nVideo Manipulation # Extract a video segment from a larger video file using ffmpeg # fmpeg -i Untitled.mp3 -t 00:00:09 -acodec copy output.mp3 -t 00:00:09: set output duration to 9 seconds. Here, 00 represents hours and minutes. -acodec copy: copy the audio stream from the input file without re-encoding it. This is efficient if you don\u0026rsquo;t need to modify the audio quality. Overall, this command extracts a 9-second segment from your Untitled.mp3 file and saves it as output.mp3 while preserving the original audio quality.\nDownloading Videos # youtube-dl works on OS X, Linux and Windows, and can download videos in any format YouTube provides.\nVideo DownloadHelper is a Firefox/Chrome extension for downloading videos from many sites with minimum effort.\nPlaying a video stream from the command line with mpv # mpv --cache-on-disk stream_93b9d36741fe2f46.m3u Check the official page for more info https://mpv.io/\n","date":"12 March 2024","externalUrl":null,"permalink":"/posts/image-video-cheatsheet/","section":"Posts","summary":"Using command-line tools for image and video manipulation, including resizing, background removal, GIF creation, video segment extraction, and more.","title":"Image and Video Cheat Sheet","type":"posts"},{"content":"","date":"12 March 2024","externalUrl":null,"permalink":"/tags/video/","section":"Tags","summary":"","title":"Video","type":"tags"},{"content":"","date":"12 February 2024","externalUrl":null,"permalink":"/tags/ssh/","section":"Tags","summary":"","title":"Ssh","type":"tags"},{"content":"SSH, or Secure Shell, is a fundamental tool for securely connecting to and managing remote servers. This cheatsheet provides a quick reference for the most commonly used SSH operations.\nConnecting to a Server # The basic syntax for connecting to a server with SSH is:\nssh username@server_address [-p port_number] username: Your username on the remote server. server_address: The IP address or hostname of the server. port_number: The port number used by the SSH server. Password vs. Key-Based Authentication # You can connect to a server using a password or a public/private key pair. Key-based authentication is generally considered more secure as it eliminates the need to transmit passwords over the network.\nBasic File Transfer # scp (Secure Copy): Used to securely copy files between your local machine and the remote server.\nTo copy a file from the remote server to your local machine: scp username@server_address:/path/to/file local_destination To copy a file from your local machine to the remote server: scp local_file username@server_address:/path/to/destination Remote Commands # You can execute commands on the remote server directly from your local terminal:\nssh username@server_address \u0026#39;command_to_execute\u0026#39; command_to_execute: The command you want to run on the remote server. Understanding the .ssh Directory # The hidden directory ~/.ssh (on Unix-based systems) stores SSH configuration files specific to your user account. It\u0026rsquo;s typically not created by default, but SSH will create it if it\u0026rsquo;s missing when you first use a key-based authentication or configure the client. Common files you might find in this directory include:\nid_rsa (private key): This file contains your private SSH key, used for key-based authentication. It should be kept secret and have strict permissions to prevent unauthorized access. id_rsa.pub (public key): This public key file corresponds to your private key and can be added to authorized keys on servers you want to connect to. config (SSH configuration file): This file allows you to define connection options for specific servers or set global defaults for SSH. Exploring the SSH Config File # The config file within the .ssh directory is a powerful tool for customizing SSH connections. It uses a simple format with options and arguments to define settings. Here are some common uses:\nHost definitions: You can create sections for specific servers (identified by hostname or IP address) and define options for those connections, such as port, username, and IdentityFile (path to your private key). Global options: You can set default settings for all SSH connections, like preferred encryption ciphers or preferred authentication methods. Aliases: You can define aliases for servers to simplify connection commands. For example, you could create an alias for a server with a long hostname to make connecting easier. SSH Tunneling # SSH tunneling, also known as SSH port forwarding, is a powerful feature that allows you to create secure connections between your local machine and a remote server. It essentially creates an encrypted tunnel through which you can forward traffic between different ports. This can be useful for various purposes, such as:\nSecurely accessing remote services: If a server offers a service on a non-standard port (for example, a web server on port 8080 instead of the usual port 80), you can use SSH tunneling to securely access it as if it were running on the standard port on your local machine. Tunneling traffic through firewalls: Firewalls might restrict access to certain ports. By tunneling traffic through an SSH connection, you can bypass these restrictions and access the desired service. (Note: This should only be done with proper authorization and caution) Creating SOCKS proxies: SSH tunnels can be configured to function as SOCKS proxies, allowing you to route all your internet traffic through the secure SSH connection. There are two main types of SSH tunneling:\nLocal Port Forwarding: This forwards traffic from a specific port on your local machine to a port on the remote server. Here\u0026rsquo;s an example:\nLet\u0026rsquo;s say you want to securely access a web server running on port 8080 on a remote server. You can use local port forwarding to map port 8080 on the remote server to a different port (e.g., port 8000) on your local machine. By accessing http://localhost:8000 in your web browser, the traffic will be securely tunneled through the SSH connection and reach the web server on the remote machine.\nThe command for this scenario would be:\nssh -L 8000:localhost:8080 username@server_address -L: Flag for local port forwarding. 8000: Local port on your machine where you want to access the service. localhost:8080: The destination on the remote server (localhost refers to the remote server itself in this case). username: Your username on the remote server. server_address: The IP address or hostname of the remote server. Remote Port Forwarding (Reverse Tunneling): This forwards traffic from a port on the remote server to a specific port on another machine on your network. This can be useful for exposing services running on the remote server to other machines on your local network.\nHere\u0026rsquo;s an example:\nImagine you have a database server running on a remote server behind a firewall, but you need to access it from your local machine. You can set up remote port forwarding to expose the database port (e.g., port 3306) on the remote server to a different port (e.g., port 5432) on your local machine. This allows you to connect to the database server using your local database client as if it were running locally.\nThe command for this scenario would be:\nssh -R 5432:localhost:3306 username@server_address -R: Flag for remote port forwarding. 5432: Port on your local machine that will be forwarded to the remote server. localhost:3306: The destination on the remote server (localhost refers to the remote server itself in this case). username: Your username on the remote server. server_address: The IP address or hostname of the remote server. These are just a couple of basic examples of SSH tunneling. With some exploration, you\u0026rsquo;ll find many other use cases for this versatile tool. Remember, it\u0026rsquo;s important to understand the security implications before implementing SSH tunnels, especially when bypassing firewalls.\nSSH Commands # Here are some common SSH commands and their use cases:\nssh-keygen: Generates a new SSH key pair. ssh-copy-id user@host: Copies your public key to a remote server\u0026rsquo;s authorized keys file. ssh-agent: Manages your SSH keys and allows you to enter passphrases only once. ssh-add: Adds private keys to the SSH agent. ssh -o PubkeyAuthentication=no user@host: Disables public key authentication for a specific SSH session. ssh-keygen -f \u0026quot;/home/user/.ssh/known_hosts\u0026quot; -R \u0026quot;192.168.1.1\u0026quot; : Removes a specific host entry from the known_hosts file. ssh -J jump_host user@target_host: Connects to a target host via a jump host (SSH bastion). Tips and Tricks # Use ssh and then tmux if you want to persist your session in case of network interruptions. This way, you can reconnect to your session and continue where you left off.\nUse config aliases to simplify your SSH connections. For example, you can define an alias for a server with a long hostname and non-standard port to save time typing the connection command.\nAlways use strong, unique passwords or passphrase-protected SSH keys to secure your connections. Avoid using default usernames like \u0026ldquo;root\u0026rdquo; and disable password-based authentication if possible.\nTunneling through SSH can be a powerful tool, espessially for developers, but it should be used responsibly and with caution.\nRemember to always keep your SSH keys secure and avoid sharing them with unauthorized users. Regularly update your keys and rotate them if necessary to maintain a high level of security.\n","date":"12 February 2024","externalUrl":null,"permalink":"/posts/ssh-cheatsheet/","section":"Posts","summary":"SSH, or Secure Shell, is a fundamental tool for securely connecting to and managing remote servers. This cheatsheet provides a quick reference for the most commonly used SSH operations.\nConnecting to a Server # The basic syntax for connecting to a server with SSH is:\n","title":"SSH Cheatsheet","type":"posts"},{"content":"","date":"29 January 2024","externalUrl":null,"permalink":"/tags/console/","section":"Tags","summary":"","title":"Console","type":"tags"},{"content":" The console offers a powerful way to interact with your system and increase your productivity.\nMost snippets work in both Linux and MacOS terminals.\nHere are some generic snippets to get you started:\nBasic commands # Navigation # cd \u0026lt;directory\u0026gt;: Change directory. (e.g. cd Documents) pwd: Print Working Directory (shows your current location) ls: List directory contents (-lah \u0026ndash;color for details and color) mkdir \u0026lt;directory\u0026gt;: Create a new directory File manipulation # touch \u0026lt;filename\u0026gt;: Create an empty file cat \u0026lt;filename\u0026gt;: Display file contents cp \u0026lt;source\u0026gt; \u0026lt;destination\u0026gt;: Copy a file mv \u0026lt;source\u0026gt; \u0026lt;destination\u0026gt;: Move/Rename a file rm \u0026lt;filename\u0026gt;: Delete a file (use with caution!) Permissions # chmod \u0026lt;permissions\u0026gt; \u0026lt;filename\u0026gt;: Change file permissions (owner, group, others) chown \u0026lt;owner\u0026gt;:\u0026lt;group\u0026gt; \u0026lt;filename\u0026gt;: Change file owner (with optional group) chgrp \u0026lt;group\u0026gt; \u0026lt;filename\u0026gt;: Change file group sudo \u0026lt;command\u0026gt;: Run a command as superuser (root) su - \u0026lt;username\u0026gt;: Switch to another user account System Information # whoami: Shows your current username w: Shows who is logged in and what they are doing df: Show disk usage (-hT human-readable with filesystem type) blkid: Show block device information free -h: Show available memory uname -a: Show detailed system information lscpu: Show CPU information lsb_release -a: Show Linux distribution information Process Management # ps aux: List all running processes top: Monitor system resources and processes kill \u0026lt;PID\u0026gt;: Kill a process by its ID (-9 for force kill) Help and Man Pages # man \u0026lt;command\u0026gt;: Get help on a specific command (detailed manual page) help: Get a list of built-in shell commands whatis \u0026lt;command\u0026gt;: Get a brief description of a command alias : List all aliases Bonus # history: Show command history (-c to clean) !!: Repeat the last command (sudo !! to repeat last command as sudo) exit: Exit the terminal (or CTRL-D) These are just a few basic snippets. There\u0026rsquo;s a vast amount of functionality available in the Linux console. Explore the man pages for in-depth information on specific commands.\nOne liners # Console one-liners are powerful commands that condense complex tasks into a single line\nFile and directory manipulation # Search and replace text across all files in a directory:\nfind . -type f -exec sed -i \u0026#39;s/old_text/new_text/g\u0026#39; {} \\; Count lines in all files within a directory:\nfind . -type f -exec wc -l {} \\; | awk \u0026#39;{sum += $1} END {print sum}\u0026#39; Change permissions of all files in a directory (recursively):\nfind -type f -exec chmod 644 {} \\; Change permissions of all directories in a directory (recursively):\nfind -type d -exec chmod 755 {} \\; Convert all JPGs in current directory to PNGs:\nfor file in *.jpg; do convert \u0026#34;$file\u0026#34; \u0026#34;${file/.jpg/.png}\u0026#34;; done Extract all ZIP files in a directory with correct folders\nfind -type f -name *.zip -execdir unzip -o \u0026#39;{}\u0026#39; \\; System Administration # List all processes using more than 10% CPU:\nps aux | awk \u0026#39;{if ($3 \u0026gt; 10) print $2}\u0026#39; Find the largest file in a directory:\nfind . -type f -exec du -s {} \\; | sort -nr | head -n 1 Network Tools # Ping a website and display response time:\nping -c 3 google.com | grep time | awk \u0026#39;{print $7}\u0026#39; Download a file from a URL:\nwget https://example.com/file.txt #or curl -O https://example.com/file.txt Scan a network for active hosts: nmap -sn 192.168.0.0/24 Scan many networks for active hosts and ports: nmap 192.168.33.0/24 192.168.42.0/24 Remember: Be cautious when using one-liners, especially those involving deletion or modification. Test them on a small scale before applying them broadly.\nThese are just a few examples. Explore the web for more advanced one-liners using tools like grep, awk, and sed for powerful text manipulation.\nSpecific snippets # Find and delete .DS_Store files:\nfind . -type f -iname .DS_Store -exec rm -i {} \\; Resize tmpfs partition\nmount -o remount,size=4G,noatime /tmp Fix TMPDIR=/tmp cannot hold executables (partition possibly mounted with noexec)\nsudo mount -o remount,exec /tmp Update secureboot keys after NVIDIA driver upgrade (for Ubuntu with secureboot enabled / dual boot)\nsudo update-secureboot-policy --enroll-key Update outdated pip packages\npip list --outdated --format=freeze | grep -v \u0026#39;^\\-e\u0026#39; | cut -d = -f 1 | xargs -n1 pip install -U Change display brightness with xrandr\nxrandr --output eDP --brightness 0.6 Turn keyboard Scroll Lock on\nxset led named \u0026#34;Scroll Lock\u0026#34; on Update all git repositories under a folder, recursively\nfind . -mindepth 1 -maxdepth 1 -type d -exec git --git-dir={}/.git --work-tree=$PWD/{} pull \\; Miscellaneous tips # For the best terminal filemanager check the post:\nMC: a commander like no other\nUse Ctrl + R to search through your command history\nUse Ctrl + C to cancel a running command\ntmux and htop are great tools for managing terminal sessions and monitoring system resources\nncdu is a great tool for analyzing disk usage\n","date":"29 January 2024","externalUrl":null,"permalink":"/posts/console-snippets/","section":"Posts","summary":"The console offers a powerful way to interact with your system and increase your productivity, here are some basic commands and one-liners to get you started.","title":"Console snippets","type":"posts"},{"content":"","date":"16 November 2023","externalUrl":null,"permalink":"/tags/sql/","section":"Tags","summary":"","title":"Sql","type":"tags"},{"content":" Preface # SQL stands for Structured Query Language. It\u0026rsquo;s a powerful and widely-used language specifically designed for managing data stored in relational databases.\nThere are several situations where using SQL directly might be preferable to using an Object-Relational Mapping tool (ORM)\nPerformance # Complex Queries: While ORMs simplify complex queries, they often translate them into multiple underlying SQL statements. For very intricate queries, writing raw SQL can give you more control and potentially improve performance. Database-Specific Features: ORMs sometimes have limitations when dealing with functionalities specific to a particular database engine. If you need to leverage advanced features offered by your database (like stored procedures or custom functions), using raw SQL allows you to interact with them directly. Customization and Control # Fine-Tuning Queries: SQL grants you complete control over the query structure. You can optimize queries for specific use cases and databases, something that might be limited with an ORM\u0026rsquo;s abstraction layer. Database Schema Changes: If your database schema undergoes frequent modifications, relying solely on an ORM might require frequent updates to your object mappings. With SQL, you can directly adapt your queries to the evolving schema. Troubleshooting # Error Diagnostics: When errors occur with ORM-generated queries, it can be challenging to pinpoint the exact cause. With raw SQL, you can directly see the query being executed, making it easier to diagnose and fix issues. Understanding Database Behavior: For developers who want a deeper understanding of how the database interprets and executes queries, using SQL provides greater transparency into the underlying processes. Basics # Here are the basic SQL commands that form the foundation for interacting with relational databases:\nSELECT: This is the most fundamental command used to retrieve data from a database table. You can specify the columns (fields) you want to retrieve and optionally use a WHERE clause to filter the results based on certain conditions. SELECT name, email FROM users WHERE country = \u0026#39;GR\u0026#39;; This query selects the name and email columns from the users table, but only for users where the country is \u0026lsquo;GR\u0026rsquo;.\nINSERT: This command allows you to insert new data into a table. You specify the table name and the values you want to insert for each column. INSERT INTO products (name, price, category) VALUES (\u0026#39;shirt\u0026#39;, 9.99, \u0026#39;clothing\u0026#39;); This query inserts a new row into the products table with the following details:\nname: shirt price: 9.99 category: clothing UPDATE: This command is used to modify existing data in a table. You specify the table name, the changes you want to make, and a WHERE clause to target specific rows for the update. UPDATE customers SET email = \u0026#39;new_email@example.com\u0026#39; WHERE id = 10; This query updates the email address for the customer with id equal to 10 in the customers table.\nDELETE: This command allows you to remove rows from a table. Similar to UPDATE, you can use a WHERE clause to filter the rows you want to delete. DELETE FROM orders WHERE status = \u0026#39;completed\u0026#39; AND order_date \u0026lt; \u0026#39;2024-01-01\u0026#39;; This query deletes all orders from the orders table that are marked as \u0026ldquo;completed\u0026rdquo; and have an order date before January 1st, 2024.\nThese are just a few basic SQL commands to get you started. As you learn more, you\u0026rsquo;ll discover commands for more complex tasks like joining data from multiple tables, grouping results, and using aggregate functions.\nCheck these official documentation resources for more in-depth information on SQL:\nPostgreSQL Documentation\nMySQL Reference Manual\nSQLite Documentation\nJOINs # JOINs are a fundamental concept in relational databases that allow you to combine data from multiple tables based on a shared field. They are essential for retrieving related information across different tables.\nHere\u0026rsquo;s a breakdown of the basics about JOINs:\nPurpose: JOINs enable you to retrieve data from multiple tables in a single query, establishing relationships between them. This eliminates the need to write separate queries and then manually combine the results. Types of JOINs: There are several types of JOINs, each serving a specific purpose: Inner JOIN: This retrieves records that exist in both tables based on the matching criteria. It\u0026rsquo;s the most common type of JOIN. Left JOIN: This includes all records from the left table (the table mentioned first in the JOIN clause) and matching records from the right table. Records from the right table with no match will have NULL values in the corresponding columns. Right JOIN: Similar to Left JOIN, but includes all records from the right table and matching records from the left table. Full JOIN: This combines all records from both tables, including those with no match in the other table (represented by NULL values). Example:\nImagine you have two tables:\nCustomers: Contains customer information like ID, name, and email. Orders: Stores order details like order ID, customer ID (foreign key referencing Customers.ID), and order amount. To retrieve a list of customer names along with their total order amount, you can use an Inner JOIN:\nSELECT c.name, SUM(o.order_amount) AS total_order_amount FROM Customers c INNER JOIN Orders o ON c.id = o.customer_id GROUP BY c.name; Explanation:\nSELECT: This specifies the columns you want to retrieve. c.name: Selects the customer name from the Customers table (aliased as c). SUM(o.order_amount) AS total_order_amount: Calculates the total order amount for each customer by summing the order_amount from the Orders table (aliased as o). FROM Customers c: Specifies the Customers table as the source for customer data. INNER JOIN Orders o ON c.id = o.customer_id: Defines the JOIN operation. INNER JOIN: This indicates an Inner JOIN. Orders o: The Orders table is joined. ON c.id = o.customer_id: This is the JOIN condition. It matches rows where the customer ID (c.id) in the Customers table is equal to the customer ID (o.customer_id) in the Orders table. GROUP BY c.name: Groups the results by customer name for accurate total order amount calculation. This query will return a list of customer names and their corresponding total order amounts, effectively combining data from both tables using the JOIN.\nTIPS # Use Comments: SQL supports comments to document your queries. Use -- for single-line comments and /* */ for multi-line comments.\nAvoid SELECT * : When writing queries, avoid using SELECT * to retrieve all columns from a table. Instead, explicitly list the columns you need. This practice improves query performance and makes your code more maintainable.\nUse Transactions: When performing multiple operations that need to be executed together (like inserting data into multiple tables), wrap them in a transaction. This ensures that either all operations succeed or none of them are applied.\nBackup Your Data: Regularly back up your database to prevent data loss. Most database management systems provide tools or utilities to create backups.\nOptimize Queries: Use database tools to analyze query performance and optimize slow queries. Techniques like indexing, query caching, and query tuning can significantly improve database performance.\nPractice Safe SQL: Protect your database from SQL injection attacks by using parameterized queries or prepared statements. These techniques help prevent malicious code injection through user input.\nSnippets # Note: The following queries use information_schema, which is specific to MySQL and MariaDB. Other databases like PostgreSQL and SQLite use different system tables and commands for similar tasks.\nMySQL/MariaDB: To generate statements to convert tables in a database schema to the character set utf8mb4 with the collation utf8mb4_unicode_ci:\nSELECT CONCAT(\u0026#39;ALTER TABLE \u0026#39;, table_name, \u0026#39; CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\u0026#39;) AS alter_statement FROM information_schema.tables WHERE table_schema = \u0026#39;SCHEMA\u0026#39;; To retrieve information about tables and their estimated sizes:\nSELECT TABLE_SCHEMA AS `Database`, TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `Size (MB)` FROM information_schema.TABLES; PostgreSQL: To get table sizes, use the pg_catalog schema and built-in functions:\nSELECT schemaname AS schema, relname AS table, pg_size_pretty(pg_total_relation_size(relid)) AS size FROM pg_catalog.pg_statio_user_tables; SQLite: SQLite does not store table size information in system tables, but you can estimate the database file size using:\nPRAGMA page_count; PRAGMA page_size; -- Multiply page_count by page_size for total size in bytes Backing Up and Restoring Databases # Backing up your database is crucial to prevent data loss in case of hardware failures, accidental deletions, or other disasters.\nBacking Up a Database # To back up a MySQL database, you can use the mysqldump utility. Here\u0026rsquo;s an example command to back up a MySQL database:\nmysqldump -u username -p database_name \u0026gt; backup.sql This command exports the database database_name to a file named backup.sql. You\u0026rsquo;ll be prompted to enter the password for the specified user (username).\nRestoring a Database # To restore a database from a backup file, you can use the mysql command. Here\u0026rsquo;s an example command to restore a MySQL database:\nmysql -u username -p database_name \u0026lt; backup.sql or you can source the backup file directly in the MySQL shell:\nsource backup.sql PostgreSQL Backup and Restore Options:\nPostgreSQL offers several methods for backing up and restoring databases. Here\u0026rsquo;s an overview of the key tools:\npg_dump and pg_restore: These are the primary command-line utilities for managing backups. pg_dump creates consistent backups of your database, including the schema and data. It\u0026rsquo;s suitable for both full and partial backups. pg_restore is used to restore databases from backups created with pg_dump. It allows for restoring entire databases or specific objects. psql: While not the primary tool for full database restores, psql can be used to execute individual SQL statements from a backup script containing CREATE TABLE and INSERT statements, offering some restore flexibility. pg_basebackup: This is a powerful utility specifically designed for creating online backups of PostgreSQL databases. It creates a consistent physical copy of the database cluster\u0026rsquo;s data files while the server remains operational. This allows for minimal downtime during backup processes and is often used for replication setups. Choosing the Right Tool:\nThe best backup approach depends on your specific needs. Here\u0026rsquo;s a general guideline:\nFull Backups: Use pg_dump for scheduled full backups or pg_basebackup for online backups with minimal downtime. Partial Backups: Use pg_dump to target specific schemas or tables. Restores: Use pg_restore for full database restores or psql for limited restores involving specific SQL statements. Converting from MariaDB to PostgreSQL:\nForget everything and use pgloader to automate the migration process. It handles schema conversion, data type mapping, and data loading, making it a powerful tool for this task.\nExample:\napt install pgloader pgloader --verbose mysql://user:password@host/database postgresql://user:password@host/database p.s. you can also use pgloader to load data from CSV files, SQLite or MS-SQL Server.\n","date":"16 November 2023","externalUrl":null,"permalink":"/posts/sql-cheatsheet/","section":"Posts","summary":"Preface # SQL stands for Structured Query Language. It’s a powerful and widely-used language specifically designed for managing data stored in relational databases.\n","title":"SQL Cheat Sheet","type":"posts"},{"content":"","date":"24 October 2023","externalUrl":null,"permalink":"/tags/javascript/","section":"Tags","summary":"","title":"JavaScript","type":"tags"},{"content":"Hugo Blox Builder is designed to give technical content creators a seamless experience. You can focus on the content and the Hugo Blox Builder which this template is built upon handles the rest.\nEmbed videos, podcasts, code, LaTeX math, and even test students!\nOn this page, you\u0026rsquo;ll find some examples of the types of technical content that can be rendered with Hugo Blox.\nVideo # Teach your course by sharing videos with your students. Choose from one of the following approaches:\nYoutube:\n{{\u0026lt; youtube w7Ft2ymGmfc \u0026gt;}} Bilibili:\n{{\u0026lt; bilibili id=\u0026quot;BV1WV4y1r7DF\u0026quot; \u0026gt;}} Video file\nVideos may be added to a page by either placing them in your assets/media/ media library or in your page\u0026rsquo;s folder, and then embedding them with the video shortcode:\n{{\u0026lt; video src=\u0026quot;my_video.mp4\u0026quot; controls=\u0026quot;yes\u0026quot; \u0026gt;}} Podcast # You can add a podcast or music to a page by placing the MP3 file in the page\u0026rsquo;s folder or the media library folder and then embedding the audio on your page with the audio shortcode:\n{{\u0026lt; audio src=\u0026quot;ambient-piano.mp3\u0026quot; \u0026gt;}} Try it out:\nYour browser does not support the audio element. Test students # Provide a simple yet fun self-assessment by revealing the solutions to challenges with the spoiler shortcode:\n{{\u0026lt; spoiler text=\u0026#34;👉 Click to view the solution\u0026#34; \u0026gt;}} You found me! {{\u0026lt; /spoiler \u0026gt;}} renders as\n👉 Click to view the solution You found me 🎉 Math # Hugo Blox Builder supports a Markdown extension for $\\LaTeX$ math. You can enable this feature by toggling the math option in your config/_default/params.yaml file.\nTo render inline or block math, wrap your LaTeX math with {{\u0026lt; math \u0026gt;}}$...${{\u0026lt; /math \u0026gt;}} or {{\u0026lt; math \u0026gt;}}$$...$${{\u0026lt; /math \u0026gt;}}, respectively.\nWe wrap the LaTeX math in the Hugo Blox math shortcode to prevent Hugo rendering our math as Markdown. Example math block:\n{{\u0026lt; math \u0026gt;}} $$ \\gamma_{n} = \\frac{ \\left | \\left (\\mathbf x_{n} - \\mathbf x_{n-1} \\right )^T \\left [\\nabla F (\\mathbf x_{n}) - \\nabla F (\\mathbf x_{n-1}) \\right ] \\right |}{\\left \\|\\nabla F(\\mathbf{x}_{n}) - \\nabla F(\\mathbf{x}_{n-1}) \\right \\|^2} $$ {{\u0026lt; /math \u0026gt;}} renders as\n$$\\gamma_{n} = \\frac{ \\left | \\left (\\mathbf x_{n} - \\mathbf x_{n-1} \\right )^T \\left [\\nabla F (\\mathbf x_{n}) - \\nabla F (\\mathbf x_{n-1}) \\right ] \\right |}{\\left \\|\\nabla F(\\mathbf{x}_{n}) - \\nabla F(\\mathbf{x}_{n-1}) \\right \\|^2}$$ Example inline math {{\u0026lt; math \u0026gt;}}$\\nabla F(\\mathbf{x}_{n})${{\u0026lt; /math \u0026gt;}} renders as $\\nabla F(\\mathbf{x}_{n})$ .\nExample multi-line math using the math linebreak (\\\\):\n{{\u0026lt; math \u0026gt;}} $$f(k;p_{0}^{*}) = \\begin{cases}p_{0}^{*} \u0026amp; \\text{if }k=1, \\\\ 1-p_{0}^{*} \u0026amp; \\text{if }k=0.\\end{cases}$$ {{\u0026lt; /math \u0026gt;}} renders as\n$$ f(k;p_{0}^{*}) = \\begin{cases}p_{0}^{*} \u0026 \\text{if }k=1, \\\\ 1-p_{0}^{*} \u0026 \\text{if }k=0.\\end{cases} $$ Code # Hugo Blox Builder utilises Hugo\u0026rsquo;s Markdown extension for highlighting code syntax. The code theme can be selected in the config/_default/params.yaml file.\n```python import pandas as pd data = pd.read_csv(\u0026quot;data.csv\u0026quot;) data.head() ``` renders as\nimport pandas as pd data = pd.read_csv(\u0026#34;data.csv\u0026#34;) data.head() Inline Images # {{\u0026lt; icon name=\u0026#34;python\u0026#34; \u0026gt;}} Python renders as\nPython\nDid you find this page helpful? Consider sharing it 🙌 # ","date":"24 October 2023","externalUrl":null,"permalink":"/teaching/js/","section":"Teaching","summary":"Easily learn JavaScript in 10 minutes!","title":"Learn JavaScript","type":"teaching"},{"content":"Hugo Blox Builder is designed to give technical content creators a seamless experience. You can focus on the content and the Hugo Blox Builder which this template is built upon handles the rest.\nEmbed videos, podcasts, code, LaTeX math, and even test students!\nOn this page, you\u0026rsquo;ll find some examples of the types of technical content that can be rendered with Hugo Blox.\nVideo # Teach your course by sharing videos with your students. Choose from one of the following approaches:\nYoutube:\n{{\u0026lt; youtube w7Ft2ymGmfc \u0026gt;}} Bilibili:\n{{\u0026lt; bilibili id=\u0026quot;BV1WV4y1r7DF\u0026quot; \u0026gt;}} Video file\nVideos may be added to a page by either placing them in your assets/media/ media library or in your page\u0026rsquo;s folder, and then embedding them with the video shortcode:\n{{\u0026lt; video src=\u0026quot;my_video.mp4\u0026quot; controls=\u0026quot;yes\u0026quot; \u0026gt;}} Podcast # You can add a podcast or music to a page by placing the MP3 file in the page\u0026rsquo;s folder or the media library folder and then embedding the audio on your page with the audio shortcode:\n{{\u0026lt; audio src=\u0026quot;ambient-piano.mp3\u0026quot; \u0026gt;}} Try it out:\nYour browser does not support the audio element. Test students # Provide a simple yet fun self-assessment by revealing the solutions to challenges with the spoiler shortcode:\n{{\u0026lt; spoiler text=\u0026#34;👉 Click to view the solution\u0026#34; \u0026gt;}} You found me! {{\u0026lt; /spoiler \u0026gt;}} renders as\n👉 Click to view the solution You found me 🎉 Math # Hugo Blox Builder supports a Markdown extension for $\\LaTeX$ math. You can enable this feature by toggling the math option in your config/_default/params.yaml file.\nTo render inline or block math, wrap your LaTeX math with {{\u0026lt; math \u0026gt;}}$...${{\u0026lt; /math \u0026gt;}} or {{\u0026lt; math \u0026gt;}}$$...$${{\u0026lt; /math \u0026gt;}}, respectively.\nWe wrap the LaTeX math in the Hugo Blox math shortcode to prevent Hugo rendering our math as Markdown. Example math block:\n{{\u0026lt; math \u0026gt;}} $$ \\gamma_{n} = \\frac{ \\left | \\left (\\mathbf x_{n} - \\mathbf x_{n-1} \\right )^T \\left [\\nabla F (\\mathbf x_{n}) - \\nabla F (\\mathbf x_{n-1}) \\right ] \\right |}{\\left \\|\\nabla F(\\mathbf{x}_{n}) - \\nabla F(\\mathbf{x}_{n-1}) \\right \\|^2} $$ {{\u0026lt; /math \u0026gt;}} renders as\n$$\\gamma_{n} = \\frac{ \\left | \\left (\\mathbf x_{n} - \\mathbf x_{n-1} \\right )^T \\left [\\nabla F (\\mathbf x_{n}) - \\nabla F (\\mathbf x_{n-1}) \\right ] \\right |}{\\left \\|\\nabla F(\\mathbf{x}_{n}) - \\nabla F(\\mathbf{x}_{n-1}) \\right \\|^2}$$ Example inline math {{\u0026lt; math \u0026gt;}}$\\nabla F(\\mathbf{x}_{n})${{\u0026lt; /math \u0026gt;}} renders as $\\nabla F(\\mathbf{x}_{n})$ .\nExample multi-line math using the math linebreak (\\\\):\n{{\u0026lt; math \u0026gt;}} $$f(k;p_{0}^{*}) = \\begin{cases}p_{0}^{*} \u0026amp; \\text{if }k=1, \\\\ 1-p_{0}^{*} \u0026amp; \\text{if }k=0.\\end{cases}$$ {{\u0026lt; /math \u0026gt;}} renders as\n$$ f(k;p_{0}^{*}) = \\begin{cases}p_{0}^{*} \u0026 \\text{if }k=1, \\\\ 1-p_{0}^{*} \u0026 \\text{if }k=0.\\end{cases} $$ Code # Hugo Blox Builder utilises Hugo\u0026rsquo;s Markdown extension for highlighting code syntax. The code theme can be selected in the config/_default/params.yaml file.\n```python import pandas as pd data = pd.read_csv(\u0026quot;data.csv\u0026quot;) data.head() ``` renders as\nimport pandas as pd data = pd.read_csv(\u0026#34;data.csv\u0026#34;) data.head() Inline Images # {{\u0026lt; icon name=\u0026#34;python\u0026#34; \u0026gt;}} Python renders as\nPython\nDid you find this page helpful? Consider sharing it 🙌 # ","date":"24 October 2023","externalUrl":null,"permalink":"/teaching/python/","section":"Teaching","summary":"Easily learn Python in 10 minutes!","title":"Learn Python","type":"teaching"},{"content":"","date":"24 October 2023","externalUrl":null,"permalink":"/teaching/","section":"Teaching","summary":"","title":"Teaching","type":"teaching"},{"content":"","date":"10 October 2023","externalUrl":null,"permalink":"/tags/git/","section":"Tags","summary":"","title":"Git","type":"tags"},{"content":"In today\u0026rsquo;s collaborative development world (as of 2024), version control is crucial for managing code effectively. Git, a distributed version control system (DVCS), has become the industry standard for developers of all backgrounds.\nGit Configuration # The initial setup of Git involves configuring your user information and some helpful settings.\nCommand Description git config --global user.name \u0026quot;[Your Name]\u0026quot; Sets the name associated with your commits and tags. Replace [Your Name] with your actual first and last name. git config --global user.email \u0026quot;[your-valid-email@example.com]\u0026quot; Sets the email address associated with your commits and tags. Replace [your-valid-email@example.com] with your actual email address. git config --global color.ui auto Enables automatic colorization of Git\u0026rsquo;s command-line output for better readability. Starting a Project / INIT # Git provides two primary ways to begin working with a project: creating a new local repository or cloning an existing one.\nCommand Description git init [project name] (optional) Initializes a new Git repository in the current directory. If you provide a [project name], Git will create a new directory with that name and initialize a repository inside it. git clone \u0026lt;project URL\u0026gt; Downloads a complete project, including its entire history, from a remote repository specified by the \u0026lt;project URL\u0026gt;. Day-to-Day Work / Stage \u0026amp; Snapshot # Essential Git commands for your daily workflow:\nCommand Description git status Displays the current state of your working directory, including new, modified, and staged files. It also shows the current branch name, commit identifier, and any changes awaiting commit. git add [file] Adds a specific file to the staging area, which prepares it for the next commit. Use . (dot) to add all changed files from the current directory and its subdirectories. git diff [file] (optional) Shows the differences between the working directory (your uncommitted changes) and the staging area, allowing you to review modifications before committing. git diff --staged [file] (optional) Reveals changes between the staging area (files prepared for commit) and the last committed snapshot, helping you verify staged modifications. git checkout -- [file] (Use with caution! ) Discards all changes made to a specific file in the working directory. This action cannot be undone! git reset [\u0026lt;path\u0026gt;] Reverts changes in the working directory or staging area to match the specified path or the latest commit (HEAD). Use cautiously, as it can lose unsaved work. git commit -m \u0026quot;[descriptive message]\u0026quot; Creates a new commit snapshot, capturing the current state of the staged files. Include a clear and concise message describing the changes made. git rm [file] Removes a file from both the working directory and the staging area, effectively deleting it from your project. Git Stash Commands # Command Description git stash Temporarily saves the current state of your working directory (uncommitted changes and staged files) for later use. This creates a \u0026ldquo;stash\u0026rdquo; entry, essentially a snapshot of your current work. git stash list Lists all your stashed changes in reverse chronological order (most recent stash at the top). This helps you identify and manage specific stashed modifications. git stash pop Applies the changes from the most recent stash (top of the stash list) to your working directory. This effectively \u0026ldquo;un-stashes\u0026rdquo; your work, incorporating the previously saved changes. The stash itself is removed after a successful pop. git stash drop Permanently removes a specific stash entry from the stash list. Use the output from git stash list to identify the stash you want to delete (e.g., git stash drop stash@{0} to delete the most recent stash). Use with caution! Once dropped, a stash cannot be recovered. Git Branching Model / Branch \u0026amp; Merge / Rewrite History # Effective branching strategies are essential for managing code development in Git. Here\u0026rsquo;s a breakdown of key Git commands for branching, merging, and history manipulation:\nCommand Description git branch [-a] Lists all local branches in your repository. Use the -a flag to see both local and remote branches. git branch [branch_name] Creates a new branch named [branch_name] that starts from the current HEAD commit. git rebase [branch] (Use with caution! ) Rebases the current branch on top of the specified [branch]. This replays your commits on top of the [branch] history, potentially rewriting history and making it difficult for collaboration. Consider using git merge for collaborative workflows. git checkout [-b] [branch_name] Switches your working directory to the specified [branch_name]. Use the -b flag to create a new branch named [branch_name] if it doesn\u0026rsquo;t exist yet. git merge [branch_name] Merges the changes from the specified [branch_name] into the current branch, combining their histories. This is generally preferred over git rebase for collaborative development. git branch -d [branch_name] Deletes the specified [branch_name], but only if it has already been merged into another branch. Use the -D flag (use with caution!) to force deletion even if unmerged, but be aware this can cause issues in collaborative workflows. Additional Commands: git branch Lists all local branches, indicating the currently active branch with an asterisk (*). git checkout [branch] Switches to the specified [branch] and checks it out into your working directory. git reset --hard [commit] (Use with extreme caution! ) Discards all uncommitted changes in your working directory and resets it to the state of the specified commit. This action cannot be undone! Notes:\nUse git branch regularly to keep track of your branches. Favor git merge over git rebase in collaborative development to avoid rewriting history and potential conflicts. Be cautious with git reset --hard and git branch -D as they can lead to data loss. Consider using a visual Git client to get a better understanding of branch relationships. Inspect History / Inspect \u0026amp; Compare # Understanding your project\u0026rsquo;s history is crucial in Git. Here\u0026rsquo;s a table outlining essential commands for inspecting commits, comparing branches, and viewing Git objects:\nCommand Description git log Lists the commit history of your current branch, starting from the most recent commit and working backwards. git log [-n count] Shows a limited view of the commit history, displaying only the most recent n commits. git log --oneline --graph --decorate Provides a concise overview of the commit history with a visual graph, reference labels, and decorations (e.g., author names, commit messages). Each commit is displayed on a single line. git log ref^.. Lists commits that exist on your current branch (ref) but haven\u0026rsquo;t been merged into the specified reference (ref). This reference can be a branch name or a tag name. git log --first-parent origin/master..HEAD (Advanced: Use with caution!) Shows commits specific to your current branch (HEAD) that are not present in the origin/master branch\u0026rsquo;s linear history (excluding merges). This is useful for identifying your local changes on top of the remote master branch. git reflog Displays a history of operations (like checkouts and commits) performed on your local repository. git log branchB..branchA Reveals the commits that are present on branch branchA but not on branch branchB. This helps you understand what changes exist in branchA that are not yet included in branchB. git log --follow [file] Tracks the history of a specific file named [file], even if it has been renamed during development. This allows you to see all commits that modified the file throughout its lifetime. git diff branchB...branchA Shows the difference between branches branchB and branchA. This essentially reveals what changes are present in branchA compared to branchB. git show [SHA] Displays any Git object (e.g., a commit, a blob, or a tree) in a human-readable format, given its SHA-1 hash ([SHA]). Notes:\nUse git log variations to explore your commit history at different levels of detail. git reflog can be helpful for tracking your actions in the repository. Commands like git log branchB..branchA and git diff branchB...branchA are valuable for comparing branches. git show allows you to examine specific Git objects by their unique identifier. Reverting Changes # Git provides two primary ways to undo changes in your project: git reset and git revert. Here\u0026rsquo;s a table explaining these commands:\nCommand Description git reset [--hard] [target reference] Moves the current branch pointer (HEAD) to the specified target reference (e.g., a commit SHA or branch name). This essentially undoes changes by rewinding your working directory and staging area to match the target state. * Without --hard (default): Changes made since the target reference become uncommitted changes in your working directory. However, be cautious as these changes can be easily lost. * With --hard (Use with extreme caution!): Discards all uncommitted changes in your working directory and staging area, completely resetting them to the state of the target reference. This action cannot be undone! git revert [commit SHA] Creates a new commit that effectively reverses the changes introduced in the specified commit identified by its SHA. This is generally a safer option than git reset as it creates a new commit to track the reversal, allowing you to revert the revert if needed. Notes:\nUse git reset cautiously, especially with the --hard flag, as it can lead to permanent data loss. Consider git revert as a safer alternative for undoing changes as it creates a new commit for tracking. Before using either command, it\u0026rsquo;s highly recommended to back up your work or use a stash (covered in a previous section) to preserve uncommitted changes if needed. Tagging Commits # Tags are a powerful way to mark specific points in your Git history for easy reference.\nCommand Description git tag Lists all existing tags associated with your Git repository. git tag [name] [commit SHA] Creates a new tag named [name] that points to the current HEAD commit (the latest commit in your current branch). You can optionally specify a specific commit SHA to tag instead of the current one. git tag -a [name] [commit SHA] (Advanced: Use with caution!) Creates an annotated tag named [name] for the specified commit (either the current HEAD or a specific SHA). Annotated tags store additional information like a tag message, which can be helpful for documentation purposes. However, annotated tags can be larger than lightweight tags (created by git tag without -a). Consider using lightweight tags for simplicity in most cases. git tag -d [name] Removes the specified tag named [name] from your local repository. Notes:\nUse clear and descriptive names for your tags to enhance readability. Lightweight tags (created with git tag) are generally preferred due to their smaller size. Annotated tags (created with git tag -a) can be useful for storing additional information, but use them judiciously when size is a concern. Synchronizing Repositories / Share \u0026amp; Update # Collaboration and keeping your project code in sync are essential aspects of Git.\nCommand Description git fetch [remote] Retrieves changes from the remote repository specified by [remote] (e.g., origin) but doesn\u0026rsquo;t automatically integrate them into your local branch. This is useful when you want to see what changes exist on the remote without merging them yet. git fetch --prune [remote] Fetches changes from the remote repository and additionally removes any local references (refs) to branches that have been deleted on the remote. This helps keep your local repository clean. git pull [remote] Combines git fetch and git merge in one step. It downloads changes from the remote repository and attempts to merge them into your current branch. This is a convenient way to stay up-to-date with the remote\u0026rsquo;s latest changes. git push [--tags] [remote] Pushes your local commits to the remote repository specified by [remote]. Use the --tags flag to include tags along with your commits. git push -u [remote] [branch] Pushes your local branch named [branch] to the remote repository and sets the corresponding remote branch as an \u0026ldquo;upstream\u0026rdquo; branch. This simplifies future pushes as you won\u0026rsquo;t need to specify the remote branch name explicitly. git remote add [alias] [url] Adds a new remote repository identified by its URL [url] and assigns a short alias name [alias] for easier reference. git remote update origin --prune Update the local list of remote branches. git fetch [alias] Fetches changes from the remote repository associated with the specified alias [alias]. git merge [alias]/[branch] Merges the remote branch named [branch] from the remote repository identified by [alias] into your current local branch. This allows you to incorporate changes from a specific remote branch. git push [alias] [branch] Pushes your local branch named [branch] to the remote branch named [branch] on the remote repository identified by [alias]. Notes:\nUse git fetch when you want to be aware of remote changes without merging them immediately. git pull is a convenient way to fetch and merge in one step, but be prepared to handle potential merge conflicts. Use git push to share your local commits with the remote repository. Manage remote repositories with aliases for easier handling using git remote add. Consider using a visual Git client to simplify branch management and visualization. Git Repository Maintenance # Regular maintenance of your Git repository is essential for optimal performance and organization.\nCommand Description git gc Cleans up unnecessary files and optimizes the local repository\u0026rsquo;s database. This command is useful for reducing disk usage and improving Git\u0026rsquo;s performance. git fsck Verifies the integrity of your repository\u0026rsquo;s objects and references, checking for any corruption or inconsistencies. This is helpful for ensuring the reliability of your Git data. git prune Removes unreachable objects (e.g., commits, blobs) from your repository, freeing up disk space and keeping your repository clean. git reflog expire --expire=now --all Expires all reflog entries immediately, removing any outdated or unnecessary references. This helps maintain a clean and efficient repository. git clean -dnx | sed 's/Would remove //;s/Would skip repository //' Lists untracked files in your working directory that are not ignored by your .gitignore file. This command is useful for identifying files that may need to be removed or added to the ignore list. (remove x to hide ignored files) Link to my presentation/talk about Git \u0026hellip;not just version control ","date":"10 October 2023","externalUrl":null,"permalink":"/posts/git-cheatsheet/","section":"Posts","summary":"In today’s collaborative development world (as of 2024), version control is crucial for managing code effectively. Git, a distributed version control system (DVCS), has become the industry standard for developers of all backgrounds.","title":"Git Cheatsheet","type":"posts"},{"content":"","date":"10 September 2023","externalUrl":null,"permalink":"/tags/howto/","section":"Tags","summary":"","title":"Howto","type":"tags"},{"content":"","date":"10 September 2023","externalUrl":null,"permalink":"/tags/network/","section":"Tags","summary":"","title":"Network","type":"tags"},{"content":"Keeping your web server running smoothly is crucial for a positive user experience. But how do you know it can handle the traffic you expect? Benchmarking is the answer! It allows you to simulate real-world load and measure your server\u0026rsquo;s performance. This post will guide you through using wrk, a powerful tool for benchmarking your web server.\nwrk is a fast, user-friendly HTTP benchmarking tool. It\u0026rsquo;s lightweight and easy to install. Once you have wrk set up, you can start crafting your benchmark test. wrk offers various options to configure your test precisely. You can define the number of threads to simulate concurrent users, the number of connections per thread, and the test duration. wrk also allows you to specify headers to be sent with each request, mimicking real user behavior.\nRunning a wrk test is straightforward. You provide the URL you want to benchmark along with the desired configuration options. Wrks then bombards your server with simulated traffic, measuring critical metrics like request latency, throughput, and overall system health. After the test concludes, wrk presents a detailed report. This report showcases valuable data points like average request time, request rate, and connection errors. Analyzing this data helps you identify bottlenecks and areas for improvement in your web server\u0026rsquo;s performance.\nBy incorporating wrk into your routine, you gain valuable insights into your web server\u0026rsquo;s capabilities. This allows you to optimize your server\u0026rsquo;s configuration, ensuring it can handle peak traffic and deliver a seamless user experience.\nHere\u0026rsquo;s an excerpt from the wrk project\u0026rsquo;s README on GitHub for quick reference:\nBasic Usage # wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html This runs a benchmark for 30 seconds, using 12 threads, and keeping 400 HTTP connections open.\nOutput:\nRunning 30s test @ http://127.0.0.1:8080/index.html 12 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 635.91us 0.89ms 12.92ms 93.69% Req/Sec 56.20k 8.07k 62.00k 86.54% 22464657 requests in 30.00s, 17.76GB read Requests/sec: 748868.53 Transfer/sec: 606.33MB Command Line Options # -c, --connections: total number of HTTP connections to keep open with each thread handling N = connections/threads -d, --duration: duration of the test, e.g. 2s, 2m, 2h -t, --threads: total number of threads to use -s, --script: LuaJIT script, see SCRIPTING -H, --header: HTTP header to add to request, e.g. \u0026#34;User-Agent: wrk\u0026#34; --latency: print detailed latency statistics --timeout: record a timeout if a response is not received within this amount of time. Benchmarking Tips # The machine running wrk must have a sufficient number of ephemeral ports available and closed sockets should be recycled quickly. To handle the initial connection burst the server\u0026rsquo;s listen backlog should be greater than the number of concurrent connections being tested.\nA user script that only changes the HTTP method, path, adds headers or a body, will have no performance impact. Per-request actions, particularly building a new HTTP request, and use of response() will necessarily reduce the amount of load that can be generated.\nShowtime 🚀 # Write a program that can serve a list of 100 albums with a REST like interface (JSON) and measure the performance with wrk\nHere\u0026rsquo;s the project in GitHub with full source code and implementations in more than 8 languages: web-service-albums-benchmark\nAnd the results:\nIt\u0026rsquo;s clear that Rust and Go are the speed demons when it comes to this particular task. However, threading and concurrency can be a game-changer in terms of performance. The key takeaway is that your server\u0026rsquo;s capabilities play a significant role in determining the optimal approach. For instance, if you\u0026rsquo;re running on a 4-core CPU, don\u0026rsquo;t expect more than 4 threads to run simultaneously - it\u0026rsquo;s like trying to fit too many eggs in one basket! So, before making any changes to your tech stack, take some time to consider these factors and plan accordingly.\n","date":"10 September 2023","externalUrl":null,"permalink":"/posts/benchmark-webserver/","section":"Posts","summary":"Keeping your web server running smoothly is crucial for a positive user experience. But how do you know it can handle the traffic you expect? Benchmarking is the answer! It allows you to simulate real-world load and measure your server’s performance. This post will guide you through using wrk, a powerful tool for benchmarking your web server.\n","title":"The correct way to benchmark your web server","type":"posts"},{"content":"","date":"10 August 2023","externalUrl":null,"permalink":"/tags/devops/","section":"Tags","summary":"","title":"Devops","type":"tags"},{"content":"","date":"10 August 2023","externalUrl":null,"permalink":"/tags/nextjs/","section":"Tags","summary":"","title":"Nextjs","type":"tags"},{"content":"","date":"10 August 2023","externalUrl":null,"permalink":"/tags/react/","section":"Tags","summary":"","title":"React","type":"tags"},{"content":"Following my previous post on Vuejs + Nuxt.js with Docker, I will show you how to dockerize a React + Next.js web application.\nReact is a JavaScript library for building user interfaces. Next.js is a framework for building React applications. Docker is a containerization platform that can be used to package and deploy these applications.\nTo dockerize a Next.js application, a Dockerfile is created that specifies the steps required to build the image.\nFROM node:20-alpine RUN mkdir -p /usr/src/app # Set the working directory WORKDIR /usr/src/app COPY . . RUN npm ci \u0026amp;\u0026amp; npm cache clean --force RUN npm run build EXPOSE 3000 # Start the Next.js app CMD [\u0026#34;npm\u0026#34;, \u0026#34;start\u0026#34;] Once the Dockerfile is created, the image can be built using the docker build command. The image can then be run using the docker run command.\nYou can now dockerize your Next.js app, if you want to learn about Let\u0026rsquo;s Encrypt check the previous post on Vuejs + Nuxt.js with Docker.\n","date":"10 August 2023","externalUrl":null,"permalink":"/posts/reactjsnext/","section":"Posts","summary":"Following my previous post on Vuejs + Nuxt.js with Docker, I will show you how to dockerize a React + Next.js web application.\nReact is a JavaScript library for building user interfaces. Next.js is a framework for building React applications. Docker is a containerization platform that can be used to package and deploy these applications.\n","title":"React + Next.js with Docker","type":"posts"},{"content":"","date":"10 August 2023","externalUrl":null,"permalink":"/tags/webdev/","section":"Tags","summary":"","title":"Webdev","type":"tags"},{"content":"","date":"4 August 2023","externalUrl":null,"permalink":"/tags/nuxt/","section":"Tags","summary":"","title":"Nuxt","type":"tags"},{"content":"Vue.js and Nuxt are powerful frameworks for building web applications. Docker is a containerization platform that can be used to package and deploy these applications.\nTo dockerize a Nuxt application, a Dockerfile is created that specifies the steps required to build the image. This typically includes installing Nuxt and the application\u0026rsquo;s dependencies.\nFROM node:20-alpine RUN mkdir -p /usr/src/nuxt-app WORKDIR /usr/src/nuxt-app COPY . . RUN npm ci \u0026amp;\u0026amp; npm cache clean --force RUN npm run build ENV NUXT_HOST=0.0.0.0 ENV NUXT_PORT=3000 EXPOSE 3000 ENTRYPOINT [\u0026#34;node\u0026#34;, \u0026#34;.output/server/index.mjs\u0026#34;] Once the Dockerfile is created, the image can be built using the docker build command. The image can then be run using the docker run command.\nDockerizing web applications offers a number of benefits, including:\nEase of deployment: Docker images can be deployed to any environment that has Docker installed. Security: Docker images are isolated from the host environment, which can improve security. Reproducibility: Docker images can be used to reproduce an application\u0026rsquo;s environment, which can be helpful for debugging and testing. If you would like to serve the above application on a website e.g. https://example.com with a free LetsEncrypt certificate, consider using nginxproxy/acme-companion and edit your docker-compose.yml to include the web app with this snippet:\nweb-app: environment: - LETSENCRYPT_HOST=example.com,www.example.com - VIRTUAL_HOST=example.com,www.example.com - VIRTUAL_PORT=3000 expose: - \u0026#39;80\u0026#39; build: /home/user/nuxt-website/ networks: - nginx-proxy restart: unless-stopped Bonus - systemd # Systemd is a system and service manager for Linux operating systems.\nAnother option - if you don\u0026rsquo;t have Docker - would be to create a custom systemd service, create a new file in /etc/systemd/system/nuxt.service like this, and edit it to fit your needs:\n[Unit] After=network.target Description=run Nuxt application [Service] ExecStart=env PATH=$PATH:/home/user/.nvm/versions/node/v20.5.0/bin node .output/server/index.mjs WorkingDirectory=/home/user/nuxt-website User=user Group=user [Install] WantedBy=multi-user.target You just got your systemd compatible service, for more information check the ArchWiki\n# enable the service (to start on boot) sudo systemctl enable nuxt.service # start it sudo systemctl start nuxt.service # stop it sudo systemctl stop nuxt.service # disable it sudo systemctl disable nuxt.service # check the status systemctl status nuxt.service # check the logs journalctl -u nuxt You can now dockerize your Nuxt app and serve it on a website with a free LetsEncrypt certificate OR with systemd 😉\n","date":"4 August 2023","externalUrl":null,"permalink":"/posts/vuejsnuxt/","section":"Posts","summary":"Vue.js and Nuxt are powerful frameworks for building web applications. Docker is a containerization platform that can be used to package and deploy these applications.\nTo dockerize a Nuxt application, a Dockerfile is created that specifies the steps required to build the image. This typically includes installing Nuxt and the application’s dependencies.\n","title":"Vue.js + Nuxt with Docker","type":"posts"},{"content":"","date":"4 August 2023","externalUrl":null,"permalink":"/tags/vuejs/","section":"Tags","summary":"","title":"Vuejs","type":"tags"},{"content":"","date":"5 June 2023","externalUrl":null,"permalink":"/tags/file-manager/","section":"Tags","summary":"","title":"File Manager","type":"tags"},{"content":" Introduction # In the world of command-line interfaces, GNU Midnight Commander (MC) stands out as a powerful and versatile file manager that brings efficiency and convenience to text-based terminal emulators (console, xterm etc.). With its dual-pane interface and a range of features, MC simplifies file and directory operations, making it a beloved tool for both beginners and experienced users. As stated on it\u0026rsquo;s GitHub page, GNU Midnight Commander was conceived as a free clone of John Socha\u0026rsquo;s Norton Commander™. It also takes the best from more recent software with similar interfaces. Many years ago, we used file-managers like these, as \u0026ldquo;Norton Commander\u0026rdquo; in DOS, or the legendary DiskMaster2 in AmigaDOS, which is still alive in aminet!\nDual-Pane Interface for Seamless File Management # One of the key strengths of Midnight Commander is its intuitive dual-pane layout. The two panes allow users to navigate through directories and manipulate files seamlessly. Whether you\u0026rsquo;re copying, moving, or deleting files, the dual-pane view enables quick and effortless operations. Moreover, MC provides a command-line prompt at the bottom, allowing users to execute commands directly without switching to a separate terminal window. This combination of a visual interface and command-line capabilities enhances productivity and workflow efficiency.\nFeature-Rich Functionality # In addition to its exceptional file management capabilities, MC offers a wide range of features that further enhance its usefulness. It includes a built-in file viewer, which allows users to examine the contents of various file types without the need for external applications. Additionally, MC features a powerful text editor, enabling users to make quick modifications to files without leaving the application. The integrated FTP client functionality allows seamless transfers of files between local and remote systems, adding another layer of convenience for users who need to work with remote servers.\nYou can install MC in different systems or you can compile it from source (it\u0026rsquo;s written in C).\nMacOS brew install mc Ubuntu/Debian sudo apt install mc Archlinux sudo pacman -S mc Here\u0026rsquo;s a list of feature copied directly from GitHub:\nFeatures # Some features are specific to the POSIX environment MC runs on, some are familiar to the users of similar software for other operating systems. The features include:\nBuilt in Virtual File System: manipulate remote file systems through the FTP and SFTP protocols or over secure shell, browse contents of tar, ar, rpm, zip, cpio, lha and rar archives just like local files.\nAlmost all operations work with the virtual file system, enabling you to do complex tasks, like viewing files in archives on an FTP server.\nMouse support on most terminal emulators for X Window System as well as on the Linux console.\nLearn Keys: GNU Midnight Commander may be configured at run time to support any kind of input keys for a given terminal, making its operation possible even on most weird terminals.\nText and hex editors are available for you to use (hex editor is a part of the viewer).\nHotlist allows you to keep a list of common visited locations, including remote sites and directories inside archives.\nCommand completion: By pressing Alt-Tab in any place where a filename or an executable are expected, GNU Midnight Commander will complete the name for you. If you press Alt-Tab for the second time, you get a list box with all possible completions.\nSubshell support: Run your commands by a real shell interpreter. GNU Midnight Commander interacts with bash, tcsh and zsh to provide you with all of the facilities available in your preferred shell.\nFind file command can search for the file contents.\nBackground operations allow you to copy or move files from any virtual file system while you do other tasks (i.e., you can do background FTP copies).\nFTP proxy is supported.\nLinux file recovery: If you are using Linux, you can recover deleted files from an ext2 or ext3 partition with the undelete file system. This is a low level file recovery function that can recover files deleted by any program on Linux.\nExternal panelization: You can run any arbitrary external command and GNU Midnight Commander will display the output generated as a file listing that can be manipulated as a regular directory.\nEmacs-like key bindings are used in all widgets.\nContext dependent actions (open, view, edit) are available.\nThe built-in file viewer, together with the context dependent actions is used to format man pages on the fly, coloring mail messages and more.\nThe built-in editor supports syntax highlighting and external actions, such as spell checking and formatting.\n","date":"5 June 2023","externalUrl":null,"permalink":"/posts/mc/","section":"Posts","summary":"In the world of command-line interfaces, Midnight Commander (MC) stands out as a powerful and versatile file manager that brings efficiency and convenience to text-based terminals","title":"MC: a commander like no other","type":"posts"},{"content":"","date":"14 April 2023","externalUrl":null,"permalink":"/tags/mobile/","section":"Tags","summary":"","title":"Mobile","type":"tags"},{"content":"scrcpy is an open-source tool developed by Genymobile, you can visit the Official GitHub and learn more.\nWord from the author: This application mirrors Android devices (video and audio) connected via USB or over TCP/IP, and allows to control the device with the keyboard and the mouse of the computer. It does not require any root access. It works on Linux, Windows and macOS.\nIt focuses on:\nlightness: native, displays only the device screen performance: 30~120fps, depending on the device quality: 1920×1080 or above low latency: 35~70ms low startup time: ~1 second to display the first image non-intrusiveness: nothing is left installed on the Android device user benefits: no account, no ads, no internet required freedom: free and open source software Its features include:\naudio forwarding (Android \u0026gt;= 11) recording mirroring with Android device screen off copy-paste in both directions configurable quality Android device screen as a webcam (V4L2) (Linux-only) physical keyboard/mouse simulation (HID) OTG mode and more… This tool gets better as it ages, like good wine, please keep up the good work guys 💯\n","date":"14 April 2023","externalUrl":null,"permalink":"/posts/scrcpy/","section":"Posts","summary":"Scrcpy is an open-source tool that allows users to mirror and control their Android devices from their computer","title":"Scrcpy: Display and control your Android device","type":"posts"},{"content":" Intro # If you come from planet Linux you\u0026rsquo;ve used a package manager before, pacman on Archlinux, apt on Debian/Ubuntu, each distro has it\u0026rsquo;s own beast, you already know how powerful and productive they are, now the time has come to use them on your other workstation \u0026#x1f604;\n\u0026#x1f37b; But first, an ode to them!\nIn the land of coding, where software abounds,\nWhere apps and updates are always around,\nA hero emerged, to manage it all,\nA package manager, standing tall!\nWith Scoop for Windows, and Homebrew for Mac,\nThese package managers kept software on track,\nInstallations were simple, updates were too,\nMaking life easier for me and for you.\nSo hail to the package managers, we say,\nFor keeping our software up-to-date each day,\nWe honor your efforts, your skill, your might,\nAnd thank you for making our coding lives bright!\n\u0026hellip;generated by ChatGPT\nPackage managers are essential tools that make it easy for developers and users to install, update, and manage software applications on their computers, not only command line tools buthuge apps like browsers and IDEs. Two of the most popular package managers are Scoop for Windows and Homebrew for macOS.\nScoop # Scoop is a command-line installer for Windows that allows users to easily install and manage software packages from the command line. As mentioned in the GitHub official page\nWhat does Scoop do?\nScoop installs programs from the command line with a minimal amount of friction. It:\nEliminates permission popup windows Hides GUI wizard-style installers Prevents PATH pollution from installing lots of programs Avoids unexpected side-effects from installing and uninstalling programs Finds and installs dependencies automatically Performs all the extra setup steps itself to get a working program Scoop is very scriptable, so you can run repeatable setups to get your environment just the way you like, e.g.:\nscoop install sudo sudo scoop install 7zip git openssh --global scoop install aria2 curl grep sed less touch scoop install python ruby go perl That\u0026rsquo;s from the official page, but, having installed some packages the first time 1 what I usually do each time I log in Windows is:\nscoop update * scoop cleanup * Homebrew # Homebrew is a command-line package manager for macOS (or Linux 2) that allows installing software from the terminal. Brew provides a centralized repository of software packages that can be easily updated and installed. Again, from the official GitHub homepage\nFeatures, usage and installation instructions are summarised on the homepage. Terminology (e.g. the difference between a Cellar, Tap, Cask and so forth) is explained here.\nWhat Packages Are Available?\ntype brew formulae for a list. or visit formulae.brew.sh to browse packages online. More Documentation\nbrew help, man brew or check our documentation\nBonus \u0026#x1f941; # If you come from Windows there\u0026rsquo;s a free (not open-source) tool called Patch My PC Home Updater that installs a large list of apps with an easy user interface, what\u0026rsquo;s cool about it? That the apps are already hand-picked and that they are fully categorized! You can find very useful freeware tools there \u0026#x1f609; Both package managers are awesome, try them and remember, I told you so\u0026#x2122;\u0026#xfe0f;\nIt would be great if you can support the authors in a way, too.\\\nIn case you want to try more package managers there are Fink and MacPorts for macOS and Chokolatey for Windows.\nUpdate: I found out that there\u0026rsquo;s an official Windows tool : winget\nVery convenient since it scans all your (already) installed apps !\nscoop install git gh 7zip nano nodejs-lts hugo\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nI dont recommend this, leave your Linux package manager alone \u0026#x1f603;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"21 March 2023","externalUrl":null,"permalink":"/posts/pkgman/","section":"Posts","summary":"So hail to the package managers, we say, for keeping our software up-to-date each day!","title":"Package Managers - not the evil kind of PMs","type":"posts"},{"content":"","date":"18 March 2023","externalUrl":null,"permalink":"/tags/bookmarks/","section":"Tags","summary":"","title":"Bookmarks","type":"tags"},{"content":"Are you tired of losing track of your bookmarks across multiple browsers? Look no further than Buku, the powerful bookmark manager that imports bookmarks from all your browsers, works on console and has a web-based server.\nWith Buku, you can easily organize your bookmarks into categories and tags, making it easy to find exactly what you need. Plus, Buku\u0026rsquo;s powerful search feature allows you to quickly locate any bookmark in your collection.\nOne of the most unique features of Buku is its powerful console interface:\nThis allows power users to manage their bookmarks from the command line, making it incredibly fast and efficient to use. But don\u0026rsquo;t worry if you\u0026rsquo;re not a command line aficionado, Buku also has a user-friendly web-based interface that\u0026rsquo;s perfect for beginners and not only has beautiful stats page but a powerful API that you can use to make your own applications!\nbukuserver run\nAnother great aspect of Buku is its cross-platform support. Whether you\u0026rsquo;re using Windows, Mac, or Linux, Buku will work seamlessly with your favorite browser.\nBuku is open source, written in Python and available from GitHub.\n","date":"18 March 2023","externalUrl":null,"permalink":"/posts/buku/","section":"Posts","summary":"Are you tired of losing track of your bookmarks across multiple browsers? Look no further than Buku, the powerful bookmark manager that imports bookmarks from all your browsers, works on console and has a web-based server.\n","title":"Buku: a powerful bookmark manager","type":"posts"},{"content":"git push --no-verify is a command used to push your local changes to a remote repository without running pre-commit hooks or pre-push hooks. Pre-commit hooks and pre-push hooks are scripts that run before a commit or a push, and they are used to perform automated tests, code quality checks, or other actions that help ensure the quality and correctness of your code. You can use husky or pre-commit if you need extra features or just production ready tools.\nSometimes, you may need to bypass these hooks and push your changes without running them. For example, if you\u0026rsquo;re in a hurry and you need to push a critical bug fix, or if you\u0026rsquo;re working in a team with strict code review policies and you need to push a work-in-progress commit for collaboration purposes.\nTo use it simply add the --no-verify flag to your git push command:\ngit push --no-verify This will push your changes to the remote repository without running the pre-commit or pre-push hooks.\nHowever, it\u0026rsquo;s important to note that using \u0026ndash;no-verify should be done with caution, as it can potentially lead to lower code quality and a higher risk of introducing bugs or other issues into your codebase. Therefore, it\u0026rsquo;s recommended to only use \u0026ndash;no-verify when it\u0026rsquo;s absolutely necessary and always double-check your code before pushing it to a remote repository.\nYou can check the official Git Documentation.\nIf you want a refresher on general Git practices you can check my presentation.\n","date":"8 March 2023","externalUrl":null,"permalink":"/posts/git-bypass/","section":"Posts","summary":"git push --no-verify is a command used to push your local changes to a remote repository without running pre-commit hooks or pre-push hooks. Pre-commit hooks and pre-push hooks are scripts that run before a commit or a push, and they are used to perform automated tests, code quality checks, or other actions that help ensure the quality and correctness of your code. You can use husky or pre-commit if you need extra features or just production ready tools.\n","title":"How to bypass Git Hooks","type":"posts"},{"content":" Breaking news! Barrier is abondoned and no longer maintained. The last release was in 2022. I\u0026rsquo;m back to Synergy 3, which works as expected now, tested on a multiarch configuration with macos/windows/RPi. Barrier is an open-source KVM (Keyboard, Video, Mouse) software that allows users to share their keyboard and mouse across multiple computers. This allows users to move their cursor and type on one computer while the keyboard and mouse inputs are sent to another computer.\nBarrier also supports the use of multiple monitors, allowing users to move their cursor seamlessly between different screens.The software is designed to be simple, easy to use, and highly configurable. Barrier is available for many operating systems and can be downloaded from GitHub.\nA little bit of history:\nBarrier was created as a fork of Synergy due to certain limitations and issues that the developer of Barrier, Debauchee, experienced while using Synergy. Due to these limitations and issues, Debauchee decided to create a fork of Synergy, called Barrier, with the goal of addressing these issues and providing a more stable, customizable, and actively developed alternative to Synergy. Some of the features that Barrier added that Synergy didn\u0026rsquo;t have at the time like multi-monitor support, encryption, and improved cursor handling. Since then, Barrier has continued to be developed and maintained, with new features and improvements being added on a regular basis. It is also actively supported by its developer community, which aims to provide a stable, customizable and actively developed KVM solution for those who need it.\nI was an early user and even an Early Adopter of Synergy but was disappointed by the changes and bugs in version 3, then I switched to Barrier and never looked back.\nThe official Raspberry Pi website praised Barrier with a nice article and a video guide.\nThe configuration is easy and straightforward. You can find the instructions on how to install and configure Barrier on the GitHub page or watch the video.\nTip: You can use Scroll Lock to lock on a computer and don\u0026rsquo;t switch by accident to another, e.g. when playing a game.\n","date":"20 January 2023","externalUrl":null,"permalink":"/posts/barrier/","section":"Posts","summary":" Breaking news! Barrier is abondoned and no longer maintained. The last release was in 2022. I’m back to Synergy 3, which works as expected now, tested on a multiarch configuration with macos/windows/RPi. Barrier is an open-source KVM (Keyboard, Video, Mouse) software that allows users to share their keyboard and mouse across multiple computers. This allows users to move their cursor and type on one computer while the keyboard and mouse inputs are sent to another computer.\n","title":"Breaking the Barrier","type":"posts"},{"content":"","date":"20 January 2023","externalUrl":null,"permalink":"/tags/kvm/","section":"Tags","summary":"","title":"KVM","type":"tags"},{"content":"Joplin is an open-source note taking app that allows users to easily organize and store notes, to-do lists, and other information. It can be used on a variety of devices, including desktops, laptops, and mobile devices.\nOne of the main features of Joplin is its ability to synchronize notes across multiple devices. Joplin also supports the use of multiple storage options, including the local file system, Dropbox, OneDrive, and WebDAV and more. In my case I use the local file system and synchronize the notes with my Synology NAS via \u0026ldquo;Cloud Station Drive\u0026rdquo;.\nThe notes are in Markdown format. Joplin is available as a 💻 desktop, 📱 mobile and 🔡 terminal application.\nJoplin also has a built-in to-do list feature that allows users to easily create and track tasks. This feature is integrated with the note-taking functionality, making it easy to keep track of tasks related to specific notes.\nAnother great feature of Joplin is its support for encryption, which allows users to secure their notes and keep them private.\nFull text search is available on all platforms to quickly find the information you need.\nCheck the big list of features here.\n","date":"20 December 2022","externalUrl":null,"permalink":"/posts/joplin/","section":"Posts","summary":"Joplin is an open source note-taking app that allows users to easily organize and store notes, to-do lists, and other information.","title":"Free your notes with Joplin","type":"posts"},{"content":"","date":"20 December 2022","externalUrl":null,"permalink":"/tags/markdown/","section":"Tags","summary":"","title":"Markdown","type":"tags"},{"content":"","date":"20 December 2022","externalUrl":null,"permalink":"/tags/notes/","section":"Tags","summary":"","title":"Notes","type":"tags"},{"content":"","date":"20 December 2022","externalUrl":null,"permalink":"/tags/todo/","section":"Tags","summary":"","title":"Todo","type":"tags"},{"content":" Ever tried to measure the network speed between two computers? Do you want to know how fast your local network is? Would you like to compare your WiFi and ethernet speeds? Do you want to check for faulty cables? You can do all of the above, and more, with iperf3.\nAs the devolpers state at the official website :\nThe iperf series of tools perform active measurements to determine the maximum achievable bandwidth on IP networks. It supports tuning of various parameters related to timing, protocols, and buffers. For each test it reports the measured throughput, loss, and other parameters.\niperf3 is a powerful tool that can be used to benchmark the performance of local network computers. It allows you to measure the bandwidth and latency of a network connection between two devices. This can be useful for identifying bottlenecks and troubleshooting network issues.\nTo use iperf3, you will need to have it installed on both the client and server computers. Once installed, you can run the following commands to start the benchmarking process.\nOn the server computer, open a command prompt and type iperf3 -s. This will start the iperf3 server and listen for incoming connections.\nOn the client computer, open a command prompt and type iperf3 -c [server IP]. Replace [server IP] with the IP address of the server computer. This will connect the client to the server and begin the benchmarking process.\nBy default, iperf3 will perform a test for 10 seconds and provide the results in a summary. However, you can specify a longer test duration or change other settings using command line options. For example, you can use the -t option to specify the test duration in seconds, and the -w option to specify the TCP window size.\nOnce the test is complete, you will see the results displayed on the client computer. These results will include the bandwidth and latency of the connection, as well as any errors that occurred during the test.\nIn addition to the basic test, iperf3 also supports various advanced options such as parallel streams, bidirectional tests, and more. It is a great tool for network administrators and developers to check the performance of their network.\nIn conclusion, iperf3 is a powerful and easy-to-use tool for benchmarking the performance of local network computers. It allows you to measure the bandwidth and latency of a network connection, and provides detailed results that can be used to identify and troubleshoot network issues.\nFirst, install iperf3 for your operating system, do that in every computer you want to benchmark.\nArchlinux sudo pacman -S iperf3 macOS brew install iperf3 Ubuntu/Debian apt get install iperf3 Windows scoop install iperf3 Synology NAS Install SynoCli Monitor Tools from the SynoCommunity website Real-life tests # We will use the Synology NAS as the server and run tests across some local machines acting as clients. Synology NAS has two network interfaces:\nLAN Gigabit Ethernet (builtin, attached to gigabit switch) Wi-fi with a TP-LINK TL-WN722N dongle MacbookAir M2 # OS : macOS Sonoma 14.2.1\nNetwork : 1000 baseT full duplex, 1500 MTU\nTesting the WiFi connection with the MacbookAir M2 (Wi-Fi 6 - 802.11ax)\nConnecting to host 192.168.3.2, port 5201 [ 6] local 192.168.3.6 port 61884 connected to 192.168.3.2 port 5201 [ ID] Interval Transfer Bitrate [ 6] 0.00-1.01 sec 1.00 MBytes 8.35 Mbits/sec [ 6] 1.01-2.00 sec 768 KBytes 6.31 Mbits/sec [ 6] 2.00-3.00 sec 1.25 MBytes 10.5 Mbits/sec [ 6] 3.00-4.00 sec 1.12 MBytes 9.43 Mbits/sec [ 6] 4.00-5.01 sec 1.25 MBytes 10.5 Mbits/sec [ 6] 5.01-6.00 sec 1.00 MBytes 8.41 Mbits/sec [ 6] 6.00-7.00 sec 1.25 MBytes 10.5 Mbits/sec [ 6] 7.00-8.01 sec 1.12 MBytes 9.42 Mbits/sec [ 6] 8.01-9.00 sec 1.00 MBytes 8.43 Mbits/sec [ 6] 9.00-10.00 sec 896 KBytes 7.33 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 6] 0.00-10.00 sec 10.6 MBytes 8.91 Mbits/sec sender [ 6] 0.00-10.29 sec 10.7 MBytes 8.69 Mbits/sec receiver iperf Done. Testing the ethernet connection with a TP-LINK UE300 USB3.0 to Gigabit Ethernet adapter\nConnecting to host 192.168.3.2, port 5201 [ 6] local 192.168.3.8 port 61992 connected to 192.168.3.2 port 5201 [ ID] Interval Transfer Bitrate [ 6] 0.00-1.00 sec 37.0 MBytes 310 Mbits/sec [ 6] 1.00-2.00 sec 36.9 MBytes 308 Mbits/sec [ 6] 2.00-3.00 sec 36.5 MBytes 307 Mbits/sec [ 6] 3.00-4.01 sec 36.8 MBytes 308 Mbits/sec [ 6] 4.01-5.00 sec 36.8 MBytes 308 Mbits/sec [ 6] 5.00-6.00 sec 36.6 MBytes 308 Mbits/sec [ 6] 6.00-7.00 sec 36.8 MBytes 308 Mbits/sec [ 6] 7.00-8.00 sec 36.8 MBytes 309 Mbits/sec [ 6] 8.00-9.00 sec 36.9 MBytes 308 Mbits/sec [ 6] 9.00-10.00 sec 36.6 MBytes 309 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 6] 0.00-10.00 sec 368 MBytes 308 Mbits/sec sender [ 6] 0.00-10.01 sec 367 MBytes 308 Mbits/sec receiver iperf Done. Testing the ethernet connection with UGREEN USB-C 9-in-1 Multifunctional Adapter\nConnecting to host 192.168.3.2, port 5201 [ 6] local 192.168.3.12 port 64525 connected to 192.168.3.2 port 5201 [ ID] Interval Transfer Bitrate [ 6] 0.00-1.00 sec 68.5 MBytes 572 Mbits/sec [ 6] 1.00-2.01 sec 77.0 MBytes 646 Mbits/sec [ 6] 2.01-3.00 sec 77.4 MBytes 650 Mbits/sec [ 6] 3.00-4.01 sec 77.6 MBytes 651 Mbits/sec [ 6] 4.01-5.01 sec 77.6 MBytes 651 Mbits/sec [ 6] 5.01-6.00 sec 77.6 MBytes 651 Mbits/sec [ 6] 6.00-7.01 sec 79.8 MBytes 669 Mbits/sec [ 6] 7.01-8.01 sec 77.8 MBytes 652 Mbits/sec [ 6] 8.01-9.00 sec 75.1 MBytes 631 Mbits/sec [ 6] 9.00-10.00 sec 77.1 MBytes 649 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 6] 0.00-10.00 sec 766 MBytes 642 Mbits/sec sender [ 6] 0.00-10.00 sec 765 MBytes 642 Mbits/sec receiver iperf Done. Desktop PC # B660 GAMING X, i9-12900K with Windows 11 Pro, testing the internal Realtek Gaming 2.5GbE LAN\nConnecting to host 192.168.3.2, port 5201 [ 4] local 192.168.3.13 port 54137 connected to 192.168.3.2 port 5201 [ ID] Interval Transfer Bandwidth [ 4] 0.00-1.00 sec 113 MBytes 945 Mbits/sec [ 4] 1.00-2.00 sec 111 MBytes 933 Mbits/sec [ 4] 2.00-3.00 sec 111 MBytes 928 Mbits/sec [ 4] 3.00-4.00 sec 110 MBytes 924 Mbits/sec [ 4] 4.00-5.00 sec 111 MBytes 929 Mbits/sec [ 4] 5.00-6.00 sec 112 MBytes 936 Mbits/sec [ 4] 6.00-7.00 sec 112 MBytes 944 Mbits/sec [ 4] 7.00-8.00 sec 112 MBytes 941 Mbits/sec [ 4] 8.00-9.00 sec 112 MBytes 937 Mbits/sec [ 4] 9.00-10.00 sec 110 MBytes 928 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth [ 4] 0.00-10.00 sec 1.09 GBytes 934 Mbits/sec sender [ 4] 0.00-10.00 sec 1.09 GBytes 934 Mbits/sec receiver iperf Done. This article is a work in progress. More tests and graphs will follow soon™️ 😊\nFor more info check the host tuning guides at the Energy Sciences Network website.\n","date":"14 August 2022","externalUrl":null,"permalink":"/posts/benchmark-network/","section":"Posts","summary":" Ever tried to measure the network speed between two computers? Do you want to know how fast your local network is? Would you like to compare your WiFi and ethernet speeds? Do you want to check for faulty cables? You can do all of the above, and more, with iperf3.\n","title":"The correct way to benchmark your network","type":"posts"},{"content":"Git is a powerful version control system that allows developers to track and store changes to their code. It also helps teams collaborate on projects efficiently. With Git, developers can keep track of changes made to their code, revert back to previous versions if needed, and even create branches for different versions of the same project. In this talk, we\u0026rsquo;ll take a look at how Git works and how it can be used to manage and track changes to your code.\nClick on the Slides button above to view the presentation. You can also check the Git Cheatsheet post.\n","date":"1 July 2022","externalUrl":null,"permalink":"/talks/git/","section":"Presentations","summary":"An introduction to Git","title":"Git ...not just version control","type":"talks"},{"content":"","date":"1 July 2022","externalUrl":null,"permalink":"/tags/version-control/","section":"Tags","summary":"","title":"Version Control","type":"tags"},{"content":" Git \u0026hellip;not just version control. v2.1 by George Litos 12/2022\na bit of history Git was originally authored by Linus Torvalds in 2005 for development of the Linux kernel, with other kernel developers contributing to its initial development. Since 2005, Junio Hamano has been the core maintainer.\na bit of history cont\u0026rsquo;d\nAs with most other distributed version control systems, and unlike most client–server systems, every Git directory on every computer is a full-fledged repository with complete history and full version-tracking abilities, independent of network access or a central server.\nGit is free and open-source software distributed under the GPL-2.0-only license.\nTech Talk Linus Torvalds on git Git is alive\nDecember 12, 2022 Git is alive and actively developed Git Official site\nSO Survey 2021\nStack Overflow Developer Survey 2021 Over 90% of respondents use Git, suggesting that it is a fundamental tool to being a developer.\nSO Survey 2022\nStack Overflow Developer Survey 2022 No other technology is as widely used as Git. Especially among Professional Developers.\nQ: What are the primary version control systems you use?\nGlossary Working directory - repo the working directory is the folder on your system that you want to track. Where you develop your project. Everything git related is inside the .git folder. Serverless. Remote repository Remote repositories are versions of your project that are hosted elsewhere. You can have several of them, each one is either RO or RW for you. Git files Inside the working directory and beneath, you might find some git related files .gitattributes how to handle files .gitignore what to ignore .gitkeep keep an empty dir Tracked files Tracked files are the files in the working directory (repository) that Git manages. .\nThe Staging Area* The intermediary between the working directory and the project history. Commit Commit is the process of adding any changes in tracked files. Git will keep track of all the changes in the Committed History. .\nCommit message* The commit message is a summary and description of a commit action. Branches (develop, feature, master) A branch is a set of the repo tracked files. Git allows you to compare and merge branches. It can also be used to organize collaboration inside the repo, fix specific bugs, or create new features. .\nMerge* Copy code changes from one branch to another. (not really git)\nFork You clone a public repo, make changes and contribute back with a PR. .\nPull/Merge request (PR)* A PR is a request to the repository owner to merge your changes back into the original code base. git init Install git, then\ngit config --global user.name \u0026#34;John Smith\u0026#34; git config --global user.email john@example.com git config --global init.defaultBranch main Create a new folder for your project and add a file under version control\nmkdir -p ~/projects/git-test cd ~/projects/git-test git init nano new_file git add . Commit the changes\n$ git commit -m \u0026#34;Initial commit\u0026#34; [master (root-commit) 19632d1] Add new file 1 file changed, 1 insertion(+) create mode 100644 new-file every commit is unique, it contains:\nsnapshot of the project (a tree with a compressed blob for each file), ser information,ate, ommit message,HA-1 checksum.\n$ git log commit 81752cd6a514fd2595c40f27c783d6887f84e6e6 Author: John Smith \u0026lt;john@example.com\u0026gt; Date: Thu Apr 7 15:17:45 2022 +0000 Initial commit don\u0026rsquo;t fear the git! Git will help 🥷 Cleanup your code base Backup your code Merge Requests\nCode Review\nCI/CD 🤖 (coming soon\u0026hellip;)\nCode linting / beautify Automated Testing Contribute to open source\nBe famous 💰\nworkflow Gitflow Workflow NumPy Development workflow Link to JIRA issue Merge requests to the main branch A successful Git branching model By Vincent Driessen\nGitflow Workflow Atlassian Tutorial\n1. Start a project Divide work in repositories Choose workflow (advanced git flow) Select which files to keep under version control 2. Work on a project Working on a topic/feature/bugfix branch Splitting changes into logically separate steps Write a good commit message (e.g. present tense, short and meaningfull) Preparing changes for submission 3. Integrate Submitting and describing changes Merge request to the main branch Delete working branch TEAM GOAL 🥅 pull the servers\u0026rsquo; plug Rebuild and restart services anytime Do a server reboot 🔥 Change servers and redeploy Rebuild 🏠 install docker git clone repo cat README.md \u0026gt;\u0026gt; follow the instructions Use Docker for dev \u0026amp; production Use GitHub Markdown for writing practice and use everywhere \u0026hellip;.you don\u0026rsquo;t need a server\ngit init git commit -a -m \u0026#39;Commit message\u0026#39; git checkout -b new_branch git status When you don\u0026rsquo;t know what to do, type:\n$ git status On branch main Your branch is up to date with \u0026#39;origin/main\u0026#39;. Changes not staged for commit: (use \u0026#34;git add \u0026lt;file\u0026gt;...\u0026#34; to update what will be committed) (use \u0026#34;git restore \u0026lt;file\u0026gt;...\u0026#34; to discard changes in working directory) modified: docker-compose.yml Untracked files: (use \u0026#34;git add \u0026lt;file\u0026gt;...\u0026#34; to include in what will be committed) .idea/ db_sink/ file_records/ record_transformer/ no changes added to commit (use \u0026#34;git add\u0026#34; and/or \u0026#34;git commit -a\u0026#34;) Git tips Learn the command line basics \u0026hellip;and then use a GUI you don\u0026rsquo;t have to use only 1 (git) client git reset \u0026ndash;hard Use aliases (cmdline) Use the log/graph 😛 Don\u0026rsquo;t panic, recovery is (almost) always possible Resolve merge conflicts with GUI (e.g. Jetbrains PhpStorm)\nom-my-zsh aliases g=git ga=\u0026#39;git add\u0026#39; gl=\u0026#39;git pull\u0026#39; gp=\u0026#39;git push\u0026#39; gcam=\u0026#39;git commit -a -m\u0026#39; gcd=\u0026#39;git checkout $(git_develop_branch)\u0026#39; gdcw=\u0026#39;git diff --cached --word-diff\u0026#39; gfa=\u0026#39;git fetch --all --prune --jobs=10\u0026#39; ggpush=\u0026#39;git push origin \u0026#34;$(git_current_branch)\u0026#34;\u0026#39; gloga=\u0026#39;git log --oneline --decorate --graph --all\u0026#39; grup=\u0026#39;git remote update\u0026#39; gsps=\u0026#39;git show --pretty=short --show-signature\u0026#39; gst=\u0026#39;git status\u0026#39; gstl=\u0026#39;git stash list\u0026#39; gswd=\u0026#39;git switch $(git_develop_branch)\u0026#39; Github tips Check GitHub tools (desktop and cmdline clients) Search GitHub with powerfull filters (stars/topic/users/language) Check Github Explore Check project Issues Advanced git Cherry-pick git cherry-pick lets you select a commit from a branch to apply it to another branch. Using tags Git has the option to tag a commit in the repository so that you find it easier or mark an app version on a commit. git tag 1.0.0 -m \u0026#39;Release 1.0.0\u0026#39; Stashing your changes git stash allows you to save the current state of the local repository and restore it later. Creating a patch git format-patch command is useful to transfer a commit to another repository Best practices Commit (local) often Push daily (at least EOD) 🕠 Write better commit messages \u0026hellip;and worst Don\u0026rsquo;t commit half-done work Don\u0026rsquo;t change the published history Never rebase a branch that has been pushed to a public repository Semantic Commit Messages See how a minor change to your commit message style can make you a better programmer.\nFormat: \u0026lt;type\u0026gt;(\u0026lt;scope\u0026gt;): \u0026lt;subject\u0026gt;\n\u0026lt;scope\u0026gt; is optional\nExample feat: add hat wobble ^--^ ^------------^ | | | +-\u0026gt; Summary in present tense. | +-------\u0026gt; Type: chore, docs, feat, fix, refactor, style, or test. More Examples feat: (new feature for the user, not a new feature for build script) fix: (bug fix for the user, not a fix to a build script) docs: (changes to the documentation) style: (formatting, missing semi colons, etc; no production code change) refactor: (refactoring production code, eg. renaming a variable) test: (adding missing tests, refactoring tests; no production code change) chore: (updating grunt tasks etc; no production code change) References:\nhttps://www.conventionalcommits.org/ https://seesparkbox.com/foundry/semantic_commit_messages http://karma-runner.github.io/1.0/dev/git-commit-msg.html Books Pro Git by Scott Chacon and Ben Straub Git Succinctly by Ryan Hodson Cheat Sheets GitHub Education Git Tower Git cheat sheet cheat.sh/git Tutorials git - the simple guide GitHub Quickstart A Visual Git Reference man git git help \u0026lt;command\u0026gt; Advanced topics Resolving a merge conflict using the command line How to Write a Git Commit Message Merging vs. Rebasing Distributed Git - Maintaining a Project Howto split a git repository into two Curious git Git Hooks Git Large File Storage (LFS) ","date":"25 June 2022","externalUrl":null,"permalink":"/slides/git/","section":"Slides","summary":"Git …not just version control.","title":"Slides","type":"slides"},{"content":"","date":"4 June 2019","externalUrl":null,"permalink":"/tags/rd/","section":"Tags","summary":"","title":"R\u0026D","type":"tags"},{"content":" AGRIBIT - Artificial intelliGence applied to pRecision farmIng By the use of GNSS and Integrated Technologies (H2020:101004259) LITTLE GREEN FARMERS (Τ2ΕΔΚ-01983) ENVISION - Monitoring of Environmental Practices for Sustainable Agriculture Supported by Earth Observation (H2020:869366) ATLAS - Agricultural Interoperability and Analysis System (H2020:857125) SIEUSOIL - Sino-EU Soil Observatory for intelligent Land Use Management (H2020:818346) ARESIBO - Augmented Reality Enriched Situation awareness for Border security (S/C:AdMeS, H2020:833805) MaTHiSiS - Managing Affective-learning THrough Intelligent atoms and Smart InteractionS (2016: H2020 IA) ASGARD (2016:H2020 RIA) Analysis System for Gathered Raw Data. LASIE (2014:IP) Large Scale Information Exploitation of Forensic Data. ADVISE (285024) Advanced Video Surveillance archives search Engine for security applications. I-SEARCH (FP7): A Unified Framework for Multimodal Content Search. BOEMIE (27538): Bootstrapping Ontology Evolution with Multimedia Information Extraction. ELU (027866): Enhanced Learning Unlimited. 3DTV IST Project (Network of Excellence): Integrated Three-Dimensional Television - Capture, Transmission, and Display. ASPIS (IST-1999-12554): An Authentication and Protection Innovative Software System for DVD-ROM and Internet. HISCORE IST Project: High Speed 3D and Colour Interface to the Real World. BIOSEC IST Project (2124): Biometrics and Security. INTERVUSE IST Project (2109): Integrated Radar, Flight Plan and Digital Video Data Fusion for SMGCS. OTELO IST Project (2112): Mobile Tele-Echography using an Ultra-Light Robot. P2PEOPLE IST Project: P2P \u0026ldquo;Common interests\u0026rdquo; Search Engine and Collaboration Platform. X-Media (026978) Knowledge Sharing and Reuse Across Media. PESCADO Personalized Environmental Service Configuration and Delivery Orchestration. ASSETS (250527) Advanced Search Services and Enhanced Technological Solutions for the European Digital Library. REVERIE (287723) REal and Virtual Engagement in Realistic Immersive Environments. E-MUNIS / IST-2001-33037 Electronic Municipal Information Services - Best Practice Transfer and Improvement Project. ΧΕΙΛΙΟΤΗΛΕΦΩΝΟ (ΓΓΕΤ-ΕΠΕΤ ΙΙ): Σύστημα Εικονοτηλεφώνου για Κωφούς. Ανάπτυξη Πρωτοποριακού Υπολογιστικού Εργαλείου Υποστήριξης και Αυτοματοποίησης της Μεταφραστικής Διαδικασίας (ΓΓΕΤ-ΠΑΒΕΤ). ","date":"4 June 2019","externalUrl":null,"permalink":"/projects/research_projects/","section":"Projects","summary":"A list of the research projects I’ve worked on in the past.","title":"Research Projects","type":"projects"},{"content":" Welcome to Slides Academic\nFeatures Efficiently write slides in Markdown 3-in-1: Create, Present, and Publish your slides Supports speaker notes Mobile friendly slides Controls Next: Right Arrow or Space Previous: Left Arrow Start: Home Finish: End Overview: Esc Speaker notes: S Fullscreen: F Zoom: Alt + Click PDF Export: E Code Highlighting Inline code: variable\nCode block:\nporridge = \u0026#34;blueberry\u0026#34; if porridge == \u0026#34;blueberry\u0026#34;: print(\u0026#34;Eating...\u0026#34;) Math In-line math: $x + y = z$\nBlock math:\n$$ f\\left( x \\right) = ;\\frac{{2\\left( {x + 4} \\right)\\left( {x - 4} \\right)}}{{\\left( {x + 4} \\right)\\left( {x + 1} \\right)}} $$\nThemes black: Black background, white text, blue links (default) white: White background, black text, blue links league: Gray background, white text, blue links beige: Beige background, dark text, brown links sky: Blue background, thin dark text, blue links night: Black background, thick white text, orange links serif: Cappuccino background, gray text, brown links simple: White background, black text, blue links solarized: Cream-colored background, dark green text, blue links Custom CSS Example Let\u0026rsquo;s make headers navy colored.\nCreate assets/css/reveal_custom.css with:\n.reveal section h1, .reveal section h2, .reveal section h3 { color: navy; } Questions? Ask\nDocumentation\n","date":"5 February 2019","externalUrl":null,"permalink":"/slides/example/","section":"Slides","summary":"An introduction to using Academic’s Slides feature.","title":"Slides","type":"slides"},{"content":"","date":"1 July 2017","externalUrl":null,"permalink":"/tags/cctv/","section":"Tags","summary":"","title":"CCTV","type":"tags"},{"content":"","date":"1 July 2017","externalUrl":null,"permalink":"/tags/face-matching/","section":"Tags","summary":"","title":"Face Matching","type":"tags"},{"content":"","date":"1 July 2017","externalUrl":null,"permalink":"/tags/face-recognition/","section":"Tags","summary":"","title":"Face Recognition","type":"tags"},{"content":"","date":"1 July 2017","externalUrl":null,"permalink":"/tags/paper-conference/","section":"Tags","summary":"","title":"Paper-Conference","type":"tags"},{"content":"","date":"1 July 2017","externalUrl":null,"permalink":"/publications/","section":"Publications","summary":"","title":"Publications","type":"publications"},{"content":"","date":"1 July 2017","externalUrl":null,"permalink":"/tags/super-recognisers/","section":"Tags","summary":"","title":"Super-Recognisers","type":"tags"},{"content":"Date of Conference: 13-15 Dec. 2017\nConference Location: Madrid, Spain\n","date":"1 July 2017","externalUrl":null,"permalink":"/publications/toomanyeyes/","section":"Publications","summary":"Date of Conference: 13-15 Dec. 2017\nConference Location: Madrid, Spain\n","title":"TooManyEyes: Super-recogniser directed identification of target individuals on CCTV","type":"publications"},{"content":"","date":"27 April 2016","externalUrl":null,"permalink":"/tags/ocr/","section":"Tags","summary":"","title":"OCR","type":"tags"},{"content":"","date":"27 April 2016","externalUrl":null,"permalink":"/tags/opencv/","section":"Tags","summary":"","title":"OpenCV","type":"tags"},{"content":"","date":"27 April 2016","externalUrl":"https://github.com/glls/typhon","permalink":"/projects/typhon/","section":"Projects","summary":"Interactive video to text converter","title":"Typhon","type":"projects"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/tags/3d-object-retrieval/","section":"Tags","summary":"","title":"3D Object Retrieval","type":"tags"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/tags/article-journal/","section":"Tags","summary":"","title":"Article-Journal","type":"tags"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/categories/computer-vision/","section":"Categories","summary":"","title":"Computer Vision","type":"categories"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/tags/descriptor-extraction/","section":"Tags","summary":"","title":"Descriptor Extraction","type":"tags"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/tags/feature-selection/","section":"Tags","summary":"","title":"Feature Selection","type":"tags"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/publications/3d-object-retrieval/","section":"Publications","summary":"","title":"Investigating the Effects of Multiple Factors towards more Accurate 3D Object Retrieval","type":"publications"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/tags/manifold-learning/","section":"Tags","summary":"","title":"Manifold Learning","type":"tags"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/tags/rotation-estimation/","section":"Tags","summary":"","title":"Rotation Estimation","type":"tags"},{"content":"","date":"1 April 2012","externalUrl":null,"permalink":"/publications/shrec/","section":"Publications","summary":"","title":"SHREC'11 Track: Generic Shape Retrieval","type":"publications"},{"content":"","date":"1 May 2011","externalUrl":null,"permalink":"/publications/semantic-survey/","section":"Publications","summary":"","title":"A Survey of Semantic Image and Video Annotation Tools","type":"publications"},{"content":"","date":"1 May 2011","externalUrl":null,"permalink":"/tags/annotation-tool/","section":"Tags","summary":"","title":"Annotation Tool","type":"tags"},{"content":"","date":"1 May 2011","externalUrl":null,"permalink":"/tags/book-chapter/","section":"Tags","summary":"","title":"Book-Chapter","type":"tags"},{"content":"","date":"1 May 2011","externalUrl":null,"permalink":"/tags/descriptive-metadata/","section":"Tags","summary":"","title":"Descriptive Metadata","type":"tags"},{"content":"","date":"1 May 2011","externalUrl":null,"permalink":"/tags/image-annotation/","section":"Tags","summary":"","title":"Image Annotation","type":"tags"},{"content":"","date":"1 May 2011","externalUrl":null,"permalink":"/tags/semantic-annotation/","section":"Tags","summary":"","title":"Semantic Annotation","type":"tags"},{"content":"","date":"1 May 2011","externalUrl":null,"permalink":"/tags/video-annotation/","section":"Tags","summary":"","title":"Video Annotation","type":"tags"},{"content":"","date":"16 April 2011","externalUrl":null,"permalink":"/publications/3d-model-retrieval/","section":"Publications","summary":"","title":"3D Model Retrieval using Accurate Pose Estimation and View-based Similarity","type":"publications"},{"content":"","date":"16 April 2011","externalUrl":null,"permalink":"/categories/3d-stereo-scene-analysis/","section":"Categories","summary":"","title":"3D Stereo Scene Analysis","type":"categories"},{"content":"","date":"16 April 2011","externalUrl":null,"permalink":"/tags/alignment/","section":"Tags","summary":"","title":"Alignment","type":"tags"},{"content":"","date":"16 April 2011","externalUrl":null,"permalink":"/tags/pose-estimation/","section":"Tags","summary":"","title":"Pose Estimation","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/application-software/","section":"Tags","summary":"","title":"Application Software","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/cameras/","section":"Tags","summary":"","title":"Cameras","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/computer-aided-manufacturing/","section":"Tags","summary":"","title":"Computer Aided Manufacturing","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/computer-errors/","section":"Tags","summary":"","title":"Computer Errors","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/computer-vision/","section":"Tags","summary":"","title":"Computer Vision","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/hardware/","section":"Tags","summary":"","title":"Hardware","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/light-emitting-diodes/","section":"Tags","summary":"","title":"Light Emitting Diodes","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/production/","section":"Tags","summary":"","title":"Production","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/real-time-systems/","section":"Tags","summary":"","title":"Real Time Systems","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/tags/synchronization/","section":"Tags","summary":"","title":"Synchronization","type":"tags"},{"content":"","date":"1 June 2006","externalUrl":null,"permalink":"/publications/network-synchronization/","section":"Publications","summary":"","title":"Synchronous Image Acquisition based on Network Synchronization","type":"publications"},{"content":"","date":"1 January 2006","externalUrl":null,"permalink":"/tags/enhancement-layer/","section":"Tags","summary":"","title":"Enhancement Layer","type":"tags"},{"content":"","date":"1 January 2006","externalUrl":null,"permalink":"/tags/force-feedback/","section":"Tags","summary":"","title":"Force Feedback","type":"tags"},{"content":"","date":"1 January 2006","externalUrl":null,"permalink":"/tags/haptic-device/","section":"Tags","summary":"","title":"Haptic Device","type":"tags"},{"content":"","date":"1 January 2006","externalUrl":null,"permalink":"/tags/motion-vector/","section":"Tags","summary":"","title":"Motion Vector","type":"tags"},{"content":"","date":"1 January 2006","externalUrl":null,"permalink":"/publications/mobile-tele-echography/","section":"Publications","summary":"","title":"User Interface Environment and Image Communication in Mobile Tele-Echography","type":"publications"},{"content":"","date":"1 January 2006","externalUrl":null,"permalink":"/tags/virtual-reality-environment/","section":"Tags","summary":"","title":"Virtual Reality Environment","type":"tags"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/tags/biomedical-imaging/","section":"Tags","summary":"","title":"Biomedical Imaging","type":"tags"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/tags/feedback/","section":"Tags","summary":"","title":"Feedback","type":"tags"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/tags/haptic-interfaces/","section":"Tags","summary":"","title":"Haptic Interfaces","type":"tags"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/tags/medical-robotics/","section":"Tags","summary":"","title":"Medical Robotics","type":"tags"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/tags/mobile-robots/","section":"Tags","summary":"","title":"Mobile Robots","type":"tags"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/publications/tele-echography/","section":"Publications","summary":"","title":"Mobile Tele-echography: User Interface Design","type":"publications"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/tags/probes/","section":"Tags","summary":"","title":"Probes","type":"tags"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/tags/ultrasonic-imaging/","section":"Tags","summary":"","title":"Ultrasonic Imaging","type":"tags"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/tags/user-interfaces/","section":"Tags","summary":"","title":"User Interfaces","type":"tags"},{"content":"","date":"7 March 2005","externalUrl":null,"permalink":"/tags/videoconference/","section":"Tags","summary":"","title":"Videoconference","type":"tags"}]