Unus Nemo likes this.
Unus Nemo likes this.
Unus Nemo likes this.
Development is not something that one finishes learning. As it is with most academia, learning in general is not something we ever finish. We just keep building onto our knowledge base and sometimes refactoring our knowledge to meet new ideologies and principles. With that said there are many great books that teach us valuable skills though they were written 5 to 10 years ago and their tool chains are outdated by today's standard. Sometimes the changes are mild enough for us to still work with the book despite the older tool chains. Sometimes the changes are so radical that it is more work to try to adapt the source to our modern tool chains then to just get a different resource. Though, not all books are of the same quality. So when you find a good one it is nice to use that book. Learn the techniques and then worry about adapting those techniques to a modern tool chain once they are fully understood.
In this day and age this challenge has never been easier for a developer to overcome. I am a Fedora user so I use podman in these examples though you could just as easily use docker if you feel it necessary to do so. Okay, so we are looking at the Packt book 'C++ Programming for Linux Systems: Create robust enterprise software for Linux and Unix-based operating systems' Upon examining the introduction we realize that the book is showing its age and the authors used Mint 21 with the gcc 12.x tool chain. Yeah, that is a bit old for today's standards though still completely usable. There is nothing taught in the book that will not be valuable by today's standards. Yet trying to work with the books source on a modern system could be a challenge one does not wish to accept while learning the material. Our solution? Build an OCI container with the author's suggested tool chain installed so that we know the book source should build without issues.
It is a good DevOP practice to setup containers for development in any case. So we can effectively reduce the 'It worked on my machine' phenomenon. So let us setup a Container for our book. First you should navigate to the books source code, in this case it is on GitHub, and clone it to a directory on your system. We are going to reference this directly in our Container so we will want it prepared before we begin. For our book in this example the source is here.
Okay, we have the source ready in a directory so let us build a container for working with the book source code! The following is a Containerfile (which can also be named Dockerfile as podman will accept either).Containerfile
# Use the official standalone Linux Mint 21 base runtime image
FROM docker.io/linuxmintd/mint21-amd64:latest
# Prevent interactive prompts during package installations
ENV DEBIAN_FRONTEND=noninteractive
# Update repository lists and install the explicit GCC 12 toolchain and utilities
RUN apt-get update && apt-get upgrade -y && apt-get install -y \
gcc-12 \
g++-12 \
make \
git \
gdb \
valgrind \
sudo \
&& echo "developer ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
&& rm -rf /var/lib/apt/lists/*
# Link system compiler targets explicitly to the version 12 toolchain
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100 \
&& update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
# Create a non-root development user matching standard Linux host UID 1000
RUN useradd -m -u 1000 -s /bin/bash developer
# Establish the persistent volume target folder
WORKDIR /workspace
RUN chown developer:developer /workspace
# Relinquish root execution and switch permanently to the non-root profile
USER developer
# Set the default shell behavior
CMD ["/bin/bash"]podman build -t mint21-gcc12-env .podman run -it --name mint21-book-dev \
-v /path/to/your/local/book-code:/workspace:Z \
mint21-gcc12-env/path/to/your/local/book-code with the path to the directory that you cloned the repository to. The :Z in the bind mount line is used by SELinux (Or other LSM ACL provider), if your system does not use SELinux (Or other LSM ACL provider) or you do not have it in enforcing mode then you can skip that attribute.We now have a fully provisioned OCI container that can be used with either podman or docker to provide the tool chain our book uses. This will allow us to focus on the content of the book rather than adapting code examples to our tool chain. That is a project we can work on after the concepts in the book are properly understood. If you would like to learn more about building your own containers for your development needs then I highly recommend the book Podman for DevOps
Unus Nemo
like this
reshared this
I have upgraded the Instance to the most recent version of Friendica. I had to disable the Smiley Button addon due to it not playing nice.
I had hopes that this upgrade would fix the image upload issues that have been a nuisance though the JS_Uploader addon that I disabled last upgrade still is not working properly so it remains disabled.
I have enabled the QuickPhoto and QuickComment addons. We will see how well they work. I also turned the StartPage addon back on as it became functional again.
Unus Nemo
like this
Your welcome. I think this time the upgrade fixed more than it broke, that is a win
.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
It seems smoother and faster to me as well. I just was not sure if it was my imagination. Though, if we both feel like things have smoothed out then it is worth considering. I remember back two versions ago when because of poor code and poor configuration I had to have a watchdog script restart the server almost constantly just to keep it up. Now, the watchdog has not had to restart a service in months. It seems the enhanced configuration and upgrades are getting us to where we want to be as an Instance.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
I was also having some dbus races in my system that was slowing down my whole system that I finally nailed down today and fixed. This is my personal workstation I am talking about not the VPS. So, I was not sure if the increased speed was just due to my workstation working more smoothly or if the site was behaving better
.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
Unus Nemo likes this.
Yes, the race conditions were on my workstation, not the VPS. It was slowing down my whole Gnome shell due to dbus always being flooded. One race condition was because localsearch was choking on my Google Drive that I have rcloned to a directory in my home directory. Which was easy enough to fix, I just stopped localsearch (formerly tracker) from indexing my home directory and gave it more specific targets to keep it away from my rcloned mount. The other was being caused by an antiquated ibus service that was simply not required anymore in Gnome and I simply disabled that service. Now a journalctl -f is very inactive (the way we want it to be) instead of being flooded with dmesgs from failed processes.
There were no race conditions on the server. The server configuration has been tightened up for a while now. Though the code base from the last upgrade had some issues that was slowing down the server. It appears that those issues have been fixed in this release. I have even re-enabled js_uploader addon and it seems to be fine. The only thing broken is the Smiley Button addon. That is probably a lost cause, it does not seem to be actively maintained and I certainly do not have the time to concern myself with it. It just is not that crucial of a feature.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
Oh and Rocky OS is a fork of RHEL not Debian. I would never use anything as unstable as Debian on a server. Well it is not unstable, it just gathers to much dust. Perhaps to stable is the issue. It is fine for a workstation but I would never consider it for a server.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
One of my many challenges has always been that I insist on running Rocky OS 9, where the Friendica developers use Ubuntu server. I refuse to have anything to do with any product from Canonical. So, I will not use Ubuntu server. Because of that I have had to research on my own as my case was often not covered in the documentation and I have had to compile a lot from scratch because a library that was available on Ubuntu server's repo just was not available on Rocky OS repo. Though, it is worth the effort. Rocky 9 is a lot more solid than Ubuntu will ever be. I do not regret my decision there.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
Unus Nemo likes this.
@Plan-A̵̛͈̬̥̿͋̓͛̕
Yes, I pretty much use Fedora on my workstations and Rocky Linux on my servers. Rocky Linux is an enterprise class OS and yes it would make a poor daily driver for a workstation or laptop.
Alma Linux is another fork of RHEL though I prefer Rocky. Rocky aims to be as compatible with RHEL as possible. I am a RHEL developer and I do use RHEL on a home server for development. I can rarely notice the difference between being logged into Rocky or RHEL.
Yes, RHEL sponsors Fedora and RHEL is owned by IBM. So unlike a lot of other distros Fedora has a large contribution to work with a paid staff not just volunteers. Some people consider this a negative attribute. I like it. Because we have the benefit of both worlds. Do not get me wrong I love Debian as a project. They are entirely volunteer maintained. Though for my uses there idea of stable translates directly to stale. Which is why I no longer use Debian. By the way, the reason I hate Ubuntu and all Canonical projects is not because they are a corporate driven distro. I use a corporate driven distro (fedora). It is because of their choices to consistently turn their back on the Open Source paradigm in preference to their profits that drove me away. For instance Unity built on Compiz verses Gnomes default Mutter. Which is why I never used Unity on Ubuntu I always installed a clean Gnome environment. The Mir v Wayland war was what chased me away. Mir would have been entirely in the control of Canonical. If it had won and not just been a failed project of Canonical then all modern desktops that did not resort to still using the legacy and really outdated X system would be controlled by Canonical, which is exactly what they were driving for in my opinion. I was all to happy to leave that type of manipulation and deception behind.
Fedora works as a staging ground for future RHEL features. Fedora is actually upstream of RHEL not the other way around. It goes Fedora -> Centos -> RHEL. RHEL aims to be a rock stable Enterprise class OS and it has achieved that. Centos has changed rolls over the years since RHEL repurposed it. Which is where Rocky and Alma came in to fill the spot Centos left behind.
There are other corporately funded distros though Fedora is the only one that I know of left to their own devices to just grow. Others are always a direct product of a corporation to try to have their distro for their product line. Fedora stays committed to the FOSS ideology as their funding does not require them to support a particular corporate goal. It literally is just a play ground to raise up new projects that might someday pass down stream to RHEL.
Take care bro!
pistolero likes this.
Unus Nemo likes this.
Unus Nemo likes this.
No, that is not a fortune, I specifically generated it. I have two scripts. One uses fortune the other prints what I type in.motd
#!/usr/bin/env bash
date "+Gregorian Date: %x, Julian Date: %g-%j, Time: %R" | lolcat -b
echo
figlet "Hello $(whoami | perl -e 'print ucfirst(<>);')" | lolcat -b
fortune -a | cowsay -f dragon | lolcat -bnemosay#!/usr/bin/env bash
[ "$DATE" = "YES" ] && {
date "+Gregorian Date: %x, Julian Date: %g-%j, Time: %R" | lolcat -b
echo
}
figlet "Nemo Dragon" | lolcat -b
printf "$*" | cowsay -f dragon | lolcat -bbecause I did not want to write a command line parser to sort out arguments to decide whether to print the date line or not I used the construct:
[ "$DATE" = "YES" ] && {
date "+Gregorian Date: %x, Julian Date: %g-%j, Time: %R" | lolcat -b
echo
}bash (or zsh) you can do this by preceding the line you are invoking with the environmental variable eg.$ DATE="YES" nemosay 'How are you today'You will note the the motd prints Hello Nemo (Nemo being my user name with a capital first letter) where nemosay prints out Nemo Dragon.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
Unus Nemo likes this.
I love Open Source. It frees you to fix issues and not just file bug reports and hope someone fixes the problem that is keeping you from being productive. I recently installed Eloquent proofreader from flathub to help with some tasks. Well it turns out that one of Eloquent's baked in dependencies fastText was an older version and was crashing on launch from the flatpak version of the app. But that did not stop me.
I did some searches and forked Eloquent on GitHub. I then also retrieved its two main dependencies, fastText and languagetool. I did not have to have a local languagetool, but I like working completely local when possible. So I built the three projects, put them together and installed them on my system. Which is a lot more solid than the flatpak version. I also now have a local languagetool to use with LibreOffice to boot 😉.
You do not get to have all this fun fixing your issues on proprietary systems. You just wait to see if anyone else will fix it for you. Which often just does not happen.
like this
Plan-A̵̛͈̬̥̿͋̓͛̕ reshared this.
What the hell god of picayune minutiae did I offend that the HR robots insist I take sexual harassment training for the second time in three months?
I. WORK. FROM. HOME!
Maybe they think I've got my eye on the printer?
Unus Nemo likes this.
I feel this...
[!upload-image.png]
Company behind ChatGPT says agent ‘cheated’ an evaluation by attacking a Hugging Face databaseDan Milmo (the Guardian)
Of course as usual my build will be with older tech as there is no way I could afford to do a build on this scale using modern tech. As it is it will likely exceed $5,000.00 USD by the time I am finished. With modern tech it would be more like $50,000.00 USD so that is out of my league budget wise.
Of course seeing those or only 5 gen CPUs you probably already figured that much out 😉.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
Just to give you an idea, the PSU (Power Supply) alone will be around $700.00 USD , 256 GB DDR4 ECC memory around $1300.00 USD and about $200.00 USD for the Mother Board. I am not even going to look at potential AI GPU until late in the build. As their prices fluctuate significantly. Though I am going to get 2 and they will mostly likely be around $1,800.00 USD a piece.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
As you can probably tell, I am pretty excited about this build. Though it will take 6 to 8 months on my budget 😀.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
Yes, my last build was under $1,000.00 USD for this workstation. Though to build my server is going to be a bit more pricey.
Keep in mind all my builds tend to use older tech that would not even run MS/Windows because they call it obsolete. Though it powers some amazing rigs that put a lot of off the shelf systems today with MS/Windows to shame.
I will likely drop around $5,000.00 USD or more on this build but if you just went out and bought an equivalent server it would set you back about $30,000.00 USD so it is not like I get nothing for my effort.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
OK, knowers of arcane and esoteric stuffs, here's your challenge: I have a presentation framework data grid, and I'm trying to make an ancient ADO recordset it's datasource. I'm trying now, because after months of working, it magically stopped working after somebody fiddled with the code, but I can't for the life of me figure out what they set wrong.
I've checked the structure and contents of the recordset 6 ways from Sunday, and I'm absolutely certain it contains a large amount of data, but when I set it as the datasource for the grid, the grid updates column names, but doesn't show any data!
I've rewritten the code three different ways now, and it's always the same failure.
Got any thoughts, "The Internet"?
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
The folk song "I Am a Poor Wayfaring Stranger" was performed by Jos Slovick in the film 1917, directed by Sam Mendes. The a cappella version of the song was ...SonySoundtracksVEVO (YouTube)
Written by Roland OrzabalPerformed by Michael Andrews featuring Gary JulesDirected by Michel GondryOriginally Appears on the Donnie Darko score album by Ever...Gary Jules Official (YouTube)
youtube.com/watch?v=8Gj2MCf2G8…
Roze said quote " It's time to make a mess"
dEUS - Roses (1996)This video is taken from the 2001 dEUS 'No More Video' DVD. '(For the) Roses' is available on the 1996 dEUS album 'In A Bar, Under The Sea...dEUSbe (YouTube)
Unus Nemo likes this.
Unus Nemo likes this.
Never look directly at the onion and do no breath through you nose. I realize that 😉. I was making a joke.
Plan-A̵̛͈̬̥̿͋̓͛̕ likes this.
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.BBC Studios (YouTube)
Unus Nemo likes this.
Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.jfcedl1 (YouTube)
Coquillage Logs likes this.
Unus Nemo
in reply to Blaise • •@Blaise
I checked a while ago to see that it still existed. Though i have never used Myspace for anything more than to help my son setup (pimp) his profile. The largest fundamental mistake Mike made was to allow the bug that allowed css injection to become a feature. The number one thing that lead to FaceBooks success was the stable consistent UI (User Interface).
You ask people what is more important stability or the ability to express their individuality a lot are going to say the later. In software the first is more important. This is the whole reason frameworks that give a common interface are used today. Unlike in the wild wild west when everyone wrote their own framework.
People left Myspace for FaceBook because facebook gave a unified interface that once learned remained consistent. The fact that on Myspace an individual user could move around virtually everything including system menus meant that going to someone else's profile could feel like an entirely different interface you had to learn all over again. This was awesome for kids, they loved to play with it. It is what caused a large migration of older people just trying to stay in touch with their family to find refuge in a more consistent and thus in their eyes more stable Facebook. It is one of the very few things FB ever did right. To bad they screwed up in all the other categories as soon as they became the largest and defacto Social Media platform on the Internet.