Countervailing agitprop on treasury dumping

Frank said

The Wall Street Journal’s Greg Ip tried to make sense of it. Existing inflation “might be part of the explanation” for why capital is not fleeing to the traditional safety of U.S. bonds, but that fails to explain the apparent lack of faith in the Federal Reserve’s ability to come to the rescue. “Technical factors” like hedge funds shedding their bond holdings are similarly unsatisfying. “The more fundamental explanation is that global investors might be changing how they view the U.S,” he wrote. In cruder terms, our allies and partners abroad think we’ve lost our minds, and there are few indications that sanity will be restored anytime soon.

We’re not yet even talking about foreign adversaries like China, supposedly the target audience for our exercise in economic masochism. “There were recent fears that China might try to retaliate against Trump’s tariffs by selling some of its own bond holdings,” Ip noted. “There is no evidence that it has, but the possibility has highlighted the risks to the U.S. of a trade war morphing into financial war.”

You read that right: Not only has China held in reserve its own economic weapons in a global trade war that has so far primarily rattled America’s allies, but our deteriorating position also provides China with even more leverage over the administration than Beijing had just two weeks ago. That might explain why the Trump administration isn’t waiting around for Beijing to make the first overture in trade talks. Trump is asking Xi Jinping to request a phone call from the White House — presumably so the president can save as much face as possible as he engineers a retreat from the conflict on which he embarked wholly unprepared. (1)

For every seller of a treasury security there is a buyer.  If they dump their securities, the buyers get a good deal because fund will obtain the PAR value and an increased yield.  The Chinese dumping treasuries would be beautiful for people who wanted to earn a good interest rate on their capital by investing in American government bonds. The commenters making waves about the Chinese body politic selling their treasuries are selling pablum.

Convincing the American people that neither they nor their children deserve a good return on bonds and savings accounts is the worst thing about the about pablum economics lesson pushers. No American hurt from the tariffs because the money wasn’t even collected for them yet.  The heavily capitalized funds tanked the stock market to terrify people.  The Wall Street Journal is on the side of the outsourcers and always has been. It once was a great information source for those who wanted to be informed.  It has turned into agitprop but still has useful headlines about CEO changes, lawsuits, and the like. It is turning into NPR for the literati.(2)

 

 

1. https://open.substack.com/pub/coffeeandcovid/p/counter-intelligence-friday-april?utm_campaign=comment-list-share-cta&utm_medium=web&comments=true&commentId=108011028

2. https://open.substack.com/pub/coffeeandcovid/p/counter-intelligence-friday-april?utm_campaign=comment-list-share-cta&utm_medium=web&comments=true&commentId=108054614

The Non Literal Baptists

Michael Licona, Associate Professor of Theology at Houston Baptist University, published a shocking view from his book, The Resurrection of Jesus: A New Historiographical Approach. He claims that the passage in Matt. 27:52-53 describing the raised saints coming out of their graves is apocalyptic imagery injected into the narrative and not a literal assertion of fact. He discussed this view during a round table published by the Southeastern Theological Review [1]:

As I broadened my reading in the Greco-Roman and Jewish literature of the period, I began to observe numerous reports containing phenomena similar to what we find reported by Matthew at Jesus’ death. The frequent mention of darkness, apparitions of the dead, the earth shaking, and celestial phenomena peaked my interest. I wondered whether these things reported by Virgil, Dio Cassius, and Josephus were all intended to be understood as events that had occurred in space-time. Or were they an ancient literary device—“special effects”—meant to ac-centuate an event of cosmic, even divine significance?2 So, it appears that this ancient practice continues in some locations to this day.

Then I observed similar phenomena in Acts 2 when Peter ad-dressed the crowd, saying the speaking in tongues they were witnessing was in fulfillment of Joel 2. He goes on to list other phenomena men-tioned by Joel, including wonders in the sky involving the sun going dark, the moon turning to blood, and signs on the earth such as blood, fire, and smoke. Joel concludes by saying that in that day everyone who calls on the name of the Lord will be saved. Peter then testifies how Jesus performed wonders and signs while among them. He rose from the dead and now they should call upon His name for salvation. Similar phenom-enal language appears in Jesus’ Olivet Discourse in Matthew 24 where the sun and moon will go dark and the stars will fall out of the sky. Many evangelical scholars interpret the celestial phenomena in Acts 2 and Matthew 24 as apocalyptic symbols with no corresponding literal events involving those celestial bodies. I became persuaded that the raised saints in Matthew 27 belonged to the same genre.

1. Akin, Danny, Craig Blomberg, Paul Copan, Michael Kruger, Michael Licona, and Charles Quarles. “A Roundtable Discussion with Michael Licona on The Resurrection of Jesus: A New Historiographical Approach,” 2012. (PDF)

Data Science Time Warp Machine

Fedora 38 freezes up and crashes sometimes when using Gnome on bare metal.  This may be the result of Gnome reliability issues.  In a previous article I detailed creating a massive repo of Fedora 38, and I still have it.  I will not delete the 238GB repo because Fedora 40 is the last one with Python 2.7 in the repositories.  They elected to completely remove it in Fedora 41 and beyond.  I created some software in Python 2.7 that may never make it to Python 3 because I will be an old man by the time I could complete the conversion relative to my available time in the present day. I had migrated from bare metal to WSL with Fedora 36 a few years ago. I had created my own WSL instance using the Fedora 36 cloud init image, and then upgraded it over the years to Fedora 38 and then ceased updating it.  WSL crashes and cannot be relied upon to run tasks that require many hours of continuous processing.

WSL really was wonderful for development and running Linux applications with underlying Linux features.  I used it for development using Pycharm.  The problem is that I would often return after 12 hours and see a message that the terminal could be closed with a CTRL + D which indicated that the service had stopped for some reason.  I suspect these occurred when available RAM conflicted with the /dev/share features of Linux.  Troubleshooting it would take too long. I don’t trust the releases from the Windows store because forced updates in Windows can take features away or cause unexpected problems.  I upgraded my Windows 11 home desktop to Windows 11 Pro specifically so I could disable Windows automatic updates via group policies, service disablement, and registry modifications that fail to stop auto updates on Windows 11 Home.

To create a long use time capsule of sorts, I decided to switch to Alma Linux 8 from Fedora 38.  Alma Linux 9 follows the tradition of RHEL 9 and removes the easy support for Python 2.

I setup Alma Linux 8.10 Cerulean Leopard, installed from the KDE live DVD, and installed r Studio server to access via web browser.

edit /ect/dnf/dnf.conf and add keepcache=True

dnf install epel-release    
dnf config-manager -enable powertools    
dnf install R    
dnf install python2

The python2 install installs pip2.7 automatically. One calls pip2 via the pip2.7 command.

As regular user the following is required for a script I made because parsedatetime changed after version 2.5 and is no longer compatible with the previous versions.

pip2.7 install parsedatetime==2.5 --user

• Install rstudio-2024.12.0+467-1.rpm from direct download

• Install rstudio-server-rhel-2024.12.0-467.rpm from direct download

systemctl enable rstudio-server

Configure the firewall to allow 8787.

usermod -a -G rstudio-server <username> 
setenforce 0

The last instruction to turn off SELinux is temporary until I can ascertain the specific rules that will need modification to allow it work. With SELinux enforcing with the initial configuration, the server cannot be accessed via web browser remotely

Gardening from containers other self-reliance

This post contains some YouTube videos that may become necessary for some things that I anticipate doing in the future.

How do it yourself basic auto foam repair1 provides a great demonstration of filling a damaged car seat with replacement foam.

Growing Strawberries in Plastic Bottles2 demonstrates how to grow strawberries in hanging bottles.  This video really interested me.  Last year I planted some strawberries and strawberries produce daughter plants and require an intensive amount of cultivated land if one intends to grow them at ground level.  This works very badly if one is attempting to grow them anywhere near grass that needs to be cut with a lawn mower.

Sunchokes – from garden to gut3 includes an incredibly wonderful pickling recipe that requires no heat.  More research on this is necessary to insure detailed plans and safety.

How to Make Flat Bread4 demonstrates a great and simple way to make flatbread cakes.

Root Depths of various garden plants5 provides a great estimate of some fruit depths and generally agrees with Larry Hodgson’s version, but Larry’s has a few more plants and estimates different root depths for a few of them.6

The following relate so an old book.  This is not medical advice, and I am not a medical practitioner.

Dietetics for Nurses by Fairfax T. Proudfit, 1918 contains details of enzymes in the human body.  This book also contains tables of foods and percent of carbohydrates.  This book contains extensive details and dietary plans used early in the previous century for many medical ailments.

A recipe for nut cream to use in place of butter is found in Food Remedies Facts About Foods and Their Medicinal Uses by Florence Daniel, 1908:

”…nut-cream for brain-workers. Pound in a mortar, or mince finely, 3 blanched almonds, 2 walnuts, 2 ounces of pine kernels. Steep overnight in orange or lemon juice. It should be made fresh daily, and may be used in place of butter. ”

