#file manipulation in linux
Explore tagged Tumblr posts
Text
File manipulation is a fundamental aspect of computer systems and is pivotal in interacting with our digital world. It involves performing various operations on files and directories, allowing users to create, modify, organize, and delete digital assets within a file system. These files can be documents, scripts, programs, configuration files, or even directories.
#file manipulation#security#linux#file manipulation in linux#file manipulation system#infosectrain#learntorise
0 notes
Text
Congratulations, you know more programming than 90% of the people I talk to. That's usually enough to make most people completely check out
On one hand it would be so cool to be good at computers like almost all of you, on the other there is this autism part of me that does not want to learn about it, feels good about being incompetent at it, and does not want to find anything that others like cool or give others the satisfaction of being right.
And it does not even matter cause I can't afford one anyway lol.
#common file manipulation commands in Linux include:#ls - list the files within a directory#mv - move a file from one location to another#cp - create a copy of a file in one location at a different location#rm - remove a file#chmod - change a file's permissions#chown - change a file's owner
16 notes
·
View notes
Text
Tools of the Trade for Learning Cybersecurity
I created this post for the Studyblr Masterpost Jam, check out the tag for more cool masterposts from folks in the studyblr community!
Cybersecurity professionals use a lot of different tools to get the job done. There are plenty of fancy and expensive tools that enterprise security teams use, but luckily there are also lots of brilliant people writing free and open-source software. In this post, I'm going to list some popular free tools that you can download right now to practice and learn with.
In my opinion, one of the most important tools you can learn how to use is a virtual machine. If you're not already familiar with Linux, this is a great way to learn. VMs are helpful for separating all your security tools from your everyday OS, isolating potentially malicious files, and just generally experimenting. You'll need to use something like VirtualBox or VMWare Workstation (Workstation Pro is now free for personal use, but they make you jump through hoops to download it).
Below is a list of some popular cybersecurity-focused Linux distributions that come with lots of tools pre-installed:
Kali is a popular distro that comes loaded with tools for penetration testing
REMnux is a distro built for malware analysis
honorable mention for FLARE-VM, which is not a VM on its own, but a set of scripts for setting up a malware analysis workstation & installing tools on a Windows VM.
SANS maintains several different distros that are used in their courses. You'll need to create an account to download them, but they're all free:
Slingshot is built for penetration testing
SIFT Workstation is a distro that comes with lots of tools for digital forensics
These distros can be kind of overwhelming if you don't know how to use most of the pre-installed software yet, so just starting with a regular Linux distribution and installing tools as you want to learn them is another good choice for learning.
Free Software
Wireshark: sniff packets and explore network protocols
Ghidra and the free version of IDA Pro are the top picks for reverse engineering
for digital forensics, check out Eric Zimmerman's tools - there are many different ones for exploring & analyzing different forensic artifacts
pwntools is a super useful Python library for solving binary exploitation CTF challenges
CyberChef is a tool that makes it easy to manipulate data - encryption & decryption, encoding & decoding, formatting, conversions… CyberChef gives you a lot to work with (and there's a web version - no installation required!).
Burp Suite is a handy tool for web security testing that has a free community edition
Metasploit is a popular penetration testing framework, check out Metasploitable if you want a target to practice with
SANS also has a list of free tools that's worth checking out.
Programming Languages
Knowing how to write code isn't a hard requirement for learning cybersecurity, but it's incredibly useful. Any programming language will do, especially since learning one will make it easy to pick up others, but these are some common ones that security folks use:
Python is quick to write, easy to learn, and since it's so popular, there are lots of helpful libraries out there.
PowerShell is useful for automating things in the Windows world. It's built on .NET, so you can practically dip into writing C# if you need a bit more power.
Go is a relatively new language, but it's popular and there are some security tools written in it.
Rust is another new-ish language that's designed for memory safety and it has a wonderful community. There's a bit of a steep learning curve, but learning Rust makes you understand how memory bugs work and I think that's neat.
If you want to get into reverse engineering or malware analysis, you'll want to have a good grasp of C and C++.
Other Tools for Cybersecurity
There are lots of things you'll need that aren't specific to cybersecurity, like:
a good system for taking notes, whether that's pen & paper or software-based. I recommend using something that lets you work in plain text or close to it.
general command line familiarity + basic knowledge of CLI text editors (nano is great, but what if you have to work with a system that only has vi?)
familiarity with git and docker will be helpful
There are countless scripts and programs out there, but the most important thing is understanding what your tools do and how they work. There is no magic "hack this system" or "solve this forensics case" button. Tools are great for speeding up the process, but you have to know what the process is. Definitely take some time to learn how to use them, but don't base your entire understanding of security on code that someone else wrote. That's how you end up as a "script kiddie", and your skills and knowledge will be limited.
Feel free to send me an ask if you have questions about any specific tool or something you found that I haven't listed. I have approximate knowledge of many things, and if I don't have an answer I can at least help point you in the right direction.
#studyblrmasterpostjam#studyblr#masterpost#cybersecurity#late post bc I was busy yesterday oops lol#also this post is nearly a thousand words#apparently I am incapable of being succinct lmao
22 notes
·
View notes
Text
PSA: Free Software
Reading this may really save your time, privacy, and money! Reblog or share to spread awareness!
Folks often use software that’s expensive and sometimes even inferior because they don’t know there are alternatives. So to those unfamiliar: basically, free and open-source (FOSS) or "libre" software is free to use and anyone can access the original code to make their own version or work on fixing problems.
That does not mean anyone can randomly add a virus and give it to everyone—any respectable libre project has checks in place to make sure changes to the official version are good! Libre software is typically developed by communities who really care about the quality of the software as a goal in itself.
There are libre alternatives to many well-known programs that do everything an average user needs (find out more under the cut!) for free with no DRM, license keys, or subscriptions.
Using libre software when possible is an easy way to fight against and free yourself from corporate greed while actually being more convenient in many cases! If you need an app to do something, perhaps try searching online for things like:
foss [whatever it is]
libre [whatever it is]
open source [whatever it is]
Feel free to recommend more libre software in the tags, replies, comments, or whatever you freaks like to do!
Some Libre Software I Personally Enjoy…
LibreOffice
LibreOffice is an office suite, much like Microsoft Office. It includes equivalents for apps like Word, Excel, and Powerpoint, which can view and edit files created for those apps.
I can't say I've used it much myself yet. I do not personally like using office software except when I have to for school.
OpenShot
OpenShot Video Editor is, as the name suggests, a video editing program. It has industry-standard features like splicing, layering, transitions, and greenscreen.
I've only made one video with it so far, but I'm already very happy with it. I had already paid for a video editor (Cyberlink PowerDirector Pro), but I needed to reinstall it and I didn't remember how. Out of desperation, I searched up "FOSS video editor" and I'm so glad I did. There's no launcher, there's no promotion of other apps and asset packs—it's just a video editor with a normal installer.
GIMP
GNU Image Manipulation Program is an image editor, much like Photoshop. Originally created for Linux but also available for Windows and MacOS, it provides plenty of functionality for editing images. It is a bit unintuitive to learn at first, though.
I've used it to create and modify images for years, including logos, really bad traceover art, and Minecraft textures. It doesn't have certain advanced tech like AI paint-in, but it has served my purposes well and it might just work for yours!
(Be sure to go to Windows > Dockable Dialogs > Colors. I have no idea why that's not enabled by default.)
Audacity
Audacity is an audio editing program. It can record, load, splice, and layer audio files and apply effects to them.
Audacity is another program I've used for a long time. It is not designed to compose music, but it is great for podcasts, simple edits, and loading legacy MS Paint to hear cool noises.
7-Zip
7-Zip is a file manager and archive tool. It supports many archive types including ZIP, RAR, TAR, and its own format, 7Z. It can view and modify the contents of archives, encrypt and decrypt archives, and all that good stuff.
Personally, I use 7-Zip to look inside JAR files for Minecraft reasons. I must admit that its UI is ugly.
Firefox
Firefox is an internet browser, much like Google Chrome, Microsoft Edge, or Safari. While browsers are free, many of them include tracking or other anti-consumer practices. For example, Google plans to release an update to Chromium (the base that most browsers are built from these days) that makes ad blockers less effective by removing the APIs they currently rely on.
Aside from fighting monopolies, benefits include: support for animated themes (the one in the picture is Purple Night Theme), good ad blockers forever, an (albeit hidden) compact UI option (available on about:config), and a cute fox icon.
uBlock Origin
As far as I know, uBlock Origin is one of the best ad blockers there is.
I was on a sketchy website with my brother, and he was using Opera GX's ad blocker. Much of the time when he clicked on anything, it would take us to a random sponsored page. I suggested that he try uBlock Origin, and with uBlock Origin, that didn't happen anymore.
Linux
Linux is a kernel, but the term is often used to refer to operating systems (much like Windows or MacOS) built on it. There are many different Linux-based operating systems (or "distros") to choose from, but apps made for Linux usually work on most popular distros. You can also use many normally Windows-only apps on Linux through compatibility layers like WINE.
I don't have all four of these, so the images are from Wikipedia. I tried to show a variety of Linux distros made for different kinds of users.
If you want to replace your operating system, I recommend being very careful because you can end up breaking things. Many computer manufacturers don't care about supporting Linux, meaning that things may not work (Nvidia graphic cards notoriously have issues on Linux, for example).
Personally, I tried installing Pop!_OS on a laptop, and the sound output mysteriously doesn't work. I may try switching to Arch Linux, since it is extremely customizable and I might be able to experiment until I find a configuration where the audio works.
Many Linux distros offer "Live USB" functionality, which works as both a demo and an installer. You should thoroughly test your distro on a Live USB session before you actually install it to be absolutely sure that everything works. Even if it seems fine, you should probably look into dual-booting with your existing operating system, just in case you need it for some reason.
Happy computering!
#196#psa#foss#open source#tech#software#apps#computer stuff#I really hope Tumblr doesn't block this for having links or something. Someone mentioned that being a possibility and now I'm worried.#please reblog#2024-01-26
47 notes
·
View notes
Text

On the 19th of March 2025, I downloaded the latest version of the GNU Image Manipulation Program (GIMP). I downloaded it through the Microsoft Store.
https://www.gimp.org/news/2025/03/16/gimp-3-0-released/
GIMP is an open source image editing application for Linux, Unix, Mac and Windows. The latest version is 3.0, which was released for stable use on the 16th of March.
https://en.wikipedia.org/wiki/GIMP
GIMP 3.0 has been in development for 7 years since the previous release version which was 2.10. GIMP 3.0 celebrates a major milestone for the software, here are just a few of the notable changes:
A completed GTK3 port of the application and all of the tool sets
Non destructive editing capability
Better painting and drawing tools
Major HiDPI display scaling improvements
Faster performance boost with muti-threading
Better support for PSD (Photoshop) files
A new revamped light and dark theme set
Native 'Wayland' display server protocol support on Linux systems.
Native Microsoft Store app with auto updates
Lots and lots of bug fixes
See more here:
https://www.omgubuntu.co.uk/2025/03/gimp-3-0
The update also features the option to merge the title bar and menu bar, which provides a minimalistic header bar style to the user interface on Windows and Linux. (see screenshot below)
The theme and icon set can be easily changed in the settings and feature a brand new set of icons that echo the older style of icons used in older versions of GIMP up to 2.8 (2012).
Read the release notes below:
https://www.gimp.org/release-notes/gimp-3.0.html
3.0 also celebrates 30 years since the original version of GIMP was released back in 1995! Its first public release was 1998.
The application features a refreshed logo as part of its release.
I created a quick mock-up of Roger the Ragdoll using the layers panel for each of the graphics.
-
GIMP got its first point release for 3.0.2, after a week of being available. This version got auto updated on the 25th March.
Underneath is a small project I did involving layers in GIMP. The Beano comic characters included are:
Derek the Sheep by Gary Northfield.
The Numskulls Brainy by Barry Glennard.
Dennis the Menace & Gnasher by Nigel Parkinson.
Colin the Vet by Duncan Scott.
Little Plum by Hunt Emerson.
A gradient effect was added behind the characters.
Each image is shown in the tabs above. I exported the image as a portable network graphic (PNG) afterwards.
This release makes GIMP feel more like a great Photoshop open source alternative. For many users there is still a steep learning curve, however the overall experience feels worth it after 7 years!
4 notes
·
View notes
Text
Last Monday of the Week 2024-12-16
Entering the Holiday Vortex any day now
Listening: The soundtrack to Cats: The Musical because I have never stopped being a musicals nerd. Prompted me multiple times to check if they got rid of a fun part from a song in the 2019 movie and they always did! Got rid of Deuteronomy's 99 wives, entirely dropped The Moments of Happiness, and in order to resolve that, here's The Moments of Happiness.
youtube
One of those bizzare meandering songs.
Watching: Watched Get Out because I figure I should get the Peeleverse going.
It's good! It does a great job of making you deny the very obvious fact that the girlfriend is extremely in on it the whole time until you can't anymore and it's like, yes, of course, she is not somehow being manipulated or brainwashed she's just as into this as the rest of them, it's very smooth.
Love how every single person talks like an evil vizier.
Reading: Started The Parable of the Sower. Look there's not much to say that hasn't already been said, Butler is a good author, I only just started but it's interesting to read this like, half imagined half lived reference to what it feels like to be surrounded by abject poverty. It's bad! It's not a fun experience, and I think this is a really good coverage of how it feels to be in this environment and how it affects the way you think about people.
It stands out to me that one of the big themes being set up here is the protective and isolating force of walls, which. If you are ever in South Africa you will notice immediately the shockingly large number of walls. Every single house has walls, and the richer an area is the higher the walls are, in Soweto every little house has a meter and a half high brick wall, my suburbs had two meter walls, Sandton has three meter walls, topped over with electric fences. This is probably not an experience you have had. Going to other places and finding that they just. don't have walls. It's very strange.
Still getting going! Going to be interesting!
Playing: More! Cyberpunk. The city design is crazy, it's so heavily layered in many places. They do funnel you into a few more heavily designed zones so you don't notice the emptier areas as much but the designed areas are SO huge. Layer upon layer of detail and flash and colour. It makes Skyrim and GTA V look like sandpits.
Hit level 20 netrunning the other day and it's extremely fun to hit people with the ten thousand beam attack the second they pop their head up. You really have to lean on your abilities and cyberware if you want to survive which is nice, very much aligned with the game. I am pleased to notice that the DLC includes a copy of the CP2020 rules which I have been rereading. Friday Night Firefight is such a good read.
Making: 3D printed skull! RobotOS stuff! Lots of middleware stuff that doesn't lead to much.
Tools and Equipment: I keep saying I'm gonna talk about Distrobox. Let's talk about Distrobox.
Distrobox is a container management tool that goes basically the opposite way to every other container system, and aims to tightly integrate the containers it runs with your desktop system. Containers run in distrobox inherit your home directory, access to most peripherals and hardware, tie in to your display manager, and as much as possible try to act like they're meant to be part of your base system.
It can use podman, docker, or the bizzare ultra-lightweight userspace-only container manager lillipod to host containers, which means that in that last case you can run it on any system even if you don't have root, I've done this on my work dev server at $oldjob before we got Podman on there.
This means that, for instance, you can directly access your files from the container without having to mess with complex shared mounts or copying files back and forth, and it allows GUI applications launched within a distrobox to just appear on your desktop as though they were native.
This allows you to mix and match packages and features from a variety of different systems very easily, and is particularly handy for developing for multiple distributions or using tools that only really ship for one distro. At work I had to run mksusecd to build some install images and rather than deal with trying to set up mksusecd on Ubuntu, I just dropped into a SUSE Tumbleweed distrobox and got to work. Worked great!
I've also used it to sandbox messy development environments and I'm currently using it to host a robotOS learning playground on my desktop without having to look after an run a whole VM or anything. It means that the install of neovim and zsh and whatever in the Ubuntu container directly inherit my standard config files and even have access to the same plugin ecosystem as on my base system!
You can heavily customise your distroboxes, allocating them separate homedirs if necessary, exporting apps from inside a distrobox to the host system so you can seamlessly run them as though they're installed on the host, and more weird designs. Really handy tool!
Here's some reading if you're interested
Containers are really cool.
5 notes
·
View notes
Text
I got a brand new brand refurbished laptop, I couldn't avoid it coming with a fresh install of windows 10 (I could have paid extra for 11) and I thought hey why not, technically I paid for it, I'll just leave windows on it, it's a big harddrive, you never know when you might need windows, let me just resize the partition.... oh the minimum size is 55gb? fair enough, how much free space does that leave me?
none. No free space. a fresh copy of windows with no files, is, aparently, fifty goddamn five fucking gigabytes. 55 gb. fifty five! My first computer's 2 harddrives didn't even add up to 55 so this is kinda a culture shock.
But Windows has almost nothing built in as standard. This isn't like a fatass Linux Distro where it comes with a full IDE and 2 pieces of image manipulation software and 150 games and a full office suite and a DBMS and 3 different browsers and a web server and every known scripting language, drivers for 8 different types of disk partition and a DAW and a video editor and 3 different WMs and stil only takes up 25gb. This is INSANE. It must just be 5gb of OS and 50gb of spyware.
Bye bye Windows!
2 notes
·
View notes
Text
There's one class I'm taking this semester that is actually making me reanalyze my whole life, it's called Digital Electronics 1, doesn't sound very exciting (and it isn't), yet my experience with it has been nothing short of surreal, like The Twilight Zone surreal, it may not seem so from what I'm about to tell, but I'm currently considering the possibility that the devil's messing with me for funsies.
The first couple of classes were as normal as they could be, from time to time this weird geeky teacher would say some things I didn't understand, however pretty much everyone else in the class seemed unphased by them so I didn't think much of it at first. As weeks went by I couldn't help but notice it happened more and more frequently.
This class also has a lab component, which has never been my strong suit, but in this case I thought it'd be much easier since pretty much all work would be on the computer and not an actual lab. It was hell. First two classes or so were meant to install special software in our computers to control a FPGA board (a board whose hardware you can manipulate via software through your computer), I could not for the life of me follow a four step tutorial on how to do it. The tutorial was as good as a tutorial can be, or so I think, but ok the second step I was already losing my mind: files that were supposed to appear didn't exist, lines of code in my computer were blocked for some reason, packages were asking for money even though I had a license already, etc. This went on for two weeks.
After having to talk for hours with the lab assistant I ended up with an erased hard disk running only Linux on my ONLY computer (as opposed to having a half partition for Linux and half for Windows, what it was supposed to be) but most of the required software was running just fine, I thought this was acceptable, nothing I could complain about since I was already two weeks behind on the required lab reports, the teacher said he was flexible with the established dates so I didn't worry much.
When I actually started reading the lab guides my second personal hell started, I understood in full everything I was supposed to do but had absolutely zero idea on how to do it, I gave it a couple of hours at home to try but got nothing from it, before giving up I thought maybe if I was THAT lost I wasn't the only one struggling with it, so I waited for the next class before trying again. I was, apparently, very wrong.
Next class for some reason everyone was having trouble. To be precise, they were all having a problem I did not even understand, and they all had easily overcome the trouble I was having when they faced it. I was so embarrassed I had to wait for the class to end to ask the teacher for help, which she very happily did: she pointed out what was wrong with the hardware description (fancy talk for "code"), manually corrected some things that were keeping my software from running correctly (which I should have noticed) and gave me some general advice. I was so embarrassed to admit I didn't understand any of what she said that I just thanked her and left.
I started sleeping less, some nights I would try to make a sense of what she told me and I could make nothing of it, nada, nothing at all, I understood all the individual words that made up the advice she gave me but the sum of them made no sense in my mind.
Non-lab classes were good though, I understood all the theoretical components and all the topics covered, although from time to time the teacher would zone out for a while and say some truly insane shit I couldn't even begin to grasp the concept of, but since these didn't seem to affect the over all course of the class and I seemed to be the only confused one, things went by just fine.
As weeks went by I got more and more embarrassed just walking into that lab, every week at home I thought I finally made some progress just to find out my labmates had done thrice my work in half the time. But the worst part is how I just stopped understanding anything at all in that lab room, the teacher would explain something and everyone just kind of nodded in agreement for hours at a time, I felt dumber at the end of every class. I tried asking friends, they seemed as cursed as the teacher, with all the goodness in their hearts they'd start explaining things to me but at that moment my brain would lock completely and no knowledge could come in, I could tell they meant well, they were very nice too, and explained in very simple terms, it is absolutely clear at this point the problem is me.
I spent most of my class time wondering how all these people understood so well a programming language none of us were familiar with. They just went along with it, it was easy for them, and it seemed easy too, none of the reports required more than 20 or so lines of code to work. But once I stared at the screen for one hour trying to understand what the first 10 lines of code meant, I saw YouTube tutorials and Reddit forums looking for help, but it just didn't click.
I finished 4 lab reports in 8 weeks, a true miracle considering I didn't understand most of them. The remainder of the semester is to be spent making a project based on all we learned, and as such, the lab teacher would only be available for advice regarding the project. I tried to be optimistic about this.
First class that was meant to be spent solving problems about said project (a Tamagotchi). I went in with the hopes of asking for help but when I saw some of the other projects and how advanced they were I died a little. Some people asked some questions that seemed so much more advanced than mine I just couldn't bring myself to ask, I'm normally not so shy about asking teachers for help but this was different, my question really seemed like an offense to ask at that point. I felt the strongest need to leave that room I had just walked into five minutes prior.
At this point I feel like I'm truly losing my mind, I can't walk into that class and not feel I'm the dumbest person in the room, sometimes I even feel they're all aware of it too, I don't think it's the way they look at me, because as I said they're all very nice, but I can't help but feel they are all acting like they don't notice the toddler in the room that wants to act like an adult.
I couldn't take the psychological damage I was getting from that class so I started working on the project at home, not nearly as fast as I'm supposed to but I got some things accomplished eventually. When time came to test things I was not so surprised when nothing worked.
I made several attempts to get things running without any success at all, a few weeks went by and I finally asked for help from a classmate. She lent me some code and, fascinatingly enough, her code did exactly the same thing as mine, the only difference being hers does work. So I tried her code on my computer and, surprise, it didn't on mine. I'm absolutely certain all my components work (because I had to replace some) and my computer and the board both work fine because I actually ran stuff from the labs on it, so no reasonable explanation so far.
Once again I feel like the universe just fucking hates me, and the fucker knows where to hit me for maximum effect, I see that fucking code in my dreams, I can't sleep at night thinking about it, there is a leprechaun living on my walls changing my connections and ruining my code everytime I look away as a running joke for an audience I can't see. It's going to be the last thing I see before I die, I know for sure.
This class is nothing different to what I have taken before, the required courses to take the class I passed with high grades even, it can't be such a jump, and it isn't apparently. Most people seem okay with this class, some of my friends have taken it already and said it was a pretty tame experience?!?but I'm on the verge of insanity and nothing a person in that class says can seem to help me in any way. I'm truly on the verge of something fundamental in me changing, I don't want to know what and I especially don't want it to happen.
#I also have this recurring thought of a random date that hasnt happened yet#On my weakest moments I feel im supposed to do something significant that date#I watched Donnie Darko I know what this means#In all seriousness I just cant stop thinking about August 25 2024#5:00 PM#The leprechaun only has a small advantage over me#He is aware of the audience
5 notes
·
View notes
Text
A Week of Troubleshooting [My Own Stupidity]
Day 159 - Apr 12th, 12.024
I have been trying to host Forgejo (a lightweight software forge and repository hosting service, forked from Gitea) in my home lab/server for the past week. Falling over and over again and loosing hair because of stress with errors which I can blame anyone besides me. So why not finally tell this little history, since I finally was able to make everything work? Because I really don't know what to feel.
The Context
For these past months I have been working on automating some tasks in my life and career using a home server and various self-hosted services. I won't go into too much detail since it is a topic for another post, but the main piece of this automating system is the Forgejo/Gitea actions feature, similar to GitHub Actions which you probably already know of (and if you don't know or aren't a programmer, just think of it as something that runs tasks automatically for you based on some predefined actions/triggers that you can configure).
My home lab is configured with NixOS, a Linux distro based on the Nix package manager, that lets me configure the whole computer using a single collection of files. The main reason for using this distro is of course the ability to have a portable configuration, which I can use and apply in any computer, but also, another advantage is being able to write and setup everything on a single file format. It is pretty much like writing a cooking book with a collection of recipes organized in categories and the same format, instead of a bunch of sticky notes with different recipes scatted around on some drawer or something. I have been using Nix for a year now on my desktop, so I'm somewhat familiar with it, and my home lab was already running with it hosting some other services like AdGuard Home and Tailscale.
In general, I hadn't a lot of troubles with this setup.
The First Domino Piece
Setting up Forgejo in NixOS is somewhat simple, since it is pretty much a matter of enabling it with:
And it was what I did some months ago when I first settled it up, so I have been using it for hosting some coding projects and backing them up to Codeberg and/or GitHub, without any specific reason, I just like to have and use it.
But then I went to try using Forgejo Actions, and discover that for using them, I needed to set up another service with it, the Forgejo/Gitea Actions Runner. And going through the options, I found the options to enable it, so again, it was a simple matter of doing something like:
Then, after some issues here and there and just following the documentation, the runner was up. I tested it with some simple scripts, and they ran in their containers successfully. However, there was something which I needed to test, in GitHub/Forgejo/Gitea actions, you need to use an action called "checkout" to get the code from the repository and put it inside the container, so you can run things on top of it and manipulate it as you wish. And obviously I needed it to run my automation scripts and system. So I tested and...

This is not the exact error since I wasn't able to get a screenshot at the time, however the reason was pretty much the same, there was some connection error.
So, I started to tweak my config, and seeing retrospectively, I was lost. The main thing for me at the time was if the error was related to the URL that I used to connect to the Forgejo instance, since because of the Tailscale network on top and the AdGuard Home config, there were five possible URLs that I could use: 192.168.1.13:3030, the local IP on my home's network; localhost:3030, the URL which "makes the server look up its own ports/IP's"; homelab.tailnet-name.ts.net:3030, the readable URL which Tailscale gives for that machine; 100.69.013.10:3030, which is the IP of the home lab on the Tailscale network; And forgejo.homelab.local, a local domain that redirects to the Forgejo instance, configured using Adguard. On top of that, the Forgejo Actions runner has two config values that can affect the URL that the actions, services.forgejo.settings.actions.DEFAULT_ACTIONS_URL and services.gitea-actions-runner.instances.<instance>.url, both of them which I didn't know correctly how they affected the actions.
And so I spend pretty much a whole day just switching combinations, rebuilding and rebuilding the NixOS config, trying different combinations to see if any one of these worked, but nothing. All combinations didn't worked. Nonetheless, there were also Tailscale and Adguard, so I also tried tweaking, enabling and disabling, trying everything that I could to see if they were affecting or not and trying to fix the issue. Installed and removed Forgejo and Forgejo Runner again and again, because as always, I also had customized a lot of things before actually testing them, so I needed to rip out and put together everything to see if I screwed up something, trying to navigate also between the layers of abstractions that I made on the configuration.
And then, I went to bed, after unsuccessfully trying to fix the issue.
On the next day, I pretty much started going directly to the computer. For context, I wanted to finish this setup somewhat quickly to continue my other projects that depended on it, so I started to save time by not doing my normal routine (this probably was one of the worst of my decisions ever). I started to again see if I forgot something, if some configuration on another file was affecting it, and then for some reason that I don't remember anymore, I noticed an option called networking.firewall.allowedTCPPorts, which I had used to enable the ports for AdGuard Home to work...
And like a pass of magic, the checkout action worked and cloned the repository contents.
The Rewrite
After said success, I continue the configuration of the home lab, and things were getting out of control really quickly. I don't know if it is because I learned JavaScript as my first language, but I do tend to try abstract things a lot. In non-technical terms, I tend to hide away a lot of [necessary] complexity under an all-encompassing function or interface, which backfires a lot. And I was doing that with my configuration, trying to join systems with different scopes under the same umbrella, and of course, thing started to get out of control.
And just to kick me more, probably in between all this abstraction and trying to fix the Forgejo Actions... I apparently broke something, which made me unable to connect to Forgejo via SSH. So after one entire day abstracting, the next one I ripped out everything and started to make my NixOS config something more sane and straight forward, and I think that the commit message for this refactor tells a lot about how my mind was:

And after some two more days also migrating my desktop configuration, everything was finally easier to understand and reason about. I did end up forgetting to enable my window and session manager when migrating the desktop config, nothing really difficult to fix using Vim/NeoVim, but I do admire how the computer looks with just the terminal and how many programmers started and maybe to this day program with monitors showing something like this:

Banging My Head Against the Wall
At this point around four days had passed, and it was Tuesday, and I had started all of this on the past week on Friday. All these days, I wasn't having my normal routine or taking a lot of care with myself, going to sleep a lot more late and tired than normal, and even if this month I do need to push my limit, this was a lot more than necessary, and was also affecting my time that I had with my girlfriend, since I couldn't stop thinking about work or have the energy to give attention to her, which also affected my own insecurities and anxiety, feeling like a bad partner to her. Everything because of a god-damn configuration.
However, I didn't want to stop or give up, I love programming, and if I don't make this server work, I won't be able to continue with my plans. So I continued to push, frustrate myself, and bang my head against the wall until this works.
The Forgejo Actions were working, but the SSH push and pull wasn't, and again, because apparently I don't know how to troubleshoot, I started to tweak the config again and again, for another entire day, counting also other issues and problems that I had with the migration. This was something which I acknowledge at the time, but I was feeling and acting lost, never knowing what thing was causing these issues and having tunnel vision. I tried seeing if it was something with what IP I was using, if it was something somehow related to the proxy and AdGuard DNS redirects, and nothing changed. Every time I tried to push or pull via SSH, I got something like fatal: user/repository.git does not appear to be a repository. What was I doing wrong?!?
I forgot to add my SSH Key to the Forgejo user account, that was what I was doing wrong. I fucking should have taken a step back when I noticed that via https it worked as normal, in all IPs or URLs.
But now, remember the checkout action? It wasn't working again. So I did the same fix from before, allowed the TCP port, allowed also for UDP jut in case, and... the same error, ECONNREFUSED. Again, I started by changing the IPs and URLs in the config, however this time, when I used something different from localhost:3030, I got a different output:

And with the foresight of today, I really should have thought a little more why it was a different error, unfortunately I didn't, and started to again write and rewrite config properties, even rewriting the whole Forgejo and Forgejo Actions config, without any success, the day ended, and I have never been so stressed and tired with a project than this.
I really want to be clear that not so many days before all of this, I had a lot of problems and stress with my greater family, problems which really worried about the situation of my parents and the urgency for me to get a job. Thankfully, my parents and I are on a stable situation, and they are really supportive and let me take my time to find a job and hunt what I love, but still, the pressure that I put and need to put on myself to get a job, not only to help my parents, but to also have financial independence and start the first steps in having a home with my partner, all of this was stressing and putting even more weight into this whole thing. Yes, I can find a job without any of these, and I am actively sending resumes where I can, however, this project, server and plan could hopefully really help my situation. And besides all of that, I love programming, I love finding solutions, automating things, seeing the unbelievable amount of progress bars and log streams of processes running, I love this job. So being so.. bad at it, really was hitting my mind.
The day passed, and now it is Friday, the same day that I'm writing this blog post. I fell asleep without even giving goodnight to my girlfriend because of the amount of exhaustion that I had this past night. Thankfully I woke up somewhat on a good mood, even with the stress and exhaustion I was able to get some good sleep and distract myself on the past night to improve my mood in general. However, I needed to fix this issue, already passed an entire week, and fixing or not, I couldn't continue this the next week, I know how much one week can burn out my motivations and love for programming, so, or I fix this, or I change projects and make this a future Guz's problem. At the start it was the same as yesterday, just trying to tweak configurations, even reverting changes to a working state without any success or difference. But then, I started to actually debug this thing, doing something which I really should have done before: test if it is a connection issue or not in the first place. Yes, it is obvious at this point, but when I have tunnel vision on a problem, I really can't think clearly. Nonetheless, I tried using ping to test the connection and...

It wasn't a connection issue... ok... I have to admit that at first glance it just confused me even more, but at least now it isn't a problem with my config? Wait, could it be a problem with the checkout action itself now? How? It was compatible and working with Forgejo without any problems just days ago, and it didn't have any type of update in between these days. I started to search if there was something on the internet about this problem, trying to see if anyone had the ECONNREFUSED problem, but nothing. The Forgejo and Gitea mirrors of the action didn't have anything, nor the issues in the original repository. Maybe it was something related to an API difference between GitHub and Forgejo somehow? The logs say about trying to access an endpoint called /api/v3/repos/{owner}/{repo}/tarball/{ref} to download the archive of the repository, and the "not found" error could be related to some authorization to the endpoint error? Forgejo does show a 404 page when you try to access a private repository or page without authorization, same when you try to clone something via SSH without a key.
Well, I tried to test using curl to the same endpoint, and it returned 404, but the other endpoints didn't... nor in the actions, so it wasn't something with the API it seems...

I went into the Gitea API documentation and... where the fuck is the /tarball endpoint?! It is a GitHub only endpoint! Wait, so why it was working before? What happened? Well, I try to find anything about this endpoint on the GitHub actions, some type of error, or maybe a configuration to use another end point? And for my surprise, searching for "tarball" on the action's repository..

I will hug my girlfriend and cry, brb.
---
Yes, this whole nightmare was because Git wasn't installed on the docker image. And you may be asking why before it didn't use the API fallback? Well, it seems like the official NodeJS debian docker images had Git already installed on them, however, after the rewrite, I started using Gitea's official docker images for actions runner, which don't come with Git preinstalled it seems. And installing Git using apt-get install -y git gave me the confirmation, because the checkout action worked right after it.
Something to Learn in This Chaos
I have been writing this blog post for an entire day now, starting it right after the break to breathe that I needed to have after the action worked.
Foresight really makes me fell stupid right now, not gonna lie. This isn't the first time I'm having this felling, actually in this job is kinda something expected I would say, and the feeling of finally fixing it is rewarding. However, I do feel like it wasn't a healthy way of handling this issue. Again, the pressure I put on myself wasn't helping, and prohibiting me from taking a ten-minute break to rest my mind, really didn't help with the tunnel vision issue, because all the problems that I had were because I wasn't reading the errors correctly and trying to fix things totally unrelated to the problem at hand. And probably, one of the biggest things to me in this entirety, is the fact that I need to learn how to debug problems and narrow the possible causes of them, I wouldn't have known that the problem was Git not being installed, if I didn't have tested the connections with ping and curl on the first place. Will I actually learn because of this experience? Probably not, I will maybe have a lot more weeks of stress until I finally learn and start constructing some muscular memory for this. However, at least now with this blog post, I have somewhere to look back to if I ever need to configure Forgejo again lol.
And, I know that everyone is different and yadda yadda, but having someone with me this entire week, someone which I could rest on her shoulder and calm myself without feeling guilty or something else, someone to talk and have support from, really helped on not going downhill into a harsh burnout I would say. Eu te amo Helena.
Today's artists & creative things Music: Passing Through (Can't the Future Just Wait) - by Kaden MacKay
© 2024 Gustavo "Guz" L. de Mello. Licensed under CC BY-SA 4.0
4 notes
·
View notes
Text
Open-source Tools and Scripts for XMLTV Data
XMLTV is a popular format for storing TV listings. It is widely used by media centers, TV guide providers, and software applications to display program schedules. Open-source tools and scripts play a vital role in managing and manipulating XMLTV data, offering flexibility and customization options for users.
In this blog post, we will explore some of the prominent open-source tools and scripts available for working with xmltv examples.
What is XMLTV?
XMLTV is a set of software tools that helps to manage TV listings stored in the XML format. It provides a standard way to describe TV schedules, allowing for easy integration with various applications and services. XMLTV files contain information about program start times, end times, titles, descriptions, and other relevant metadata.
Open-source Tools and Scripts for XMLTV Data
1. EPG Best
EPG Best is an open-source project that provides a set of utilities to obtain, manipulate, and display TV listings. It includes tools for grabbing listings from various sources, customizing the data, and exporting it in different formats. Epg Best offers a flexible and extensible framework for managing XMLTV data.
2. TVHeadend
TVHeadend is an open-source TV streaming server and digital video recorder for Linux. It supports various TV tuner hardware and provides a web interface for managing TV listings. TVHeadend includes built-in support for importing and processing XMLTV data, making it a powerful tool for organizing and streaming TV content.
3. WebGrab+Plus
WebGrab+Plus is a popular open-source tool for grabbing electronic program guide (EPG) data from websites and converting it into XMLTV format. It supports a wide range of sources and provides extensive customization options for configuring channel mappings and data extraction rules. WebGrab+Plus is widely used in conjunction with media center software and IPTV platforms.
4. XMLTV-Perl
XMLTV-Perl is a collection of Perl modules and scripts for processing XMLTV data. It provides a rich set of APIs for parsing, manipulating, and generating XMLTV files. XMLTV-Perl is particularly useful for developers and system administrators who need to work with XMLTV data in their Perl applications or scripts.
5. XMLTV GUI
XMLTV GUI is an open-source graphical user interface for configuring and managing XMLTV grabbers. It simplifies the process of setting up grabber configurations, scheduling updates, and viewing the retrieved TV listings.
XMLTV GUI is a user-friendly tool for users who prefer a visual interface for interacting with XMLTV data.
Open-source tools and scripts for XMLTV data offer a wealth of options for managing and utilizing TV listings in XML format. Whether you are a media enthusiast, a system administrator, or a developer, these tools provide the flexibility and customization needed to work with TV schedules effectively.
By leveraging open-source solutions, users can integrate XMLTV data into their applications, media centers, and services with ease.
Stay tuned with us for more insights into open-source technologies and their applications!
Step-by-Step XMLTV Configuration for Extended Reality
Extended reality (XR) has become an increasingly popular technology, encompassing virtual reality (VR), augmented reality (AR), and mixed reality (MR).
One of the key components of creating immersive XR experiences is the use of XMLTV data for integrating live TV listings and scheduling information into XR applications. In this blog post, we will provide a step-by-step guide to configuring XMLTV for extended reality applications.
What is XMLTV?
XMLTV is a set of utilities and libraries for managing TV listings stored in the XML format. It provides a standardized format for TV scheduling information, including program start times, end times, titles, descriptions, and more. This data can be used to populate electronic program guides (EPGs) and other TV-related applications.
Why Use XMLTV for XR?
Integrating XMLTV data into XR applications allows developers to create immersive experiences that incorporate live TV scheduling information. Whether it's displaying real-time TV listings within a virtual environment or overlaying TV show schedules onto the real world in AR, XMLTV can enrich XR experiences by providing users with up-to-date programming information.
Step-by-Step XMLTV Configuration for XR
Step 1: Obtain XMLTV Data
The first step in configuring XMLTV for XR is to obtain the XMLTV data source. There are several sources for XMLTV data, including commercial providers and open-source projects. Choose a reliable source that provides the TV listings and scheduling information relevant to your target audience and region.
Step 2: Install XMLTV Utilities
Once you have obtained the XMLTV data, you will need to install the XMLTV utilities on your development environment. XMLTV provides a set of command-line tools for processing and manipulating TV listings in XML format. These tools will be essential for parsing the XMLTV data and preparing it for integration into your XR application.
Step 3: Parse XMLTV Data
Use the XMLTV utilities to parse the XMLTV data and extract the relevant scheduling information that you want to display in your XR application. This may involve filtering the data based on specific channels, dates, or genres to tailor the TV listings to the needs of your XR experience.
Step 4: Integrate XMLTV Data into XR Application
With the parsed XMLTV data in hand, you can now integrate it into your XR application. Depending on the XR platform you are developing for (e.g., VR headsets, AR glasses), you will need to leverage the platform's development tools and APIs to display the TV listings within the XR environment.
Step 5: Update XMLTV Data
Finally, it's crucial to regularly update the XMLTV data in your XR application to ensure that the TV listings remain current and accurate. Set up a process for fetching and refreshing the XMLTV data at regular intervals to reflect any changes in the TV schedule.
Incorporating XMLTV data into extended reality applications can significantly enhance the immersive and interactive nature of XR experiences. By following the step-by-step guide outlined in this blog post, developers can seamlessly configure XMLTV for XR and create compelling XR applications that seamlessly integrate live TV scheduling information.
Stay tuned for more XR development tips and tutorials!
Visit our xmltv information blog and discover how these advancements are shaping the IPTV landscape and what they mean for viewers and content creators alike. Get ready to understand the exciting innovations that are just around the corner.
youtube
4 notes
·
View notes
Text
I juuuust turned in my stupid 3rd and final assignment (before the exam </3) literally less than an hour before it was due... ALL BECAUSE!!! We had to do it thru the EC2 Linux console & do like, a bunch of stuff... obviously... except the STUPID thing hated me so bad it kept telling me I "didn't have permission" to do X Y Z thing and I sent screenshots to my classmates like. Is anyone else seeing this... & they were like Wtf no???, like none of them had gotten any similar errors... not even while manipulating files or anything, just like. CONNECTING to that DAMN INSTANCE.... so I had to re-do basically the first 70% of the assignment twice... and then I kinda gave up on figuring out how to get in thru the website so I installed putty and tried doing it thru there, but in the end I did get into the online console! Don't remember how... still, had to do the whole thing again. AND THEN!!! I wanted to do cd .. , but I did cd -- instead, which is APPARENTLY an extremely fucked up & evil command because suddenly the directories + files that were the first half of the assignment? Gone. POOF... idek what cd -- does like, concretely, but I don't feel like googling it rn. I'm just gonna add cd -- to the endless list of entities I have strangely intense beef with. I did turn it in tho yaaayyy... except I forgot to screenshot a part of it before closing it, so I had to write it on my fucking. Notepad... like some sort of animal.
#diary#eugh.... I hope it turns out OK lol</3#I'm like 90% sure I cannot possibly fail this class atp but... still. I couldn't turn in the little report thing worth +0.3 points#and now this... Scared my brain got scrambled somewhere and I misunderstood what I had to do or smth..... SOBBB
5 notes
·
View notes
Text
Copy and paste at the Linux command prompt
You can use the xclip command in Linux to manipulate the X11 clipboard, handling copy and paste in the command prompt and scripts. See xclip and xsel examples:
Read more:
-> How To Copy Command Output To Linux Clipboard Directly
-> How do I copy a file to the clipboard in Linux?
14 notes
·
View notes
Text
Exploring Python: Features and Where It's Used
Python is a versatile programming language that has gained significant popularity in recent times. It's known for its ease of use, readability, and adaptability, making it an excellent choice for both newcomers and experienced programmers. In this article, we'll delve into the specifics of what Python is and explore its various applications.
What is Python?
Python is an interpreted programming language that is high-level and serves multiple purposes. Created by Guido van Rossum and released in 1991, Python is designed to prioritize code readability and simplicity, with a clean and minimalistic syntax. It places emphasis on using proper indentation and whitespace, making it more convenient for programmers to write and comprehend code.
Key Traits of Python :
Simplicity and Readability: Python code is structured in a way that's easy to read and understand. This reduces the time and effort required for both creating and maintaining software.
Python code example: print("Hello, World!")
Versatility: Python is applicable across various domains, from web development and scientific computing to data analysis, artificial intelligence, and more.
Python code example: import numpy as np
Extensive Standard Library: Python offers an extensive collection of pre-built libraries and modules. These resources provide developers with ready-made tools and functions to tackle complex tasks efficiently.
Python code example: import matplotlib.pyplot as plt
Compatibility Across Platforms: Python is available on multiple operating systems, including Windows, macOS, and Linux. This allows programmers to create and run code seamlessly across different platforms.
Strong Community Support: Python boasts an active community of developers who contribute to its growth and provide support through online forums, documentation, and open-source contributions. This community support makes Python an excellent choice for developers seeking assistance or collaboration.
Where is Python Utilized?
Due to its versatility, Python is utilized in various domains and industries. Some key areas where Python is widely applied include:
Web Development: Python is highly suitable for web development tasks. It offers powerful frameworks like Django and Flask, simplifying the process of building robust web applications. The simplicity and readability of Python code enable developers to create clean and maintainable web applications efficiently.
Data Science and Machine Learning: Python has become the go-to language for data scientists and machine learning practitioners. Its extensive libraries such as NumPy, Pandas, and SciPy, along with specialized libraries like TensorFlow and PyTorch, facilitate a seamless workflow for data analysis, modeling, and implementing machine learning algorithms.
Scientific Computing: Python is extensively used in scientific computing and research due to its rich scientific libraries and tools. Libraries like SciPy, Matplotlib, and NumPy enable efficient handling of scientific data, visualization, and numerical computations, making Python indispensable for scientists and researchers.
Automation and Scripting: Python's simplicity and versatility make it a preferred language for automating repetitive tasks and writing scripts. Its comprehensive standard library empowers developers to automate various processes within the operating system, network operations, and file manipulation, making it popular among system administrators and DevOps professionals.
Game Development: Python's ease of use and availability of libraries like Pygame make it an excellent choice for game development. Developers can create interactive and engaging games efficiently, and the language's simplicity allows for quick prototyping and development cycles.
Internet of Things (IoT): Python's lightweight nature and compatibility with microcontrollers make it suitable for developing applications for the Internet of Things. Libraries like Circuit Python enable developers to work with sensors, create interactive hardware projects, and connect devices to the internet.
Python's versatility and simplicity have made it one of the most widely used programming languages across diverse domains. Its clean syntax, extensive libraries, and cross-platform compatibility make it a powerful tool for developers. Whether for web development, data science, automation, or game development, Python proves to be an excellent choice for programmers seeking efficiency and user-friendliness. If you're considering learning a programming language or expanding your skills, Python is undoubtedly worth exploring.
9 notes
·
View notes
Text
if youre not a Turbo Gamer, Linux is ready for 99% of use cases
office suite: Libreoffice has basically everything you'd need from spreadsheets and word docs to graphical files and presentations
video editing: kdenlive is fantastic if youre on anything but centos, in which case you can use DaVinci Resolve
photo editing: GIMP and Krita are amazing manipulation and painting programs respectively
browsers: Firefox tends to be the default, but you can install Chrome and even Edge if you want to use Edge for some reason. Lots of browsers are available.
Gaming: Steam, Lutris, Bottles, all great options for gaming, but Steam's Proton tool is all around fantastic. Some gaming companies think Linux users are "filthy cheaters" by default, so they wont let you play their game on Linux even tho it'd work fine. Thats really the only hiccup with Linux gaming tbh
Linux is good enough for most desktop users and its easy to install. All you need to get started is a flash drive and a willingness to learn
i doubt the option to turn off Recall will be available for ever, let alone it being local to your system only. Try Linux c:

102K notes
·
View notes
Text
What Are Python’s Key Features For Automation Tasks?
Python is widely recognized for its simplicity, readability, and a vast ecosystem of libraries, making it ideal for automation tasks. One of its key features is its clean syntax, which allows developers to write and understand scripts quickly, which is important when automating repetitive processes. Python supports cross-platform scripting, meaning automation scripts written in Python can run on Windows, Linux, or macOS with minimal changes.
Another strength is Python’s rich set of standard libraries like os, shutil, subprocess, and datetime, which help manage files, execute system commands, and schedule tasks. For more advanced automation, third-party libraries such as Selenium (for web automation), PyAutoGUI (for GUI automation), and Pandas (for data manipulation) are commonly used.
Python's integration capabilities also make it easy to automate tasks across different systems or software—like sending emails, processing spreadsheets, or interacting with APIs. In industries ranging from IT to marketing, Python is increasingly being used for automating testing, reporting, and workflows.
If you're new and looking to get started with scripting and automation, a good Python course for beginners can help build the foundation.
0 notes