This blog serves as a repository of articles about Full Stack Development, with a pronounced focus on Fedora Linux. It also provides troubleshooting advice, tips, and a tricks designed to enhance your technical acumen. In the spirit of simplicity and efficiency, we forgo a conventional search function; instead, encourage the use of CTRL+F to seamlessly navigate through the site. Engage with the content and may your quest for knowledge be fruitful. Happy reading!

How to install LAMP stack on Fedora Fedora 39

Simple instructions to install LAMP.
Linux, Apache, MySql, and PHP. Taken for granted that you already have Linux installed, this article is Fedora Centric.
It is the one that worked the best for me.
Please hit the Link button to visit FossLinux website.


Limit size of Fedora's logs

You might not need to have huge logs on your system. I use a workstation and a few days worth of logs is enough for me.
Here is the explanation of the code:

  1. sudo journalctl --vacuum-size=10M: Reduces the space used by the journal logs to 10 megabytes, deleting the oldest entries if necessary.
  2. sudo journalctl --rotate: Closes the current journal log and starts a new one. Useful before archiving or cleaning up logs.
  3. sudo journalctl --vacuum-size=10M --vacuum-time=3d: Limits the journal size to 10 MB and deletes entries older than 3 days.
  4. echo "SystemMaxUse=50M" | sudo tee -a /etc/systemd/journald.conf: Appends "SystemMaxUse=50M" to the journal configuration file, setting a 50MB limit for the journal.
  5. sudo systemctl restart systemd-journald.service: Restarts the systemd journal service to apply the new configurations.
sudo journalctl --vacuum-size=10M
sudo journalctl --rotate
sudo journalctl --vacuum-size=10M --vacuum-time=3d
echo "SystemMaxUse=50M" | sudo tee -a /etc/systemd/journald.conf
sudo systemctl restart systemd-journald.service

Autoupdate fedora

Keeping a Fedora system updated is now hassle-free thanks to dnf-automatic. This tool automates the update process, ensuring that your system remains secure and up-to-date with minimal user intervention. The setup involves installing dnf-automatic, configuring it to apply updates automatically, and enabling the necessary system timers. Once in place, dnf-automatic regularly checks for and applies updates in the background, simplifying system maintenance.

The script concludes by verifying the successful activation of these timers, providing feedback for any potential issues. This approach not only streamlines the update process but also enhances system security and performance, allowing users to focus on their primary tasks without worrying about manual updates, here is an explanation of the code:

sudo /usr/bin/dnf -y install dnf-automatic: Installs the 'dnf-automatic' package for automatic system updates.
echo "apply_updates = yes" | sudo tee -a /etc/dnf/automatic.conf: Configures 'dnf-automatic' to automatically apply updates by modifying its configuration file.
sudo /usr/bin/systemctl enable --now dnf-automatic-install.timer dnf-automatic.timer: Enables and starts the 'dnf-automatic' timers, scheduling the system to automatically check for and apply updates.
if [ $? -eq 0 ]; then ... else ... fi: Checks if the previous command was successful and provides corresponding feedback, either confirming successful timer activation or indicating an error.

# Install dnf-automatic for automatic system updates
sudo /usr/bin/dnf -y install dnf-automatic

# Append configuration for applying updates automatically
echo "apply_updates = yes" | sudo tee -a /etc/dnf/automatic.conf

# Enable and start the dnf-automatic timers
sudo /usr/bin/systemctl enable --now dnf-automatic-install.timer dnf-automatic.timer

# Check if systemctl commands were successful
if [ $? -eq 0 ]; then
    echo "dnf-automatic timers enabled successfully."
    echo "Error enabling dnf-automatic timers."

How to find out computer brand, model, and other information

The command sudo dmidecode -t system is used to access the BIOS for detailed information about the computer, including the manufacturer, model, version, and serial number.

sudo dmidecode -t system

Excessive Memory Swapping?

Do you mostly engage in activities like Internet surfing, enjoying tunes, Word processing, Spreadsheet work, or maybe some programming tasks, and your computer has 16GB of RAM or more? In such cases, it's advisable to adjust the "swappiness" setting to a lower figure, say around 10. This change prompts your system to favor using actual RAM instead of relying on swap space. The benefit? You're likely to notice enhanced performance, especially when there's ample RAM at your disposal.

sudo echo "vm.swappiness=10" 
sudo tee -a /etc/sysctl.conf
sudo sudo sysctl -p

Setting Up a Hotspot with Your Fedora Laptop

On days when I'm working from the office and connected to the network via an Ethernet cable, I find that transferring files between my laptop, tablet, and phone over the separate WiFi network can be frustratingly slow. (Refer to the Resilio article on this blog for more details).
Luckily, with an unused WiFi adapter on my laptop, I decided to turn it into a hotspot for a much faster file transfer experience. This requires installing a DHCP server on your laptop, which is surprisingly resource-light.
Here's how I set it up:

# 1) Install DHCP server functionality.
sudo dnf -y install dnsmasq
sudo systemctl start dnsmasq

# 2) To enable it permanently
sudo systemctl enable dnsmasq

# 3) To start it only when needed
sudo systemctl start dnsmasq

# 4) Identify your WiFi interface name
nmcli device

# 5) Replace  with your WiFi interface name, and set your 
nmcli device wifi hotspot ifname  con-name  ssid 
nmcli con modify  802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared
nmcli con modify  wifi-sec.key-mgmt wpa-psk

# 6) Set your hotspot's password
nmcli con modify  wifi-sec.psk 

# 7) Activate your hotspot
nmcli con up 


Useful Tools

Synchronize Your Music, Files, and More

Syncing music from my Fedora Linux workstation to my Android phone used to be a challenge until I discovered Resilio. It's as simple as syncing a folder on my computer with the Resilio client on my phone. The music I select automatically appears on my SD card. Deletions or additions in one place reflect on the other device seamlessly.

But it doesn't stop at music. I've extended this convenience to my Documents folder, syncing it between my workstation and laptop. Videos on my Android tablet are in sync too, creating a personal, home-based 'Dropbox' - all for free. Resilio isn't just for personal use; I also share a folder with brother since we are in the same line of work.

The setup is straightforward, offering file and folder sharing with both read-only and read and write options, an easy QR scan or a link is enough. While there are professional and enterprise versions, the free version perfectly meets my needs.

Up Link

Uncover Basic System Information with Neofetch

Neofetch is a handy tool for those who need a quick overview of their operating system and hardware specifications. This command-line utility effectively displays general system data, ideal for casual users and IT professionals alike. It offers a brief summary of your OS version, computer model, CPU and GPU types, and the amount of installed physical RAM.
Suitable for basic system diagnostics and monitoring, Neofetch enriches this information with an ASCII art representation of your operating system's logo, adding a unique visual flair. For a more streamlined output, particularly useful for scripting or maintaining a formal record, the `--stdout` parameter can be used to generate text-only output. Whether you're doing a quick check-up, evaluating system performance, or simply curious about your device's specs, Neofetch provides a simple yet comprehensive way to access this information. It's compatible with a variety of platforms, including Linux, macOS, and Windows, making it a versatile choice for diverse systems. Running Neofetch gives you an immediate snapshot of your system's key characteristics.

# Install Neofethc
sudo dnf -y install neofetch

# Run neofetch showing logo

# Run neofetch text only
neofetch --stdout

Up Link

Tired of Juggling m4a, MP3, FLAC?

Say goodbye to the hassle of dealing with various proprietary formats. With SoundConverter, effortlessly transform all your audio files into your preferred format. My favorite is OGG, but feel free to choose whatever suits your needs.
Have an audiobook in stereo? SoundConverter can efficiently convert it to mono, helping you save precious storage space without compromising on quality. Remember, the human ear typically can't discern sound qualities beyond 192 kbps. So, why not optimize your audio files?
SoundConverter allows you to maintain the perfect balance of file size, format, and bit rate. Whether you're working with individual tracks or entire folders, this tool simplifies the process. Enjoy a seamless audio conversion experience.
It has a graphical interface, so just install it and enjoy it!

sudo dnf -y install soundconverter
Up Link

Tired of Tiresome Audio Players? Try Audacious

I love using Audacious, as it stands out in its commitment to playing your music your way, all while being light on your computer’s resources.
The player's intuitive interface supports drag and drop for folders and individual song files, making it a breeze to navigate through your music library. Searching for artists and albums is effortless, or you can immerse yourself in crafting your custom playlists. Whether you're enjoying CDs or streaming music from the Internet, Audacious delivers a smooth listening experience. I just love it.

  sudo dnf -y install audacious  
Up Link

My articles and some things I've found interesting

There is no cloud, but don’t worry, there are spoons.

There is no cloud image

Let's take a little journey, inspired by a wise young philosopher in a classic film:

Neo: What truth?
Boy: There is no spoon.
Neo: There is no spoon?
Boy: Then you'll see that it is not the spoon that bends, it is only yourself.

So, there is no cloud, servers cannot be bent, it is you that bends when you connect from one WiFi spot and then go somewhere else and connect again to the same server, or one just like it.

So, you store your precious data in "the cloud," do you? Ah, "the cloud" - that magical place where data frolics free, unencumbered by physical constraints. It's akin to explaining to non-tech mortals the difference between an API and a Web Service. Spoiler: They don't care. As long as it works, it might as well be unicorn dust powering their apps.