You Won’t Believe This Potato Trickshows how to grow potatoes from planter containers. How I Grew 450 lbs of Potatoes In Just 200 sq. Ft8 contains a great example of a wooden support system for the plants.  The plants sit in the containers on the ground and grow up through the wooden stakes.

Using a container like a miniature greenhouse will boost growth rate.  One Square Foot is the recommended space for sweet potatoes.  Turn One Sweet Potato into 100LBS of Sweet Potatoes is a great video on how to manage sweet potato slips.9

Today I picked up Yukon Gold Potatoes, Pontiac Potatoes, Red Onions, White Onions, and Yellow Onion bulbs in preparation for the upcoming gardening season.

 

1. How to Do It Yourself Basic Seat Auto Foam Repair DIY, 2023. https://www.youtube.com/watch?v=N14VbKUdctk.

2. Growing Strawberries in Plastic Bottles – Surprising Results!, 2024. https://www.youtube.com/watch?v=HjW3ZWkLyHU.

3. Sunchokes – from Garden to Gut (Permaculture Living Non-Monetised), 2020. https://www.youtube.com/watch?v=l7xHhRIwISQ.

4. How To Make Flat Bread – The Oldest Bread In The World – Perfect Survival Bread!, 2021. https://www.youtube.com/watch?v=S6BHwAoljng.

5. Ly, Linda. “How to Find the Root Depth of Vegetables (Chart Included).” Garden Betty, March 6, 2020. https://gardenbetty.com/how-deep-are-the-roots-of-garden-vegetables/.

6. Hodgson, Larry. “Root Depth for Vegetables.” Laidback Gardener (blog), May 21, 2020. https://laidbackgardener.blog/2020/05/21/root-depth-for-vegetables/.

7.  You Won’t Believe This Potato Trick: 235 Lbs in 200 Sq Ft!, 2020. https://www.youtube.com/watch?v=JrytUqXE9Ns.

8. How I Grew 450 Lbs of Potatoes in Just 200 Sq. Ft. (You Can Too!), 2023. https://www.youtube.com/watch?v=AYdC60Hvxow.

9. Turn ONE Sweet Potato Into 100 LBS Of Sweet Potatoes By Growing SWEET POTATO SLIPS! [Complete Guide], 2022. https://www.youtube.com/watch?v=0igp5IzO21g.

Blog code and general code release note system

Today’s site updates including removing the RSS feed links. Kinsta provided source code.1  The code for functions.php to remove it is:

remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );

Kinsta also provided another very useful function2 and that was one that removed the various update notifications in the dashboard.

function kinsta_hide_update_nag() {
remove_action( 'admin_notices', 'update_nag', 3 );
}

add_action('admin_menu','kinsta_hide_update_nag');

Another very useful function for WordPress is one where you may add additional mime types for upload to the library.  This is useful for uploading compressed archives in different formats. Chris Meller’s venerable blog provides the source.3

add_filter('upload_mimes', 'custom_upload_mimes');
function custom_upload_mimes ( $existing_mimes=array() ) {

	// add your ext => mime to the array
	$existing_mimes['xz'] = 'application/x-xz';
        $existing_mimes['zip'] = 'application/zip';
	$existing_mimes['xml'] = 'application/xml';

	// add as many as you like
	// and return the new full result
	return $existing_mimes;

}

Somewhere along the way I picked up the following items to use as release notes within the scripts that I create.

E.g. 11/05/2024: [*] Changed URL to 1.1.1.1 from 8.8.8.8

[+] = Added
[*] = Changed  
[^] = Moved  
[=] = No Changes  
[x] = Deleted  
[!] = Bugs  
[_] = To Do  
[>] = Migrated  
[<] = Migrated

1. Kinsta®. “WordPress Disable RSS Feed,” August 30, 2016. https://kinsta.com/knowledgebase/wordpress-disable-rss-feed/.

2. Kinsta®. “How To Disable WordPress Update Notifications (Plugin or Code),” July 4, 2022. https://kinsta.com/knowledgebase/disable-wordpress-update-notification/.

3. Meller, Chris. “Modifying Allowed Upload Types in WordPress | Chris Meller,” July 26, 2007. https://blog.chrismeller.com/modifying-allowed-upload-types-in-wordpress.

The liberal eight, plus two

A ranking of counties is a serious undertaking with many different paths that one might embark upon to complete the work. The output could be considered software. Software design works best when one has a metaphor. The metaphor in this one is that of a parent deciding where to move in one of the following scenarios 1) around their child’s sophomore year in high school, 2) just after the child graduates high school, and 3) later in life when the child wants to attend college or work in their twenties. The reasons to do this vary, but generally can be summed up as ensuring a paid for college option if so desired, ensuring an intelligent pool of potential mates, offering a potential source of fulfillment for the parent as they age. Moving somewhere becomes a strategic matter with regards to wildly different labor markets and costs.

The funding of college should be the prime factor in deciding where to move. Many such programs have funding that might cease to be available in the future. Children might not want to go to college. The reason for this as the factor in determining the states is because it demonstrates a commitment to equal protection under the law. Universal higher education funding demonstrates it by offering the programs to all students and without regard for program preferences. Universal higher education funding demonstrates that the people of the state care about the young. That is not to say the states have everything in order. Tennessee for example is a well known for privation in certain segments of its economy economy, as is North Carolina. Montana has high suicide rates. New Jersey makes people think of Ben Affleck.

These states were selected because they offer universal higher education funding without regarding to the specific program selected. This selection is a subset of states that guarantee higher education funding, however many states require specific programs. These programs often purport to be high demand areas, yet the labor environment disagrees. For Example, Kentucky claims that information technology is a high demand career field, yet there are areas with a quarter of a million people in them, where one would be lucky to find five job postings for a systems job per year. There are more system administrators in one large city in Pennsylvania than the entire state of Kentucky, yet thousands of Kentucky students are told that information technology is a high demand career within the state. This is but one example. The same issue will arise in other states.

New York offers a program, but is not in the list because it incentivizes sociopathy. Wisconsin offers a program, but its continuation is determined on a per year basis and the state seems to be a contributor to the national schizophrenia. Maine and Connecticut have programs that match the criteria but they eliminated religious exemptions to vaccination. No one who loves their children should move to place that will not allow one to opt out of placing the child into a premature death lottery without the possibility of exemption for reasons of morality.

Kentucky is here due to a confluence of factors that make it uniquely interesting. E.g. one of the nation’s lowest Gini Coefficients, poor social indicators of health, labor market issues, long time spans of overwhelmingly one-party rule, with each party having taken decade long turns at the wheel, a unique position as the only state where public sector employees outnumber private sector employees, etc. In a way it is the most communistic if one considers communistic to mean that the government controls the means of production – as in the government furnishing the voter with a paycheck. That was as of my last research on the subject, but more detail will appear on the subject later.

North Dakota is here because it is apropos of the maxim “If a man wants a job, he can have one”. I lived there. My favorite economics professor is there. It’s a good place if you will risk frostbite in less 5 minutes at 50 degrees below Fahrenheit in order to live somewhere apropos of the mentioned maxim. They also have good fields and excellent bird watching opportunities.

This project will take a long time. It is a labor of love largely for myself, and one which others may take pleasure from. It may also provide useful intelligence for political activism and policy debate. Massachusetts is very costly. One of the interesting things to ascertain is whether people from less affluent places could even manage to move there in the first place. Michigan has a large Islamic contingent growing and that may prove to be a confounding variable when analyzing historical data. New Jersey is a land of high wages and UFOs, North Carolina is a red state with opposition to unemployment insurance. Over the first few counties, I will find some good information that transfers easily between analysis. Good data sources may vary between states. For example, many states suddenly hid all their vital records data such as births and deaths after 2021. The analysis will vary. My ultimate goals include formulas for the cost of housing, the probability of find a job in particular fields, and even an estimate of the probabilities that given job would have rest periods like 10 or 15 minute breaks in addition to a lunch break.

States very greatly. My non-maxed unemployment insurance in North Dakota 10 years ago was more than the 150% of the maximum unemployment insurance available in North Carolina or Kentucky a decade later. Kentucky mandates lunch and rest periods because of some hard work by the originators of the name redneck almost 70 years earlier. A similar situation exists with Massachusetts social benefits like unemployment insurance relative to those in some of the other states. The term liberal relates to the posture toward the education benefit. Some of the states in the list are profoundly illiberal in other areas. Merely offering an education program in no way assures the state’s counties’ greatness relative to another state’s.

The final states for the ranking of counties are Massachusetts, Michigan, Tennessee, Vermont, Georgia, Montana, North Carolina, and New Jersey, plus North Dakota and Kentucky. These are the Liberal 8 plus North Dakota and Kentucky.

The Edison method and a ranking of counties

The Edison method serves me well in life. It worked to stop smoking. It worked for other commitments. The Edison method is to simply announce what you will do let your integrity and shame avoidance drive you to accomplish the goal. Thomas Edison used the process when he announced what he was to invent in the future. With that in my mind, the name of this collection will change to “A Ranking of Counties”. This will become an aggregate of data and analysis regarding numerous counties in the United States.

One may recognize an allusion to “A Ranking of States” by H. L. Mencken. Mencken’s ranking of states was a legendary work which still remains readable and informative in the present day. The ranking of counties will have a similar aim albeit with a slightly different focus. The mission is this case is to function as a resource for trans-generational migration. Trans-generational migration means relocation for the betterment of one’s children and to help ensure future generations survivability through geographic location selection which best supports the continuance of the family line.

The analysis on where to place one’s future descendants will lead to some uncomfortable realities. Economics is called the dismal science after all. For example, the early death rates in almost every Kentucky county skyrocketed at the same time. What relationship might explain things like that? Those kinds of questions will be answered with data, hypothesis tests, probabilities, charts, and historical context.

A name will be introduced for the set of states containing the counties which will be analyzed. The name is the Liberal n where n is the number of states selected. In similar fashion to the G7 or G8 in the global environment, the Liberal 7 or Liberal 8 will refer to the states in this environment. The final number may not be 7 or 8, that is for example. There will also be a plus two, which consists of North Dakota and Kentucky. The analysis by county will consist of everything from employment and housing features to suicide probabilities and local colleges. The ranking is not the same as those rankings one sees about the best colleges or best town, but about the best place to plant descendants. Some of the data types that will likely be included will include sample data related to work and life conditions as reported by people in those counties. Readers may suggest counties of interest and I may review those counties at some point. Countering confirmation bias is an important task in any endeavor, so counties outside of the Liberal n may be studied for comparison.

Economics is the study of how humans allocate resources. In olden times the field was called political economy. The terms were split into politics and economics by university wanting to distinguish classes between trade oriented and government operations. The Bible contains numerous sections related to decision making around resources. Some articles in this collection may relate to prophecy and events because the events affect the economics of individuals. This work is about the making of decisions and not about the idolatry of wealth or politicians. It is impossible to separate morality, amorality, and immortality from decision making about resources. Therefore the work assumes a moral dimension. Some articles may analyze the the views promulgated by others because such views often play a role in individual decision making.

The next step in the ranking of counties will be the official identification of the liberal states for purposes of the project.

Monitoring network connections on Linux

Here is a great TCP/UDP Port finder tool.   This was useful for finding out which port “cbt” was in my Iftop listing.  It was 7777, which was in use for the Unreal Engine on an Ark: Survival Evolved game server. Iftop is the best real time network monitoring tool for Linux that has graced my system to date — or so it seems until one finds Iptraf. Iptraf is another excellent tool for monitoring network traffic in real time.  The Iptraf manual is here.  Netstat wasn’t suitable for this purpose due to the use of UDP as the main protocol.  Netstat is certainly useful, but no switches that I could locate would enable the program to show the UDP traffic in real time and the associated addresses of those connected to the server.  Iptraf shows the UDP traffic in a rapidly updating scroll box.  Iftop shows the traffic in an easy to read display that includes the address and hostname of the connected system.

This list doesn’t relate to more in depth management tools. This list is for easy console monitoring of a server running such games as ARK Survival Evolved.

Blogging like it’s 2006

I am blogging like it’s 2006 again. Countless people write about social justice and their experienced reality and they find praise and acclaim. I stifled my words for a long while because I believed that I would be even less able to find a job without stifling my words. My experience is valuable and would have served me well had it been in my possession prior to its acquisition.

Rebecca at Basics by Becca expressed her view on allowing the potential opinions of other people to dissuade one from following their own way. “Find out all the things that make your heart sing and go after them! It might be a little bit scary at first – but who cares? Don’t let other people’s opinions stop you from following what makes you happy. The more time we spend doing our passions, the easier it becomes to find our voice [1].” She further admonishes one to stop caring what others think about you. “This goes hand in hand with the last point – once you stop caring so much about what others think of you, you will start to feel a lot freer. It’s okay to make mistakes and it’s okay to be different! Embrace your authentic self and let it shine [1].” She recommends being bold, and letting go of the past.  The phrase about letting go of the past possesses great salience for me. “This one is hard but so important! Living in the past keeps us stuck and makes it impossible for us to find our voice because we are too caught up on what has already happened instead of living fully in this moment right now [1].” Other great action points including finding one’s tribe, expressing one’s feelings, and letting yourself be free. “Take off the mask and just BE YOURSELF with no apologies attached. Don’t worry so much about whether things are perfect or if people will judge you – just be yourself and don’t let anyone else define who that is. You are free to be anything you want, so take the time to figure out what makes you happy, go for it fully without apology [1]!” She says to be authentic: “Be honest about what matters most to you in life, because only by doing this can we be fully authentic. If society’s expectations are not on your list, ignore them and follow your own path[1]!”

Jennifer Hamady in Psychology Today mentioned that “Creativity is an imperative for a well-lived life [2].”

Sam Watson said “One of the advantages of writing blogs is that it can help to refresh and consolidate you thoughts on a topic. “ [3] His view coincides with my own.

Research has shown that writing about traumas improves time management over time. Dr. Pennebaker found that writing for short periods of time produce improvement, and writing for longer periods of time also produces improvements [4]. In an interview on the subject, Kim Mills asked “Do people have to write on a regular basis to see a really significant effect? Do I have to write something every day to really experience the benefits [4]?”

“Oh my God, no.” Dr. Pennebaker answered. “To give you an example, I write maybe two or three times a year when something miserable is going on. When I hear about journaling and writing every day, I just get nervous about it. I would hate that because I use writing when I’m dealing with something that is ugly, unpleasant, painful. And if life is going well, why in the world do I want to introspect that? I want to enjoy life when it’s here and when there’s bad things, writing for me helps me get through them [4].”

 

 

 

1. Becca, “18 Powerful Ways to Find Your Voice.”
2. Hamady, “The Truth About Creative Expression.”
3. Watson, “Geostatistical Modelling with R and Stan.”
4. Mills and Pennebaker, “Expressive Writing Can Help Your Mental Health.”

Install cron on Fedora 38

dnf install cronie
systemctl enable crond.service
systemctl start crond.service

Building an anti-bitrot bunker

When I first obtained a CompTIA A+ certification some time ago, the concept of bit rot related to what happens to software reliability as the number of updates to the system increases. Over time, software that worked in years past ceases to work as new system updates block system calls or change permissions and files that the software originally relied upon. This slow decaying of reliability was called bit rot. There are some other definitions floating around on the internet, but that is the one most relevant for me.

To prevent this and reduce the amount of time spent in sorting out the bit rot introduced to my investments by Microsoft’s proclivities, I have standardized on two operating systems for major time investments in computing that occupy my life.  Windows still has a place since I sometimes use Windows only games to play with my child.  Other than that necessity, I have built the things I rely on for use with Linux.  The two versions that I have standardized on are Debian and Fedora. Specifically Debian 12 and Fedora 38.  These are not what is used for the website, but they are the major components of my anti-bitrot infrastructure.  I am aware this may not be good security practice, but this isn’t to get me a job, this is to serve an aging man and his family reliably over time.

There are a few reasons that I selected Fedora 38 and Debian 12. Fedora 38 still has Python 2.7 in the repositories.  It was within 2 versions for upgrading from Fedora 36. Fedora 36 was what I was running in my Windows Subsystem for Linux instance, and I upgraded it to Fedora 38.   When deciding to move back to bare metal for my Linux software development and automation needs, I decided to standardize on that one.  Debian has a 32 bit version. I have both the 32-bit and 64-bit deployed in my network.  Debian 32 bit allows on to easily 32-bit builds of Java on a Linux server.  One can add the testing repository and have the latest Java in 32 bit form.  32-bit Java is necessary to run older Minecraft versions.  My family has a large set of mod-collections and old Java Minecraft instances and maps going back about 8 years. I can then run the latest JVM and the latest Minecraft on the same server because the 32bit JVM is available.  It is very annoying to try and  manage 32bit and 64bit Java virtual machines on the same host, so having it all 32-bit solves a huge problem.  One can add the Debian 11 repository and install Python2.7 if one wants to use old Python versions.  I need this old Python version for a project that I worked on over the course of the last 8 years.

The general anti-bit rot measure for Debian is to always use apt-get to install packages as this will leave the .deb file in the cache.  Then copy those .deb files on a regular basis to another location for use as a repository for other Debian installations.  This can be configured to work via a cron job.  Debian is really the only long-term viable game in town if one wants a 32-bit anti-bitrot bunker that will last into the future, over say, a ten year time horizon. Save the .deb files on a private web-server inside the network and periodically update that repository with the files copied via the sweeps from the cache directory.

For Fedora, this should work with any version.  Fedora 38 is the one I use.  Edit the /etc/dnf/dnf.conf file to say keep_cache=True, and this will save the dowloaded RPMS.  One can then build their repository using only what they need if so desired.  The other genuine long term standardization option is to mirror the entire repositories to the private webserver within one’s network.  To do this, install yumdownloader.   Then, move all of the .repo files from /etc/yum.repos.d except for one to a temporary location.  Then, go into a directory with a lot of space.  For Fedora 38, the complete mirror was 229GB.  Then use yumdownloader * and it will download all files from that repository.  Then, use yumdownloader –source * and it will download all source packages for the packages that it just downloaded.  Then, go back to /etc/yum.repos.d and switch that .repo file out with one that was moved previously, and repeat the process until all repositories have been completely downloaded.  Then, copy all downloaded RPMS to one large directory on the webserver and use createrepo to create the meta data.  Then on the client machines, create a .repo pointing to your own webserver, and move the existing .repo files in /etc/yum.repos.d to an archival location.   Then all of your installations will occur from your own webserver and all machines will have the same versions of packages.