Remember the days when getting an email address was like being handed the keys to the kingdom? I do. But let's not wander down memory lane to the land of BBS, lest we start snoring into our ergonomic keyboards.

Here's my beef (because apparently, I'm a tech grump): Once upon a time, humans knew that the internet wasn't just "on" their computer. They understood the concept of a server, a mystical box where websites lived and emails vacationed. Fast forward, and somehow, this knowledge got lost faster than socks in a laundry.

Flashback twenty years, and those servers were connected by—let’s simplify this—really long or virtual cables. Location? Irrelevant. Whether you were in Kathmandu or La Quiaca, your digital requests journeyed across the globe, seeking the wisdom of servers far and wide.

Then, companies had an epiphany. Why not decentralize this digital treasure trove? Place servers in strategic locations, so your cat videos load faster. Revolutionary, right? Well, not quite. It was just common sense with a dash of logistics, and again, that was twenty years ago.

Fast forward to present time. I'm advising a client to trust their digital soul to Google's tender embrace. Their concern? "But it's in the cloud!" Ah, the cloud—a term as misunderstood as my teenage emo phase. So, I posed two questions: Where do you think your emails stretch their legs now? And who's better at guarding your digital life, Google or your IT team?

Needless to say, their data now frolics in Google's servers, happier than ever.

In conclusion, dear readers, the cloud is not some mystical ether. It's servers. Lots of them. Just like two decades ago. And before you ask, no, you can't literally hire a cloud. It's still about servers—just a lot more flexible. And no, we're not opening the floor to comments. You know how those end.

P.S. To my fellow tech enthusiasts ready to lecture me on load balancing: Yes, I know. But let's not spoil the magic for the rest, shall we? After all, who doesn't enjoy a bit of mystery in their tech?

Elazar Pimentel, 2023

Another Tech Event, Not Orange, but AI is the New Black

In corporate extravaganzas, we all dutifully parade to these grand networking shindigs. We engage in the sacred ritual of mingling, exchanging business cards as if they're rare collectibles.

Now, let's address the environmental faux pas of discarding those business cards. For the love of our green Earth, please use a recycling bin specifically for paper.

The relentless sales pitches. They're the same rehearsed monologues, just with a new coat of paint each year. "We don't just offer antivirus services, but a comprehensive solution for your business landscape." But let's cut through the fluff – you can swap 'antivirus' with 'cloud services', 'intelligent' networks, or 'edge-servers', and it's essentially the same script. You don’t have to say it Bob, we already know you work with the Fortune 500s or Blue-chip juggernauts, somehow we already knew that, all of you do.

What? You too took all those training courses in Agile, Scrum, Lean, Six Sigma, and so forth but end up with a nice GANTT graph in a spreadsheet anyway? Well, let's face it, until Marie finishes her DB management bit you can only do so much, and Lizzie can't finish her Web Service until you get Marie to finish hers so you can do the JavaScript for the bit that John did, but I digress, it's an AI Project Management solution for you now, pal.

But, alas! AI. Oh, AI. It's the new black, slapped onto every product like a magic potion. Antivirus? No, it's AI antivirus now. Network Management? Please, that's ancient history; it's AI Network Management now. And Intrusion Detection? If there's no AI in the name, you might as well be in the dark ages.

And as for this article, well, I'm running it through ChatGPT (the paid version, because that’s how my folks raised me). Let's face it, we're not all literary geniuses, I can never get the second S in the right spot in “business”. And while Bard has its charm, it still needs to sip its alphabet soup and sit at the kid's table until it's ready to play with the big kids.

So, until we cross paths at the next tech circus, keep those business cards circulating in the green loop and your cynicism well-nourished. Cheers, and happy ChatGPT’ing – the grown-up version, of course!

P.S.: As a happy Latin American, a bit of advice for those of my fellow non-native English speakers, we are not being difficult, we really did not understand what you said. If you ask the audience if we all know about H-Servers and you hear silence, it is because we are fascinated that you are finally talking about a new thing, not because we don't know you meant edge-server; we were just hoping someone made a server shaped like an H, it would be a nice change.

Elazar Pimentel, 2023

The Odyssey of a Programmer: From C to Carpentry

Programming, ah, the never-ending labyrinth of languages, each more intricate and esoteric than the last. My journey began in the primordial digital soup with C, a language so close to the metal you could hear the hum of the CPU. But no sooner had I mastered its curly braces than I was thrust into the object-oriented world of C++, where my code began to resemble a complex organism, evolving and adapting.

The plot thickened as I delved into the depths of databases with dbase and Clipper. From there, it was a hop, skip, and a jump to the vibrant lands of HTML, where I once naively thought everything could be solved with tables. Ah, the table era, a simpler time when layouts were a precarious stack of cells and rows. But soon, this too was swept away by the tidal wave of CSS and the mighty div tag, banishing tables to the dark corners of tabular data.