In my case, I then install the data science specifics that I need for the automated software that I created.  The process varies slightly depending on whether the system is Fedora or Debian.

For Debian:

Add bullseye to sources.list
Install python2 via bullseye repositories
Install pip via the downloaded file from https://linuxhint.com/install-pip-on-debian-11/ that is to say,
1. wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
2. python2 ./get-pip.py
Apt-get install libcurl4-openssl-dev

R:
Install.packages(‘curl’)
Install.packages(‘fpp2’)
Install.packages(‘magrittr’)
Install.packages(‘urca’)
Install.packages(‘vars’)
Install.packages(‘psych’)
Apt-get install r-cran-rjava
Install.packages(‘rJava’)
Install.packages(‘xlsx’)
Install.packages(‘Hmisc’)
Install.packages(‘prophet’)
Install.packages(‘dplyr’)
pip2 install parsedatetime==2.5
apt-get install awscli
pip2 install boto3
apt-get install r-cran-car

Troubleshooting steps if .xlsx and others are not built:
Are all R packages installed successfully with a 0 exit status?

On Fedora, the repositories do not contain R components in the same way the Debian repositories do.  Here is the process for Fedora 38.

Used the script https://bootstrap.pypa.io/pip/2.7/get-pip.py
pip2 install parsedatetime==2.5 –user
dnf install libcurl
dnf install libcurl-devel
dnf install R
dnf install awscli
pip2 install boto3 –user
dnf install cmake

Within R:
install.packages(‘car’)
install.packages(‘curl’)
install.packages(‘fpp2′)
install.packages(‘magrittr’)
install.packages(‘urca’)
install.packages(‘vars’)
install.packages(‘psych’)
install.packages(‘rJava’)
install.packages(‘xlsx’)
install.packages(‘Hmisc’)
install.packages(‘prophet’)
install.packages(‘dplyr’)

Interlinear Greek New Testament

The Interlinear Literal Translation of the Greek New Testament with the Authorized Version (1897). This is an interlinear Bible with the Authorized Version (King James) along with a Greek text along with it.

A Caution of Claude AI

The Claude AI terms of service at Anthropic, as of 14 October 2024, say that

you may not use the service to “develop any products or services that compete with our Services, including to develop or train any artificial intelligence or machine learning algorithms or models.”

Claude’s terms further state

Equitable relief. You agree that (a) no adequate remedy exists at law if you breach Section 3 (Use of Our Services); (b) it would be difficult to determine the damages resulting from such breach, and any such breach would cause irreparable harm; and (c) a grant of injunctive relief provides the best remedy for any such breach. You waive any opposition to such injunctive relief, as well as any demand that we prove actual damage or post a bond or other security in connection with such injunctive relief.”

Machine learning includes linear regression. Other Machine Learning algorithms include Logistic Regression, decision trees, random forests, support vector machines, K-Nearest Neighbors, & Bayes Algorithms. It seems to me, that as of 14 October 2024, no one seeking to handle any data science can legitimately use Claude. They are driving toward Claude working as the replacement of human co-workers according to some of the latest marketing.  If the users are forbidden from using the results of the services to strengthen their own work, it seems like it will produce a walled garden without machine learning expertise within the businesses.

Greek letters

This is a list of Greek letters and their names.

α alpha
β beta
γ gamma
δ delta
ε epsilon
ζ zeta
η eta
θ theta
ι iota
κ kappa
λ lamda
μ mu
ν nu
ξ xi
ο omicron
π pi
ρ rho
σ/ς sigma/final sigma
τ tau
υ upsilon
φ phi
χ chi
ψ psi
ω omega

 

Holy Bible Geneva Bible – 1579

Holy Bible – Geneva Bible – 1579

Hydrogen Infrastructure

Zero Hedge reported on California launching a hydrogen hub infrastructure for hydrogen refueling infrastructure. https://www.zerohedge.com/political/california-launch-hydrogen-hub-expand-zero-emission-technology.  The California government’s official press release on the Hydrogen Hub was released 17 July 2024 at https://www.gov.ca.gov/2024/07/17/california-launches-world-leading-hydrogen-hub/. Clean Technica produced an article about the Hydrogen Hub grant program that covers multiple states.

This blog will follow Nikola and Hyla, which are available online at https://www.nikolamotor.com/ and https://www.hyla.co/. Nikola produces the TRE FCEV.

General Motors has a partnership with the U.S. Department of Energy and Honda for Hydrogen development. Hyundai has the XCIENT fuel cell truck. Kenworth has the T680. Like the Hyundai the T680 places the fuel tanks behind the driver from floor to ceiling.  The Kenworth is a partnership with Toyota with Toyota producing the fuel cell power plant and Kenworth producing the trucks.  All of these are limited to around 400-450 miles of range, with the exception of one of the XCIENTS which listed 400km, which is 248 miles. Hyundai has a class 8 truck in partnership with a company called Plus, and they claim to be fully autonomous.

Volvo has fuel cell trucks with a range of up to 1000 km.  International Trucks has a hydrogen fuel cell technology designed for routes 300+ miles in testing.  They use the General Motors fuel cell platform, and OneH2 mobile hydrogen production and fueling technology to bring the fuel station to the customer in a manner similar to Hyla.

Mistral Instruct using the above as Local Documents input:

The Hydrogen Hub infrastructure launched by California is an important step towards expanding zero-emission transportation options. With more refueling stations available, it will be easier for consumers to switch to hydrogen-powered vehicles and reduce their carbon footprint. It’s great to see multiple companies working together on developing hydrogen technology, including Nikola, Hyla, General Motors, Honda, Kenworth, Toyota, Volvo, International Trucks, and more. The range of these vehicles varies, but it’s clear that there is a growing interest in producing longer-range hydrogen fuel cell trucks.

Addendum 9/21/24:  Ford has a hydrogen vehicle in the works with an outsourced power train, but it was not included at the time of original writing.

Simon Says and use Mojeek

The Simon Says blog has been online for a long time. Here is an entry from 2008 about ripping CDs on a Mac.  In a way this site shows what is wrong with the web.  Twenty years ago blogs and websites had favorites and blog rolls.  Through this people discovered many great sites.  Around 2012 WordPress removed the Link Manager from the default WordPress and the blog-sphere began to fade away because the links began to fray.  From there, Google began to limit search results to the chosen few.  Recently Bing search has begun allowing scrolling to many different search results again. I went to page 16 the other day just to see.  To use a Search Engine like it’s 2009, which was way better than now, use Mojeek.  I hope they don’t break it.  That’s how I found that 2008 entry about ripping CDs on a Mac.  That is a discovery that one would never find on Google.  It was like stepping into a time machine.

Shrink Firefox Interface

Use about:config –> browser.uidensity .

browser.uidensity is set to 0 by default.  Changer the  value to 1 and it takes immediate effect.

VirtualBox Disk Conversion

To convert a dynamic VirtualBox disk to a Fixed disk, run the following command:

vboxmanage clonemedium disk /path/disk.vdi /path/newdisk.vdi -variant Fixed

using –variant Standard would create a dynamic disk.  Then open the virtual machine and remove the existing disk and attach the new disk.  Then use the media manager to delete the unused media.

Use the following command to list registered virtual disks:

vboxmanage list hdds

Browser Extensions

Chromium:

Joplin Web Clipper, Zotero Connector, floccus bookmarks sync, uBlock Origin, Quick Javascript Switcher, SingleFile, uMatrix

Firefox:

SingleFile, Copy PlainText, floccus bookmarks sync, Joplin Web Clipper, Passman, Search by Image, Tree Style Tab, uMatrix, Undo Close Tab, Web Archives

Debian 12 PATH and X11

A few quirks with Debain 12 include that path not being set in similar fashion to Fedora, Ubuntu, and other distributions.  One must regularly set

export PATH=$PATH:/usr/sbin

In Gnome, applications will open on the server instead of the client when using X11 forwarding.  This will occur even though xcalc opens on the client normally.  The way to avoid this is to add the following to .bashrc

unset XDG_RUNTIME_DIR 
unset GDK_BACKEND

The general rule is compress, then encrypt.1, 2

1. https://stackoverflow.com/questions/4676095/when-compressing-and-encrypting-should-i-compress-first-or-encrypt-first

2. https://crypto.stackexchange.com/questions/33737/is-it-better-to-encrypt-before-compression-or-vice-versa

Move /var to new disk

To add a new virtual disk and move the existing Linux partition to the new disk use the following process. The process assumes standard partitions without the use of Logical Volume Manager (LVM).

1. Backup the existing VM. One good way to do that is to clone the Virtual Machine and use the procedure on the new Virtual Machine.

2. Create the partition and format it.

$ mount /dev/sbd /mnt
$ shopt -s dotglob
$ rsync -aulvXpogtr /var/* /mnt
$ nano /etc/fstab

Add this line, replacing sdb and ext4 as necessary:

/dev/sdb /var ext4 defaults,noatime,nofail 0 2

Then

$ mv /var/ /var.old

Reboot and enjoy the new drive.

Install Java 21 in Debian 12

Minecraft Java edition lost compatibility with Java 17 between 1.20.4 and 1.20.6. Version 1.20.4 works with Java 17, and 1.20.6 no longer works with Java 17.  Several guides appear online for installing downloaded packages of the 64-bit runtime from Oracle or other sources.  Since Debian offers 32-bit server operating systems in the present day, the package manager versions are the easiest option if one uses the 32-bit version of Debian.  One of the reasons to use the 32-bit version of Debian is for use with older versions of Minecraft such as 1.10 and 1.12.  The older versions’ ecosystem contain an incredible number of mods.  The older versions require 32-bit java runtimes and the easiest way to handle that is to use a 32-bit operating system and then one can have newer versions of Java alongside older versions of Java and then one can run any version of Minecraft and Minecraft Forge that they desire.

Edit /etc/apt/sources.list to contain the following lines:

deb http://deb.debian.org/debian testing main
deb-src http://deb.debian.org/debian testing main

Then, run the following commands.

apt-get update
apt-get install openjdk-21-jre
java –version

https://wiki.debian.org/DebianTesting contains a good reference guide for using Debian Testing, including details on upgrading to the next distribution.  The approximate Java lifecycle can be found at https://www.oracle.com/java/technologies/java-se-support-roadmap.html.

Hypothesis test memo no. 1


1. R2 is the coefficient of determination, which is the square of the Pearson correlation coefficient, r, the formula for which is ρ=β1(σx/σy), where β1 is the parameter estimate. ASCI and Unicode text does not have a circumflex, ^, on top of the β. For this documentation the objective is multiplatform long-term readability so an equation editor with specialized support for circumflexes is out of the question.

2. There is also the existence of the rejection region method. We reject the null hypothesis if the test statistic’s absolute value is greater than the critical value, which we can express with the formula Reject if |t| > tα/2,n-1

Disable updates in Thunderbird

Open the Thunderbird program folder (e.g. C:\Program Files (x86)\Thunderbird)
create a new folder named distribution
Create a file named policies.json with the following content:

 

{
    "policies": {
    "DisableAppUpdate": true
    }
}

Thanks to sifferedd.

Print environmental variables in Bash

Use printenv to see what environment variables are set.

#!/usr/bin/env bash
printenv
    set -x

.nanorc in CentOS

Edit $HOME/.nanorc to contain the following:

include /usr/share/nano/java.nanorc
include /usr/share/nano/man.nanorc
include /usr/share/nano/nanorc.nanorc
include /usr/share/nano/python.nanorc
include /usr/share/nano/sh.nanorc
include /usr/share/nano/html.nanorc
include /usr/share/nano/perl.nanorc
include /usr/share/nano/php.nanorc

CentOS 7 uses a much older version of nano than the one that presently ships on most distributions. The php.nanorc on newer The following should appear in /usr/share/nano/php.nanorc on CentOS7 to allow syntax highlighting for php:

 

## Syntax highlighting for PHP

syntax "php" "\.(php[23457s~]?|phtml|ctp)$"

# PHP markings.
color brightgreen "()"

# Function names.
color white "\

The .bashrc file I use on CentOS6

The .bashrc file I use on CentOS6

 

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# system variables
export VISUAL=nano  # sets nano as the crontab editor
export GZIP=-9      # maximum compression
export XZ_OPT=-9    # maximum compressions

# ls modifications
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# calculator
calc() { echo "$*" | bc -l; }

# Generate a UUID
uuid() { UUID=$(cat /proc/sys/kernel/random/uuid) && echo $UUID; }

# CHANGE SHELL/WINDOW TITLE
# Works on Opensuse 15.3
# PS1=$PS1"\[\e]0;test1\a\]"
shellrename() { read -p "Enter new shell name: " name && PS1=$PS1"\[\e]0;${name}\a\]"; }

# For older versions of gnome-terminal
# shellrename() { read -p "Enter new shell name: " name && PROMPT_COMMAND='echo -ne "\033]0;${name}\007"'; }

# Zen Burn
# Another old way that works great in gnome-terminal while causing problems
# in some configurations involving SSH:
echo -ne '\e]12;#BFBFBF\a'
echo -ne '\e]10;#DCDCCC\a'
echo -ne '\e]11;#3F3F3F\a'
echo -ne '\e]4;0;#3F3F3F\a'
echo -ne '\e]4;1;#705050\a'
echo -ne '\e]4;2;#60B48A\a'
echo -ne '\e]4;3;#DFAF8F\a'
echo -ne '\e]4;4;#506070\a'
echo -ne '\e]4;5;#DC8CC3\a'
echo -ne '\e]4;6;#8CD0D3\a'
echo -ne '\e]4;7;#DCDCCC\a'
echo -ne '\e]4;8;#709080\a'
echo -ne '\e]4;9;#DCA3A3\a'
echo -ne '\e]4;10;#C3BF9F\a'
echo -ne '\e]4;11;#F0DFAF\a'
echo -ne '\e]4;12;#94BFF3\a'
echo -ne '\e]4;13;#EC93D3\a'

The best Alias for ls

The best alias for ls is

ls –halF

It is easy to remember, and produces easy to read output with human readable file sizes and / marks present by the directory names..

Install iftop on Oracle Linux 9

dnf install oracle-epel-release-el9
dnf install iftop

iptraf is already in the default repositories.

A good version of ll

A really good version of the ll alias is:

ls –lahF, although on some versions ls –lahp looks better than F.

LS alias and Mozilla DRM bar

Some useful aliases that are not always preconfigured on every Linux version:

alias ll=’ls -alF’
alias la=’ls -A’
alias l=’ls –CF’

To eliminate the DRM warning in Firefox and Librewolf without enable DRM, add this to “userChrome.css”:

 notification[value="drmContentDisabled"]{ display:none !important; }

toolkit.legacyUserProfileCustomizations.stylesheets must be set to true in about config.

Double Sided Scan and PDF

The following script scans PDFs via an auto-document feeder in Hp-Lip and then collates the pages to the correct order when there are reverse sides. No scans will be saved if no data is transmitted for the second set of scans. The second set of scans is the reverse of the pages.

#!/usr/bin/env bash

YMD=$(date +"%Y-%m-%d")
Y=$(date +"%Y")
WORKDIR=/home/username/Temp/
OUTPATH=/home/username/Scans/${Y}/
#  Create a folder, ~/Temp and create a folder, ~/Scans
mkdir -p "/home/username/Scans/${Y}"

hp-scan --adf --mode=color &&
PART=hpscan
LATESTSCAN=`ls -t ${PART}*pdf | sed "1q"`
echo "${LATESTSCAN} ready for ${FILEOUTPUT}"

#  Why you shouldn't parse the output of ls
#  http://mywiki.wooledge.org/ParsingLs 
#  This does not use the FILEOUTPUT variable itself because the cp command
#  seems to have trouble copying the file correctly, even with switches. 

# Thanks Elektropepi at https://github.com/qpdf/qpdf/issues/259
function pdfscanmerge() {
	if [ $# -ne 3 ]; then 
		echo "Usage: pdfscanmerge"; return; fi let odd_pages=$(qpdf --show-npages $1) let even_page=$(qpdf --show-npages $2) argument= for (( odd_page=1; odd_page0 ]; then argument+="$2 $even_page " fi let even_page-- done qpdf --empty --pages $argument -- $3 } cp ${LATESTSCAN} "$WORKDIR$1-uncompressed-scanned-${YMD}.pdf" gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -sOutputFile="$OUTPATH${YMD}-$1.pdf" ${LATESTSCAN} sleep 1 rm -f ${LATESTSCAN} rm -f "$WORKDIR$1-uncompressed-scanned-${YMD}.pdf" killall evince read -p "Load the reverse sides and press any key:" n hp-scan --adf --mode=color && PART=hpscan LATESTSCAN=`ls -t ${PART}*pdf | sed "1q"` echo "${LATESTSCAN} ready for ${FILEOUTPUT}" cp ${LATESTSCAN} "$WORKDIR$1-uncompressed-scanned-reverse-${YMD}.pdf" gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -sOutputFile="$OUTPATH${YMD}-$1-reverse.pdf" ${LATESTSCAN} sleep 1 rm -f ${LATESTSCAN} rm -f "$WORKDIR$1-uncompressed-scanned-reverse-${YMD}.pdf" killall evince pdfscanmerge "$OUTPATH${YMD}-$1.pdf" "$OUTPATH${YMD}-$1-reverse.pdf" "$OUTPATH${YMD}-$1-collated.pdf" rm -f "$OUTPATH${YMD}-$1.pdf" rm -f "$OUTPATH${YMD}-$1-reverse.pdf"

Automated Database Restart

Here is a script that checks to ensure the database is running and restarts the service if it is not running.  This was used on a very low memory server to ensure a database remained operational, despite it sometimes crashing due to out of memory errors.

#!/bin/bash

timestamp="$(date)"
systemctl stop httpd && echo "${timestamp}" Stopping Apache... >> /home/centos/administration/apache.log
systemctl is-active mariadb && echo "${timestamp}" MariaDB is active so not starting >> /home/centos/administration/mariadb_active.log || echo "${timestamp}" MariaDB is not Active >> /home/centos/administration/mariadb_inactive.log
systemctl is-active mariadb && echo "${timestamp}" No need to restart MariaDB || systemctl start mariadb
systemctl start httpd && echo "${timestamp}" restarting apache...>> /home/centos/administration/apache.log

AppImage Integration

To install AppImages and integrate them with the desktop environment like a conventional package,  use the AppImage Launcher. LibreWolf’s documentation contains a how-to document on using AppImage Launcher.

Thunderbird Row Highlighting

Revisions: 21 January 2024, first publication

The Thunderbird developers are moving to a new user interface code base for Thunderbird 115 and Thunderbird 102 is the last version that will work with the historical userChrome.css customizations. The userbase for Mozilla products has continually shrunk over the past few years and the chances of equivalent customization abilities being discovered and written about strike me as pretty low.  Because of the change, I have mirrored Thunderbird 102.14 for Windows and Linux in 64-bit and 32-bit versions in the event that the old versions disappear from the Mozilla site. The Source is available on the Mozilla mirror as of August 11, 2023.  The releases are located here.

The userChrome.css below allows the following persistent tag colors.  It also contains text customization for the interface.  And it contains alternate row highlighting, where one row is light grey and the other white.  The alternate row highlighting conflicts with the background colors for tags.  One must choose which feature to have. The userChrome.css goes in the profile directory in a subfolder called chrome.

Screenshot 2024-01-21 151250
The code for highlighting the tag backgrounds was found on a French website located here. E.g. C:\Users\username\AppData\Roaming\Thunderbird\Profiles\1a2b3cde.default-release\chrome

@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* set default namespace to XUL */
/* thanks to Jean-Claude, */
/* https://forums.mozfr.org/viewtopic.php?t=143173 */
/*Important tag IMPORTANT*/ 
treechildren::-moz-tree-row(T_24label1)
{
      border-bottom: 1px solid #FFFFFF !important;
      background-color:  #FF0033   !important;
}
treechildren::-moz-tree-cell-text(T_24label1)
{
      color: #FFFFFF !important;
}
treechildren::-moz-tree-row(T_24label1, selected)
{
      background-color: #b71c1c !important;
}
treechildren::-moz-tree-cell-text(T_24label1, selected)
{
  color: #00FF00  !important;
}