Visual Basic beckoned, luring me into the realm of Windows applications, only to be followed by the siren song of ASP and the structured queries of Microsoft SQL Server. The web was a wild frontier, and I, a digital cowboy, wrangling code and markup in the pursuit of pixel perfection.

As if caught in a whirlwind, I was swept away by the chilly winds of ColdFusion, only to land in the warm embrace of MySQL and the pearly gates of Perl. JavaScript and CSS added flair and animation to my creations, while PHP whispered sweet nothings, promising server-side bliss. Python slithered into my toolkit for those everyday tasks, a language so versatile it felt like a Swiss Army knife in my hands.

Just when I thought I had found my footing, Go (Golang) burst onto the scene, promising unparalleled performance. But alas, it was a niche siren, luring only the bravest sailors. Rust, they said, was the future, but it too was a path less traveled. So, back to the comforting arms of PHP and Python I went, only to be asked the unthinkable: "How did you not learn Java?"

And just when I thought I understood the landscape, MVC stormed in, upending my notions of web development with its Models, Views, and Controllers. ASP, PHP... it didn't matter. The world was modular now. But no, the sands shifted yet again. Laravel and MVC, my hard-earned mastery, were old news. The new kid on the block? React with Java. And let's not forget the NoSQL databases, a rebel against the structured world of SQL, promising flexibility and scalability.

So here I am, contemplating a simpler life. Carpentry, perhaps? There's a certain allure to working with wood, shaping and crafting with your hands, away from the fickleness of the digital world. Or maybe just watching others do it on YouTube, dreaming of a life less coded.

But alas, duty calls. It's time to check what new programming language, framework, or trend is waiting to sweep me off my feet. Java and NoSQL reign today, but in this ever-evolving world of technology, who knows what tomorrow holds? Until we meet again, fellow travelers on this coding odyssey.

Elazar Pimentel, 2024

Embracing Unconventional Career Paths: Standing Out in a Sea of Sameness

In a world where conformity reigns supreme, standing out in the job market has become an increasingly elusive feat. Everywhere you turn, it seems like everyone is vying for the coveted titles of ontological coach or scrum master, eager to showcase their transformative coaching skills or agile project management prowess. But amidst this sea of sameness, I've chosen to take a different route – one that's delightfully unconventional and refreshingly authentic.

As I navigate the professional landscape, I've come to realize that success isn't just about mastering the latest buzzwords or following the crowd. It's about embracing your unique quirks and staying true to your self-assured self, even if it means going against the grain. So, while EVERYONE feverishly pursues ontological coaching certifications and scrum master trainings, I've proudly marched to the beat of my own drum, reveling in the delicious irony of my career rebellion.

The hallmark of my unconventional approach is my unapologetic embrace of sarcasm and irony. Instead of offering bland platitudes and generic praise, I'm not afraid to inject a healthy dose of wit and irreverence into my interactions. When I genuinely admire someone's work, I don't hesitate to say, "I think that is brilliant work." But when faced with less-than-stellar ideas, I'm not one to mince words. Instead, I tactically steer the conversation in a more productive direction, saying, "Yes, that is one great way of doing it. Let's keep that in mind. Also, let's consider this other idea."

Another key aspect of my unconventional approach is my unwavering devotion to my Gantt chart. While others may wax poetic about the virtues of Kanban boards, I remain steadfast in my love for the structured simplicity of the Gantt chart. It's been my trusted companion through countless projects, guiding me with its clear timelines and milestones.

In conclusion, standing out in the job market doesn't always mean conforming to the latest trends or following the crowd. At times, it's about embracing your unique quirks and staying true to your authentic self. So, if you're tired of swimming in the sea of sameness, why not take a page out of my playbook? Embrace your inner contrarian, reject the allure of mainstream career choices, and blaze your own trail with unapologetic gusto. After all, in a world full of ontological coaches and scrum masters, being delightfully different is the ultimate flex.

PS: Now, if you're one of those individuals who, rather than making edits directly in the online Google Docs file like a civilized human being, feels compelled to download said file, tinker with it offline, and then re-upload it to Google Drive with a title that rivals the length of a congressional bill, well, let's just say your decision-making skillset might benefit from a little recalibration. Perhaps a week in a room with an ontological coach and a relentless loop of the soundtrack "We Can Dance" on repeat would help you see the error of your ways. Because really, who needs efficiency and collaboration online when you can indulge in the joy of unnecessarily having six versions of the same file with the added "approved by legal. Final version. Revised by Laura. Checked by Mike.docx"?

Elazar Pimentel, 2024