/*Travail tag   WORK*/
treechildren::-moz-tree-row(T_24label2)
{
  border-bottom: 1px solid #FFFFFF !important;
  background-color:  #FF9900   !important;
}
treechildren::-moz-tree-cell-text(T_24label2)
{
  color: #FFFFFF !important;
}
treechildren::-moz-tree-row(T_24label2, selected)
{
  background-color: #FF9900 !important;
}
treechildren::-moz-tree-cell-text(T_24label2, selected)
{
  color: #00FF00  !important;
}

/*Personnel tag PERSONAL*/ 
treechildren::-moz-tree-row(T_24label3)
{
  border-bottom: 1px solid #FFFFFF !important;
  background-color:  #009900   !important;
}
treechildren::-moz-tree-cell-text(T_24label3)
{
  color: #FFFFFF !important;
}
treechildren::-moz-tree-row(T_24label3, selected)
{
  background-color: #009900 !important;
}
treechildren::-moz-tree-cell-text(T_24label3, selected)
{
  color: #00FF00  !important;
}

/*A faire tag*/
treechildren::-moz-tree-row(T_24label4)
{
  border-bottom: 1px solid #FFFFFF !important;
  background-color:  #3333FF   !important;
}
treechildren::-moz-tree-cell-text(T_24label4)
{
  color: #FFFFFF !important;
}
treechildren::-moz-tree-row(T_24label4, selected)
{
  background-color: #3333FF !important;
}
treechildren::-moz-tree-cell-text(T_24label4, selected)
{
  color: #00FF00  !important;
}

/*Peut attendre tag*/
treechildren::-moz-tree-row(T_24label5)
{
  border-bottom: 1px solid #FFFFFF !important;
  background-color:  #993399  !important;
}
treechildren::-moz-tree-cell-text(T_24label5)
{
  color: #FFFFFF !important;
}
treechildren::-moz-tree-row(T_24label5, selected)
{
  background-color: #993399 !important;
}
treechildren::-moz-tree-cell-text(T_24label5, selected)
{
  color: #00FF00  !important;
}

/*test tag*/
treechildren::-moz-tree-row(Ttest)
{
  border-bottom: 1px solid #FFFFFF !important;
  background-color:  #FFCC33  !important;
}
treechildren::-moz-tree-cell-text(Ttest)
{
  color: #FFFFFF !important;
}
treechildren::-moz-tree-row(Ttest, selected)
{
  background-color: #FFCC33 !important;
}
treechildren::-moz-tree-cell-text(Ttest, selected)
{
  color: #00FF00  !important;
}

/* 9 August 2023 Additions */
/* Set Font Size In Folder Pane */

#folderTree >treechildren::-moz-tree-cell-text {
  /*font-family: Lucida Sans !important;*/
  font-size: 9pt !important; }

/* Set Font Size In Thread Pane */

#threadTree >treechildren::-moz-tree-cell-text {
  /*font-family: Lucida Sans !important;*/
  font-size: 9pt !important; }

#threadTree treechildren::-moz-tree-row    {
/*  border-bottom: 1px dotted grey !important;  */
  height: 24px !important; }

/* folder list spacing */

#folderTree treechildren::-moz-tree-row    {
  height: 24px !important; }

/* The silver background color on alternating rows */
#threadTree treechildren::-moz-tree-row(odd) {
  -moz-appearance: none !important;
  background-image: none !important;
  /* the !important property overrides previous styling rules */
  /* this line enables alternate color row highlighting, but
  tag backgrounds on this row cannot be highlighted.  Only one 
  background highlighting can be applied Disabled 9 August 2023
  to enable tag background highlights*/
  /* background-color:#F3F6FA !important; */

}

#threadTree treechildren::-moz-tree-row(selected) {
  background-color: -moz-Dialog !important;
}
#threadTree treechildren::-moz-tree-row(selected, focus) {
  background-color: Highlight !important;
}

#folderTree treechildren::-moz-tree-row(selected) {
  -moz-appearance: none !important;
  background-image: none !important;
  background-color: Highlight !important;
}
#folderTree treechildren::-moz-tree-row(selected, focus) {
  -moz-appearance: none !important;
  background-image: none !important;
  background-color: Highlight !important;
}

Functions in Bash

This is the code for a function in Bash script.

 #!/bin/bash
 # Define a function
 greet() {
 echo "Hello, $1"
 }
 # Call the function with "World" as the argument
 greet "World"

Looping through filenames in Bash

To loop through the subdirectories in a folder, when those subdirectories may contain spaces in the file names, use the following procedure.

OLD_IFS=$IFS && IFS=$'\n'
 for directory in $HOME/somefolder/*/; do
 echo “some code here”
 done
 IFS=$OLD_IFS

 

Bash and *nix Note no. 2

 

This document contains some notes on .bashrc for use with Linux systems.

alias ll=’ls -alF’
alias la=’ls -A’
alias l=’ls –CF’

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

The preceding two blocks come standard on Ubuntu as of version 2022.04. One tweak for WSL2 on Windows might be the addition of this line.

sudo bash “/etc/rc.local”

and in the rc.local follow, add the following.

#!/bin/bash
rm -f /etc/resolv.conf
echo “nameserver 1.1.1.1″ >> /etc/resolv.conf
echo “nameserver 8.8.8.8″ >> /etc/resolv.conf

This is because WSL2 may place non-routable IP addresses using 172… in resolv.conf. As of this writing, following steps recommended to disable the generation of the file fails to resolve the issue where the file is newly generated with every new terminal launched in Windows terminal. Having this run with each new Bash login ensures success with network communications.  The location /etc/rc.local may seem like an odd location for this.

The crontab to ensure to check each minute to ensure a virtual machine is running in VirtualBox is as follows.

*/1 * * * * VBoxManage startvm “VMNAME” –type headless
*/1 * * * * VBoxManage startvm “VMNAME2″ –type headless

If the virtual machine is already running, then it will not start a new copy of it. This is better than attempting to run the script via a system wide script after a reboot.  Running it this way allows a simple crontab for the user for whom the machine needs to run under. To run a script every five minutes, add the crontab as follows:

*/5 * * * * /home/USERNAME/nextcloudcron

In this example, the nextcloudcron script will run every five minutes.  This particular script is one for use contacting my Nextcloud instance for webcron.  It does not contain a .sh on the filename, because some implementations may disallow crontab scripts with file extensions.

The following checks inside a subdirectory and pulls in the files therein as bash sources. This is useful for breaking aliases, variables, and other items into different files.

if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do
if [ -f "$rc" ]; then
. “$rc”
fi
done
fi

The following uses nano as the crontab editor.

export VISUAL=nano

On Oracle Linux 9 on AWS, it is necessary to install Cronie to enable cron jobs.  To ensure this starts after reboots, add the following to /etc/rc.local.

bash /sbin/crond

To create a date line for a log file, use the following:

echo $(date) >> /home/USER/FILENAME

The Shebang for the top of bash files is

#!/usr/bin/env bash

To auto-update via DNF and leave a log of what was accomplished, use the following script.  The script will write a list of the updates to the systemupdates.log file, and then update the system with details of that process written to the dnfupdates.log file.

#!/usr/bin/env bash
echo $(date) >> /home/USER/systemupdates.log
sudo dnf check-update >> /home/USER/systemupdates.log
echo $(date) >> /home/USER/dnfupdates.log
sudo dnf update -y >> /home/USER/dnfupdates.log 2>&1

Baker’s solutions and another note

The “safe and effective” mantra of the past three years displayed the incongruence of published opinion and the present history. The reason the Vaccine Injury Program exists in the United States is because vaccines possess an unsafe designation in law (Baker, 2023). “In fact, the known toxicity of vaccines is so well-established that a Federal law – the National Childhood Vaccine Injury Act (NCVIA) of 1986 (42 U.S.C. §§ 300aa-1 to 300aa-34) was passed to specifically exempt vaccine manufacturers from product liability, based on the legal principle that vaccines are “unavoidably unsafe” products.” (Baker, 2023) By labeling the novel COVID mRNA products as “vaccines,” the definition of the term “vaccine” has become so broadened that essentially any medication that induces an immune response against a disease may now be dubbed a “vaccine,” thereby shielding pharmaceutical companies from liability under the National Childhood Vaccine Injury Act of 1986 to a previously unimagined extent. (Baker, 2023)

Diabetes will double by 2050 and the prime suspect seems like seed oils, with Omega-6 Linoleic Acid causing the most damage. [2] Not everyone agrees with Linoleic Acid acting as the villain in cardiovascular health. Some see it as the hero in prevention. The American Heart Association and researchers at the University of Minnesota School of Public Health recommended linoleic acid to reduce coronary heart disease events and death (Axe, 2022).

The mRNA injections were classified as Gene Therapy. The fact checkers flatly lied about that when claiming that they were not gene therapy. The statement “Currently, mRNA is considered a gene therapy product by the FDA.” appears in the Modern 10-Q statement for the quarterly period ending June 30, 2020. [4]

The fertility rate drastically fell short of prior averages in 2020. [5]

1. Clayton J. Baker, MD. “Solutions to Vaccine Troubles in Ten Sentences.” Brownstone Institute, July 24, 2023. https://brownstone.org/articles/solutions-to-vaccine-troubles-in-ten-sentences/. | Archive | Wayback

2. Lew Rockwell. “Diabetes Will Double by 2050.” Accessed July 27, 2023. https://www.lewrockwell.com/?post_type=pending-article&p=867379. | Archive | Wayback

3. Josh Axe. “The Fat That Helps Brain, Heart, Skin, Bone & Reproductive Health.” Dr. Axe, December 12, 2022. https://draxe.com/nutrition/linoleic-acid/. | Archive | Wayback

4. Moderna, Inc. “Quarterly Report on Form 10-Q,” June 30, 2020. https://www.sec.gov/Archives/edgar/data/1682852/000168285220000017/mrna-20200630.htm. | Archive | Wayback

5. Jeff Chapman, et al. “The Long-Term Decline in Fertility—and What It Means for State Budgets,” December 5, 2022. https://pew.org/3VfmME1. | Archive | Wayback

Bash and *nix Note no. 1

7 July 2023:
Ubuntu 22.04′s update notifier seems to not include the option to configure any settings, at least after certain conditions exist on a particular system.  To stop the notifier from appearing.  To stop the notifier from appearing use

sudo apt-get remove update-notifier

7 July 2023:
There are non-snap builds of ungoogled-chromium for Ubuntu

6 July 2023 and prior:

To disable automatic updates on Ubuntu:

sudo dpkg-reconfigure unattended-upgrades
sudo apt remove packagekit

In .bashrc create the following alias:

alias nano="nano -c --guidestripe 80"

This will open always Nano with line and column numbering along with a long line marker at the specified column. The long line marker feature works for Nano version higher than 4, which doesn’t include the version in the CentOS 7 repositories.

In .bashrc add the following line:

export DISPLAY=\
"`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"

This adds the IP address of the instance to the display variable for use with Windows Subsystem for Linux and VcXsrv.

In .nanorc add the following items. The first two lines are commented because the command line switch used in the alias for the line numbers creates no artifacts when using copy-paste.

#set linenumbers
#set constantshow

# https://www.nano-editor.org/dist/latest/nanorc.5.html
set guidestripe 80

include /usr/share/nano/autoconf.nanorc
include /usr/share/nano/patch.nanorc
include /usr/share/nano/nanorc.nanorc
include /usr/share/nano/groff.nanorc
include /usr/share/nano/awk.nanorc
include /usr/share/nano/man.nanorc
include /usr/share/nano/java.nanorc
include /usr/share/nano/sh.nanorc
include /usr/share/nano/po.nanorc
include /usr/share/nano/texinfo.nanorc
include /usr/share/nano/python.nanorc
include /usr/share/nano/perl.nanorc
include /usr/share/nano/pov.nanorc
include /usr/share/nano/ocaml.nanorc
include /usr/share/nano/tcl.nanorc
include /usr/share/nano/debian.nanorc
include /usr/share/nano/lua.nanorc
include /usr/share/nano/xml.nanorc
include /usr/share/nano/gentoo.nanorc
include /usr/share/nano/objc.nanorc
include /usr/share/nano/tex.nanorc
include /usr/share/nano/guile.nanorc
include /usr/share/nano/php.nanorc
include /usr/share/nano/c.nanorc
include /usr/share/nano/nftables.nanorc
include /usr/share/nano/spec.nanorc
include /usr/share/nano/elisp.nanorc
include /usr/share/nano/ruby.nanorc
include /usr/share/nano/go.nanorc
include /usr/share/nano/nanohelp.nanorc
include /usr/share/nano/default.nanorc
include /usr/share/nano/json.nanorc
include /usr/share/nano/css.nanorc
include /usr/share/nano/mgp.nanorc
include /usr/share/nano/asm.nanorc
include /usr/share/nano/mutt.nanorc
include /usr/share/nano/javascript.nanorc
include /usr/share/nano/postgresql.nanorc
include /usr/share/nano/rust.nanorc
include /usr/share/nano/fortran.nanorc
include /usr/share/nano/cmake.nanorc
include /usr/share/nano/makefile.nanorc
include /usr/share/nano/html.nanorc
include /usr/share/nano/changelog.nanorc

Using Tar and Gzip:

tar -zcvf output_file_name[.tar.gz or .tgz] directory_to_compress

tar -Jcvf output_file_name[.tar.xz] directory_to_compress
reads compression level for XZ from environmental variable, but note that xz utils is not installed by default on ubuntu 10.04

tar -xvf works to extract .tar.gz file created like in the above

The Tar and Gzip commands use compression settings specified in .bashrc

export GZIP=-9

export XZ_OPT=-9

Add the following to .bashrc for a console calculator:

calc() { echo "$*" | bc -l; }

For the ll alias, use the following in .bashrc

alias ll='ls -alF'

To change the terminal name use the following in .bashrc.  The command differs depending upon which version of Gnome one uses.

# For older versions of gnome-terminal
#shellrename() { read -p "Enter new shell name: " name && PROMPT_COMMAND='echo -ne "\033]0;${name}\007"'; }
# Works on OpenSUSE 15.3
#PS1=$PS1"\[\e]0;test1\a\]"
shellrename() { read -p "Enter new shell name: " name && PS1=$PS1"\[\e]0;${name}\a\]"; }

To obtain a uuid, add the following to .bashrc:

uuid() { UUID=$(cat /proc/sys/kernel/random/uuid) && echo $UUID;

Zen Burn color scheme for the terminal, but sometimes causes problems with work via SSH.

# Zen Burn
# Another old way that works great in gnome-terminal while causing problems
# in some configurations involving SSH:
echo -ne '\e]12;#BFBFBF\a'
echo -ne '\e]10;#DCDCCC\a'
echo -ne '\e]11;#3F3F3F\a'
echo -ne '\e]4;0;#3F3F3F\a'
echo -ne '\e]4;1;#705050\a'
echo -ne '\e]4;2;#60B48A\a'
echo -ne '\e]4;3;#DFAF8F\a'
echo -ne '\e]4;4;#506070\a'
echo -ne '\e]4;5;#DC8CC3\a'
echo -ne '\e]4;6;#8CD0D3\a'
echo -ne '\e]4;7;#DCDCCC\a'
echo -ne '\e]4;8;#709080\a'
echo -ne '\e]4;9;#DCA3A3\a'
echo -ne '\e]4;10;#C3BF9F\a'
echo -ne '\e]4;11;#F0DFAF\a'
echo -ne '\e]4;12;#94BFF3\a'
echo -ne '\e]4;13;#EC93D3\a'

Circa 2015: Adding Windows to CentOS 7 and Grub 2 after installing CentOS and no automatic configuration of Windows boot options. The file to manually edit is /etc/grub.d/40_custom.

menuentry "Windows 10 Professional" { set root=(hd0,1) chainloader +1 }

After editing, update Grub and reboot using the following command.

grub2-mkconfig –output=/boot/grub2/grub.cfg

The following shows one of the custom file contents circa 2018 or 2019 after some changes to installers and autodetection.

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the menu entries you want to add after this comment.
# Be careful not to change the 'exec tail' line above.
menuentry "Windows (system) (on /dev/sda1)" --class windows --class os { insmod part_msdos insmod ntfs insmod ntldr set root='(hd0,msdos1)' ntldr ($root)/bootmgr}

Minecraft Tweaks

To launch

java -Xms2048M -Xmx2048M --add-modules=jdk.incubator.vector -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -jar server-1.21.1.jar nogui

Courts are not eccliesiastics

Courts cannot determine whether a denomination or a group or someone wearing a label fits a particular ecclesiastical construct. That means that someone refusing a COVID vaccine on religious grounds as a Baptist could not be declared non-Baptist by a court since the vaccine-refuser failed to adhere to tenets of a specific denomination. [1]

1. https://reason.com/volokh/2020/12/11/are-mormons-christians/

Labeling variables in R

This great procedure makes it easy to remember what variables are related to in R. One of the troubles with exploratory data analysis is that when one has a lot of variables it can be confusing what the variable was created for originally.  Certainly code comments can help but that makes the files larger and unwieldy in some cases.  One solution for that is to add comment fields to the objects created so that we can query the object and see a description.  So, for example, we could create a time series called sales_ts, and then create a window of that, called sales_ts_window_a, and another called sales_ts_window_b, and so on for several unique spans of time.  As we move through the project we could have created numerous other variables and subsets of those variables.   We can see the details of those by using head() or tail(), but that may not be an extremely useful and clear measure.

To that end, these code segments allow applying a descriptive comment to an item and then querying that comment later via a describe command.

example_object <- "I appreciate r-cran."
# This adds a describe attribute/field to objects that can be queried.
# Could also change to some other attribute/Field other than help.
describe <- function(obj) attr(obj, "help")
# to use it, take the object and modify the "help" attribute/field.  
attr(example_object, "help") <- "This is an example comment field."
describe(example_object)

The above example refers to an example object, that could easily be sales_ts_window_a mentioned above.  So we would use the attribute command to apply our description to sales_ts_window_a.

attr(sales_ts_window_a, "help") <- "Sales for the three quarters Jan was manager"
attr(sales_ts_window_b, "help") <- "Sales for the five quarters Bob was manager"

After hours or days have passed and there are many more variables under investigation, a simple query reveals the comment.

describe(sales_ts_window_a)
[1] "Sales for the three quarters Jan was manager"

This might seem burdensome, but RStudio makes it very easy to add this via code snippets. We can create two code snippets. The first is the one that goes at the top of the file which defines the describe function that we use to read the field we apply to the comment to. Open RStudio Settings > Code > Code Snippets and add the following code. RStudio requires tabs to indent these.

snippet lblMaker
        #
        # Code and Example for Providing Descriptive Comments about Objects
        # 
        example_object <- "I appreciate r-cran."
        # This adds a describe attribute/field to objects that can be queried.
        # Could also change to some other attribute/Field other than help.
        describe <- function(obj) attr(obj, "help")
        # to use it, take the object and modify the "help" attribute/field.  
        attr(example_object, "help") <- "This is an example comment field."
        describe(example_object)

snippet lblThis
        attr(ObjectName, "help") <- "Replace this text with comment"

Now one can use the code completion to add the label maker to the top of the script. Simply start typing lblMak and hit the tab key to complete the code snippet. When wanting to label an object for future examination, start typing lblTh and hit tab to complete it and replace the objectname with the variable name and replace the string on the right with the comment. These code snippets provide a valuable way to store descriptive information about variables as they are created and set aside with potential future use.

This functionality does overlap with the built in comment functionality with a bit of a twist. The description added via this method appears at the end of the print output when typing the variable name. The built in comment function does not print out. It is also less intuitive than describe() and receiving a description.

R contains a built in describe command, but it often is not useful. Summary is the one I use most often. For a good description, I import the psych package and use psych::describe(data). Because of that, the describe method in this article is very useful. The printout appears like below with the [1]…

lu71802xbt90_tmp_dac5c795

Adding attributes other than “help” could easily be accomplished. DescribeAuthor, DescribeLocation, and other functions could be added. When using a console to program, a conversational style makes it flow better.

My Favorite Function

My favorite function of all time is varsoc in Stata.  That’s saying a lot because I have been working with computers for decades and have written software in several languages, used many different types of administrative software tool sets, and owned a lot of books with code in them.  Varsoc regresses one variable, y, upon another variable, x, and then regresses each lag of y on x to produce output that allows one to know the best fit lag for a regression model.   It allows someone analyzing time series data to immediately know that data from the several prior is a better predictor of today’s reality than more recent data.  I adore Stata for scientific analysis.  In order to use this for my big data project, I needed to automate it, and so I wrote an R vignette that would analyze 45 lags and produce the relevant test statistics. My vignette produces r2 values1, parameter estimates, and f-statistics for 45 lags of y regressed on x. The p-values are then written to a CSV file. The decision rule for a p-value is that we reject the null hypothesis if the p-value is less than or equal to α/2.2 The data comes from 5GB of CSV files that were created via Python.

Running the lags shows us the relationships between the historical prices of two securities. When we regress y on x in this case, we are regressing the price of security 2 on security 1. We then do this on a lag. The L1 of security 2 regressed on security 1’s L0. Then we regress L2 of security 2 on security 1’s L0. This occurs for 45 iterations. For example, we might find that the price of a gold ETF 44 days ago has the best relationship with the price of Apple stock today as compared to the price of that same gold ETF 12 days ago and even today. That’s an example only and not anything substantiated in the data. There will certainly be some spurious relationships. An ETF buying shares of Apple and then the same ETF’s fee going up the next month, for example. To mitigate this, the vignette uses the first difference of the logarithm so that the data is stationary. The CSVs are already produced so that unit roots are accounted for. This is a research project to identify what actually bodes well in other sectors. It runs on every listed security on the American exchanges. Every symbol is regressed on Apple. Every symbol is regressed on Microsoft, and so on. The data is stationary and unit roots are eliminated.

I initially began this project some time ago and at that time I stopped because it was going to take a solid month of continuous 12-core processing to accomplish the entire series. In retrospect, I should have let that proceed but there would have been a great tradeoff in that I couldn’t have played Roblox, The Isle, and Ark Survival Evolved with my daughter. Finally, I’ve got the research running on a new machine dedicated to that purpose. That machine uses an AMD Ryzen 5 3500 and NVMe SSD. The program is running on 6 cores in parallel. Previously, with the one month estimate, it was running concurrently on 12-cores of Westmere Xeon CPUs and storing the output in RAM instead of on an SSD. This will serve as an interesting test for the Ryzen since all six cores will be running at 100% for months on end. The operating system is OpenSuse Leap 15.2, the R version is 4.05, and the Python version is 2.7.18.

One of the reasons to write these articles is for my own memory. It gets older to remember as one gets older. These blog posts are essentially a public notebook to aid myself and others.


1  R2 is the coefficient of determination, which is the square of the Pearson correlation coefficient, r, the formula for which is ρ=β1(σx/σy), where β1 is the parameter estimate. ASCI and Unicode text does not have a circumflex, ^, on top of the β. For this documentation the objective is multiplatform long-term readability so an equation editor with specialized support for circumflexes is out of the question.

2  There is also the existence of the rejection region method. We reject the null hypothesis if the test statistic’s absolute value is greater than the critical value, which we can express with the formula Reject if |t| > tα/2,n-1

STEM jobs in the United States

The number of science, technology, engineering, and math, STEM, jobs in the United States, shrank for the past three decades,1982-2012. The draw-down accelerated from 2000-2012.

The highest occupational growth occurred among occupations with soft skills, with K-12 teaching and non-doctor health care support staff, such as nurses, technicians, and therapists. From 2000-2012, those in the physical sciences, such as chemistry, physics, and others, biological scientists, and engineers saw decreases in the availability of work in their field. The percentage of the workforce that fell into the category of “engineer” declined by over 15% (David Deming, 2017). In “The Economics of Noncognitive Skills”, data from the Brookings Institution’s Hamilton project shows that the number of service jobs increased the most over the last three decades (Timothy Taylor, 14 October 2016). These are tasks such as customer service.

Synchronize time on CentOS 6

This will start the time service and synchronize the clocks on CentOS 6.

yum install ntp 
chkconfig ntpd on 
ntpdate pool.ntp.org 
/etc/init.d/ntpd start