RMalis Website Design and Optimization https://rmalis.com Tue, 24 Sep 2024 04:13:19 +0000 en-US hourly 1 https://rmalis.com/wp-content/uploads/2022/05/favicon-32x32-1.png RMalis Website Design and Optimization https://rmalis.com 32 32 205170339 Creating High-Performance Websites: A Case Study on TentoScratch.com https://rmalis.com/creating-high-performance-websites-a-case-study-on-tentoscratch-com/ https://rmalis.com/creating-high-performance-websites-a-case-study-on-tentoscratch-com/#respond Tue, 24 Sep 2024 04:13:19 +0000 https://rmalis.com/?p=968 As a website designer, my goal is to create visually appealing, user-friendly, and high-performing websites that engage visitors and meet the business needs of my clients. I recently started a project that perfectly captures these goals—TentoScratch.com, a website dedicated to helping golfers fix swing flaws through drills and training aids.

In this article, I’ll walk you through the design process of TentoScratch.com, highlighting the strategies and tools I used to build a site that not only looks great but also performs exceptionally well.

Understanding the Client’s Vision

The first step in any successful website design project is understanding the client’s vision and objectives. With TentoScratch.com, the goal was to create an informative, easy-to-navigate platform for golfers of all skill levels. The client wanted a site that offered:

  • Comprehensive articles on fixing common golf swing flaws.
  • Drills and training aids that are clearly organized.
  • A clean, professional layout that would appeal to both golf enthusiasts and those looking to improve their game.

To meet these objectives, I focused on three key design principles: simplicity, responsiveness, and engagement.

Designing for Functionality and User Experience

When designing TentoScratch.com, the primary focus was on creating an intuitive user experience. Here are the key elements I incorporated:

  1. Responsive Design
    In today’s digital landscape, it’s essential that websites look and function flawlessly on all devices, from desktops to smartphones. I used a fully responsive design for TentoScratch.com, ensuring that the content adapts to different screen sizes without sacrificing quality or usability.
  2. Clear Navigation
    Navigation is one of the most critical aspects of user experience. I implemented a clean and straightforward navigation menu that allows visitors to quickly find articles about swing flaws, golf drills, or training aids. Additionally, I used internal linking throughout the site to guide users to relevant content easily.
  3. Fast Load Times
    Website speed plays a crucial role in user retention and search engine ranking. By optimizing images, leveraging browser caching, and using lightweight code, I ensured that TentoScratch.com loads quickly across all devices.
  4. Content Organization
    Given the educational nature of the site, it was important to structure the content in a way that’s easy to digest. I organized the articles into clear categories—swing flaws, drills, and training aids—so users can quickly find the information they need. I also integrated a search function to improve user accessibility.
  5. Visual Appeal
    I wanted TentoScratch.com to have a modern and professional look that reflects the dedication and passion of the golf community. Using a clean color palette, professional fonts, and high-quality imagery, I created a design that feels both sophisticated and approachable.

Integrating SEO Best Practices

Another essential aspect of the design process was ensuring that TentoScratch.com was optimized for search engines. From the beginning, I integrated SEO best practices to help the site rank well and attract organic traffic. This included:

  • Implementing SEO-friendly URLs and meta descriptions.
  • Structuring content with clear headings and subheadings.
  • Ensuring mobile optimization, which is a critical ranking factor.
  • Fast load times to meet Google’s performance standards.

These SEO strategies not only help drive traffic to the site but also enhance the overall user experience.

Engaging Content and Calls to Action

Content is king—especially for a website that offers valuable information to its visitors. On TentoScratch.com, I worked closely with the client to ensure that the content was informative, well-organized, and engaging. We included detailed articles on fixing common swing flaws, practicing golf drills, and selecting the right training aids.

Each page features clear calls to action, guiding users to explore more content, sign up for email updates, or share articles on social media. These CTAs help increase user engagement and encourage visitors to stay on the site longer, contributing to a lower bounce rate and higher user retention.

How TentoScratch.com Reflects My Website Design Services

TentoScratch.com is a prime example of how I approach website design projects. Here’s why it stands out:

  • Custom Design: The site is tailored specifically to the golf niche, reflecting the client’s brand and audience.
  • SEO Integration: It’s optimized for search engines, ensuring visibility and organic traffic growth.
  • Responsive Layout: It offers a seamless experience across all devices, providing a consistent experience for users no matter how they access the site.
  • User-Friendly Navigation: The design makes it easy for users to find what they need, increasing engagement and encouraging return visits.

If you’re looking for a website design that combines aesthetics, functionality, and performance, I can help bring your vision to life—just as I did with TentoScratch.com. Whether you need a blog, e-commerce platform, or a portfolio site, I’ll work with you to create a customized, high-performing website that meets your business needs.

Ready to Elevate Your Online Presence?

Interested in seeing more of my work? Check out TentoScratch.com to see firsthand how I transformed a passion for golf into a beautifully designed, user-friendly website. If you’re ready to create a standout website for your business, contact me today to discuss your project!

]]>
https://rmalis.com/creating-high-performance-websites-a-case-study-on-tentoscratch-com/feed/ 0 968
Showcasing Talent: A Custom Website for an Actor Headshots and Fashion Photographer https://rmalis.com/showcasing-talent-a-custom-website-for-an-actor-headshots-and-fashion-photographer/ https://rmalis.com/showcasing-talent-a-custom-website-for-an-actor-headshots-and-fashion-photographer/#respond Sat, 24 Aug 2024 04:47:54 +0000 https://rmalis.com/?p=963 I’m thrilled to share the details of a recent project that beautifully blends creativity with functionality—a custom WordPress website designed for a talented photographer specializing in actor headshots and fashion photography. This website not only highlights the photographer’s stunning portfolio but also offers a seamless user experience that is as captivating as the images it displays.

At the heart of the design is the Smart Slider plugin, a powerful tool that allowed me to create dynamic, visually striking galleries. This feature enables the photographer to showcase their work in a way that truly captures the essence of each shot, whether it’s the intensity of an actor’s headshot or the flair of a fashion editorial. The slider’s smooth transitions and customizable layouts make it easy for visitors to immerse themselves in the photographer’s portfolio, experiencing the full range of their creative talent.

In addition to the stunning visuals, I focused on creating a user-friendly interface that aligns with the needs of both the photographer and her clients. The website features an intuitive navigation structure, allowing potential clients to easily explore the photographer’s work, learn about her services, and get in touch for bookings. The responsive design ensures that the site looks flawless on any device, from desktops to smartphones, providing a consistent experience no matter how it’s viewed.

The WordPress platform was the perfect choice for this project, offering the flexibility needed to create a customized site that reflects the photographer’s brand and vision. With built-in SEO features, the site is also optimized to attract more traffic, helping the photographer reach a broader audience in a competitive market.

This project is a testament to the power of thoughtful design and the right tools. By combining WordPress’s robust capabilities with the dynamic presentation of the Smart Slider plugin, I was able to create a website that not only meets but exceeds the needs of a photographer in the highly visual world of actor headshots and fashion photography.

Take a look at the Raquel Krelle Photography Website

Raquel Krelle Photography Website

]]>
https://rmalis.com/showcasing-talent-a-custom-website-for-an-actor-headshots-and-fashion-photographer/feed/ 0 963
Introducing My Latest Creation: A Sleek WordPress Website for Cosmetic Enthusiasts https://rmalis.com/introducing-my-latest-creation-a-sleek-wordpress-website-for-cosmetic-enthusiasts/ https://rmalis.com/introducing-my-latest-creation-a-sleek-wordpress-website-for-cosmetic-enthusiasts/#respond Sat, 24 Aug 2024 04:35:51 +0000 https://rmalis.com/?p=959 I’m excited to unveil the latest addition to my portfolio—a beautifully crafted WordPress website dedicated to cosmetic products. This site not only highlights a range of beauty essentials but also showcases the web development skills I’ve honed over the years.

In designing this site, I focused on creating a seamless user experience that mirrors the elegance and sophistication of the cosmetics industry. From the intuitive navigation to the visually appealing layout, every element was carefully chosen to ensure the site is both functional and aesthetically pleasing.

The WordPress platform allowed me to integrate custom features tailored to the needs of beauty enthusiasts, including detailed product pages, a sleek e-commerce setup, and a responsive design that looks stunning on any device. Additionally, I implemented SEO best practices to enhance visibility and drive organic traffic, ensuring that the site stands out in a competitive market.

This project not only reflects my passion for web development but also my commitment to helping brands in the cosmetic industry elevate their online presence. Whether you’re browsing for the latest skincare trends or looking to enhance your digital portfolio, this site is a testament to what can be achieved with creativity, technical expertise, and a deep understanding of the beauty market.

Feel free to explore the site, Ace Cosmetics, and see firsthand how a well-crafted online presence can make all the difference.

Ace Cosmetics Website

]]>
https://rmalis.com/introducing-my-latest-creation-a-sleek-wordpress-website-for-cosmetic-enthusiasts/feed/ 0 959
Cyberpanel Linux – cleaning up when disk is getting full https://rmalis.com/cyberpanel-linux-cleaning-up-when-disk-is-getting-full/ https://rmalis.com/cyberpanel-linux-cleaning-up-when-disk-is-getting-full/#respond Sun, 12 Feb 2023 16:55:36 +0000 https://rmalis.com/?p=946 I’ve had an issue twice before where something filled up the hard drive and caused the server to crash.  Once it was a hacked / compromised wordpress site and once it was excessive session files generated.  I wrote about how I handled it once before in this post.

I used a similar process today to try to free up some space today and I thought I’d document the steps I took to save me time when I have to do this again in the future.

First, I again ran the ncdu linux command which is a great way to see what directories are using up the most space.

/var/log/journal was using over 3gb of space.  In one of the directories there were a bunch of journal files.  I checked online and it looks like it is safe to delete journal files.  There was a nice post about how to remove the journal files and also set the system to keep removing old journal files when they are using too much space.  This allowed me to quickly free up an extra 2.5gb of space.  Until I better understand what the journal files are used for, I’m not going to set-up a regular process to remove old files yet.  I hadn’t needed to do this previously even though I’ve had this server for about a year now.  Perhap when I do it the next time I’ll be more aggressive in having it cull old files on a regular basis.

/var/lib/snapd directory had about 500mg of space used.  I checked and there is a command to remove these snap files too.  It looks like it is only retaining 2 versions of each snap, so I probably already have it set to remove anything more than 3.  I will leave things as is for this directory.

/usr/src there are a bunch of linux header files taking up about 1gb of space.  There is a command to remove old linux header files that are no longer needed.  I used:

sudo apt-mark auto '^linux-headers-[34].*'
sudo apt autoremove

That removed over 2gb of space – many files in addition to the linux headers got removed with that one.

I didn’t see any other obvious directories taking up unnecessary space.  Freeing up 5gb of space is pretty good for my small server.  I could have just upgraded the server to a bigger SSD, but I should be able to keep my websites safely running within the space I have.  The websites themselves generally don’t use that much space.  It is the server management software that sometimes gets a bit unruly.

I’m not super experienced with linux and having to do occasional file maintenance like this is a bit of a hassle.  Overall, it has been very infrequent that I’ve needed to do this though.  For me, It is a relatively small price to pay to have my own, very fast, private server at a very reasonable cost.

 

]]>
https://rmalis.com/cyberpanel-linux-cleaning-up-when-disk-is-getting-full/feed/ 0 946
Cyberpanel Unable to Change php version for Subdomains – solved https://rmalis.com/cyberpanel-unable-to-change-php-version-for-subdomains-solved/ https://rmalis.com/cyberpanel-unable-to-change-php-version-for-subdomains-solved/#respond Thu, 09 Feb 2023 05:35:21 +0000 https://rmalis.com/?p=943 I had a subdomain and tried changing the php version in the cyberpanel control panel without any success.  I found a discussion about the issue here.

The ultimate solution wound up being that I had to change the vhosts file directly for the subdomain.  Any other attempts to change the php version did nothing other than changing the vhosts file.  Once I did that, the version finally changed.

]]>
https://rmalis.com/cyberpanel-unable-to-change-php-version-for-subdomains-solved/feed/ 0 943
Cyberpanel – redirect domain name to another including URLs https://rmalis.com/cyberpanel-redirect-domain-name-to-another-including-urls/ https://rmalis.com/cyberpanel-redirect-domain-name-to-another-including-urls/#respond Tue, 22 Nov 2022 00:41:32 +0000 https://rmalis.com/?p=932 Cyberpanel wouldn’t let me forward emails used on an add-on domain, so I had to create a separate website for the add-on domain, create my emails I needed there, and then redirect the content from the “add-on” domain to the correct domain.

For some reason, I was struggling to find the correct code to have in my .htaccess that would work not just for the index page but for all other URLs on the website.  Ultimately, I found a solution that worked:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !newdomain.com$ [NC]
RewriteRule ^(.*)$ https://www.newdomain.com/$1 [L,R=301]

For whatever reason, the other examples I had seen online that claimed to work to redirect a domain name to another domain were not working.  Usually, the index home page did redirect, but not the other URLs.  The above code worked for me in openlitespeed on a Cyberpanel server.

I’m not sure what the problem is with forwarding emails from an add-on domain, but I saw someone else had posted the same issue on the Cyberpanel forums, and there was no solution posted.  I figured it was easier to just avoid using an add-on domain.

]]>
https://rmalis.com/cyberpanel-redirect-domain-name-to-another-including-urls/feed/ 0 932
Fatal error: Uncaught TypeError: round(): Argument #1 ($num) must be of type int|float, string given in https://rmalis.com/fatal-error-uncaught-typeerror-round-argument-1-num-must-be-of-type-intfloat-string-given-in/ https://rmalis.com/fatal-error-uncaught-typeerror-round-argument-1-num-must-be-of-type-intfloat-string-given-in/#respond Sun, 06 Nov 2022 06:41:53 +0000 https://rmalis.com/?p=906 Fatal error: Uncaught TypeError: round(): Argument #1 ($num) must be of type int|float, string given in /rmalis.com/public_html/wp-content/plugins/yet-another-related-posts-plugin/includes/template_builtin.php:33

Yesterday I noticed the above error on this website.  My home page was still online as normal, but each of the posts was throwing an error.  The error that showed up was actually:

There has been a critical error on this website.

Learn more about troubleshooting WordPress.

I first noticed it because my broken link detector plugin showed some broken links.  It turns out they were to my own website.  When visiting any posts, I got the critical error message.  I checked my other websites and didn’t see any of these issues.  So I realized I had to dig in a little deeper.

First thing to do when getting an error message like that is to turn on debugging mode in WordPress.  To do that, you edit the wp-config.php file located in your home directory.  Just before the “stop editing” line near the end, you add or change:

define( 'WP_DEBUG', true );

After turning on debugging mode, I visited a page giving me an error and got the following details:

Fatal error: Uncaught TypeError: round(): Argument #1 ($num) must be of type int|float, string given in /rmalis.com/public_html/wp-content/plugins/yet-another-related-posts-plugin/includes/template_builtin.php:33 
Stack trace: 
#0 /rmalis.com/public_html/wp-content/plugins/yet-another-related-posts-plugin/includes/template_builtin.php(33): round() 
#1 /rmalis.com/public_html/wp-content/plugins/yet-another-related-posts-plugin/classes/YARPP_Core.php(1655): include('...') 
#2 /rmalis.com/public_html/wp-content/plugins/yet-another-related-posts-plugin/classes/YARPP_Core.php(1527): YARPP->get_template_content() 
#3 /rmalis.com/public_html/wp-content/plugins/yet-another-related-posts-plugin/classes/YARPP_Core.php(1384): YARPP->display_related() 
#4 /rmalis.com/public_html/wp-content/plugins/yet-another-related-posts-plugin/classes/YARPP_Core.php(2020): YARPP->display_basic() 
#5 /rmalm/public_html/wp-includes/class-wp-hook.php(308): YARPP->the_content() 
#6 /rmalis.com/public_html/wp-includes/plugin.php(205): WP_Hook->apply_filters() 
#7 /rmalis.com/public_html/wp-includes/formatting.php(3885): apply_filters() 
#8 /rmalis.com/public_html/wp-includes/class-wp-hook.php(308): wp_trim_excerpt() 
#9 /rmalis.com/public_html/wp-includes/plugin.php(205): WP_Hook->apply_filters() 
#10/rmalis.com/public_html/wp-includes/post-template.php(431): apply_filters() 
#11 /rmalis.com/public_html/wp-content/plugins/seo-by-rank-math/includes/opengraph/class-opengraph.php(147): get_the_excerpt() 
#12 /rmalis.com/public_html/wp-content/plugins/seo-by-rank-math/includes/opengraph/class-opengraph.php(124): RankMath\OpenGraph\OpenGraph->fallback_description() 
#13 /rmalis.com/public_html/wp-content/plugins/seo-by-rank-math/includes/opengraph/class-twitter.php(174): RankMath\OpenGraph\OpenGraph->get_description() 
#14 /rmalis.com/public_html/wp-includes/class-wp-hook.php(308): RankMath\OpenGraph\Twitter->description() 
#15 /rmalis.com/public_html/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters() 
#16 /rmalis.com/public_html/wp-includes/plugin.php(565): WP_Hook->do_action() 
#17 /rmalis.com/public_html/wp-content/plugins/seo-by-rank-math/includes/traits/class-hooker.php(88): do_action_ref_array() 
#18 /rmalis.com/public_html/wp-content/plugins/seo-by-rank-math/includes/opengraph/class-opengraph.php(73): RankMath\OpenGraph\OpenGraph->do_action() 
#19 /rmalis.com/public_html/wp-includes/class-wp-hook.php(308): RankMath\OpenGraph\OpenGraph->output_tags() 
#20 /rmalis.com/public_html/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters() 
#21 /rmalis.com/public_html/wp-includes/plugin.php(565): WP_Hook->do_action() 
#22 /rmalis.com/public_html/wp-content/plugins/seo-by-rank-math/includes/traits/class-hooker.php(88): do_action_ref_array() 
#23 /rmalis.com/public_html/wp-content/plugins/seo-by-rank-math/includes/frontend/class-head.php(156): RankMath\Frontend\Head->do_action() 
#24 /rmalis.com/public_html/wp-includes/class-wp-hook.php(308): RankMath\Frontend\Head->head() 
#25 /rmalis.com/public_html/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters() 
#26 /rmalis.com/public_html/wp-includes/plugin.php(517): WP_Hook->do_action() 
#27 /rmalis.com/public_html/wp-includes/general-template.php(3043): do_action() 
#28 /rmalis.com/public_html/wp-content/themes/astra/header.php(26): wp_head() 
#29 /rmalis.com/public_html/wp-includes/template.php(783): require_once('...') 
#30 /rmalis.com/public_html/wp-includes/template.php(718): load_template() 
#31 /rmalis.com/public_html/wp-includes/general-template.php(48): locate_template() 
#32 /rmalis.com/public_html/wp-content/themes/astra/single.php(15): get_header() 
#33 /rmalis.com/public_html/wp-includes/template-loader.php(106): include('...') 
#34 /rmalis.com/public_html/wp-blog-header.php(19): require_once('...') 
#35 /rmalis.com/public_html/index.php(17): require('...') 
#36 {main} thrown in /rmalis.com/public_html/wp-content/plugins/yet-another-related-posts-plugin/includes/template_builtin.php on line 33

There has been a critical error on this website.

Learn more about troubleshooting WordPress.

That’s a lot of gobblygook that I don’t really understand (yet).  I did recognize that the main error appears to be line 33 of a part of my Yet Another Related Posts plugin (YARPP) I use to show related posts at the end of each message.  I also noticed that some of the lines include the plugin SEO by Rank Math.

First, I tried disabling YARPP and that got rid of the error message.  I found that odd as I also use that plugin on other sites and I’ve never noticed that error before.  I also looked and the plugin hasn’t been updated in several months, yet the problem started within the past few days.

Second, I looked to see when the SEO by Rank Math plugin was updated, and I noticed that was updated about 2 days ago.  To see if maybe that was contributing to the problem, I tried disabling SEO by Rank Math and re-enabling YARPP and interestingly, that also prevented any error messages.  So it seems to be something with the two plugins running at the same time.

What added to the confusion, is I have another website using both of those plugins, yet that site was not having any errors.  The only thing different between the two sites is that the other site is set to use php version 7.4 and this site was set to use php 8.0.  To test whether that was a factor, I changed the php version to 7.4 and re-enabled both plugins.  That also prevented the error from occurring.

So, I can now conclude that the error is due to using php version 8, along with SEO by Rank Math (likely something changed in their most recent update) and YARPP.

Doing some more research on this particular error, it does seem other people have had similar errors when updating to php 8.0, but with other plugins or programs.  It seems to be something to do with how php 8.0 handles the

round($val)

and changing it as follows will resolve the errors:

round((int)$val)

I looked at line 33 of the code that is identified as throwing the error:

$round = round( get_the_score(), 1 );

Which would round a number for get_the_score() to the nearest number including the 10ths column (the ,1 means how many digits after the decimal point to round to).  But I’m thinking that if get_the_score() is 0, it will throw an error with php8.

Based on what worked in other scripts, I tried:

$round = round( (int)get_the_score(), 1 );

And that did fix the error from being thrown, but I realized that (int) was not the best choice for this use.  I am basically trying to round the relatedness score to the nearest 10ths.  If I use the (int) command first, it will truncate the number, removing anything after the decimal point.  Rounding after that will essentially round the number to the nearest integer, but it is already truncated to an integer.

I then tried:

$round = round((float) get_the_score(), 1 );

And that seems to have fixed the problem completely and the “get_the_score” appears to be rounded to the nearest 10ths instead of just a truncated integer.

 

Upon further review though, I’m seeing there is some error with Rank Math messing up the YARPP values.  It looks like it is still listing the correct related threads, but it is showing as 0 for a score for many pages relatedness when it should definitely not be 0.  I’ll have to see what Rank Math did with the most recent update to mess with the get_the_score values.

Update 11/13/2022:

It looks like the bug was fixed in Yet Another Related Posts Plugin, with the author using the same solution that I came up with.

Looking closer, the solution does prevent the error from occurring, but there is still some problem between how Rank Math (and likely other plugins) interact with the YARPP.  For some reason, Rank Math is changing the scores to a string rather than a number, and then they get displayed as 0’s instead of their actual values.  Interestingly, the related posts shown are the same whether I have Rank Math enabled or not – the only difference is that the actual score shows when Rank Math is disabled and the number 0 shows when Rank Math is enabled.  At this point, I’m not spending the time to understand and fix the errors.  If I do, I will update the post at that time.

]]>
https://rmalis.com/fatal-error-uncaught-typeerror-round-argument-1-num-must-be-of-type-intfloat-string-given-in/feed/ 0 906
Google Search Mobile Not Usable with Enlighter – Text Too Small to Read https://rmalis.com/google-search-mobile-not-usable-with-enlighter-text-too-small-to-read/ https://rmalis.com/google-search-mobile-not-usable-with-enlighter-text-too-small-to-read/#respond Sat, 29 Oct 2022 04:25:06 +0000 https://rmalis.com/?p=898 I was checking my Google Search Console information for this website and under the “Mobile Usability” tab, I noticed that some of my pages were listed as “Not Usable”.  Most of the pages are fine, but a few are not.  When I checked, there were actually three categories that the same pages were showing as not usable.  The categories are: text too small to read, clickable elements too close together, and content wider than screen.

When I’ve browsed my site, everything looks fine to me.  I’m using a responsive theme that doesn’t seem to have any issues.  Also, if it were the theme, I would have expected these issues on all, or almost all, of the pages of the site.  But it is only a few pages, and they all show as not usable for the same three categories.  Looking more closely at the pages, one thing they all have in common is that I have pasted code on those pages and I used the Enlighter plugin for showing code in a format that can be cut and pasted easily.

Looking on mobile, everything seems to look okay.  The only possible clickable elements due to the Enlighter plugin would be the hover over effect of showing clickable elements to copy the content, remove the line numbers, open the content in a new windows, or link to the plug-in homepage.  They don’t seem to be particularly close on my phone.

The Enlighter plug-in has plenty of options to change the layout, fonts, spacing, etc.  I was debating just setting the font bigger and seeing if the mobility errors went away.  Instead I decided to take an easy route of changing the default theme within the plugin from Enlighter to Classic.  The formatting still looks decent, but I do think the fonts are slightly larger and spaced out a bit more.  I’ll have to probably wait a few weeks at least to see if the errors go away on their own.

As best I can tell, those pages are not suffering significantly in search engine results, but I figure if the Search Console if giving me messages, I should try my best to address them.

I’ll check back in a few weeks and see if the change made any difference, or if by that time maybe I’ll have some other information to help me pin-point the problem.

<update 11/8/22>
I get weird formatting at times with Enlighter plugin – it may not be the plugin itself, but also a combination of how litespeed cache is trying to optimize various formatting that messes up some display layouts.  To minimize problems, I’ve just removed the use of Enlighter plugin on those pages and reverted to using the <code> </code> formatting instead.  I really don’t like that appearance, but I first want to make sure I can consistently pass the Google mobile usability tests.  I went ahead and clicked the “validate fix” in the search console and I’ll update this post once that is complete.  Assuming it passes, I’ll then need to figure out how to improve the appearance, but keep it where it can pass the mobile usability test.

<update 11/13/22>
Google validated the changes fixed the error.  Any pages where I’ve used the Englighter plugin are now gradually showing up as not working on mobile and I’m fixing them as I go.  I have no idea how much these issues impact search engine traffic.

]]>
https://rmalis.com/google-search-mobile-not-usable-with-enlighter-text-too-small-to-read/feed/ 0 898
Cyberpanel Out of Space – php Sessions Directory Full https://rmalis.com/cyberpanel-out-of-space-php-sessions-directory-full/ https://rmalis.com/cyberpanel-out-of-space-php-sessions-directory-full/#respond Wed, 05 Oct 2022 04:37:53 +0000 https://rmalis.com/?p=875 I was trying to log in to my wordpress site and it wouldn’t let me log in.  I went into my CyberPanel dashboard to see what was up and saw that the disk usage was at 100%.  It had been running closer to 80% most of the time, and something filled it up since the last time I checked.  I ultimately discovered that there are files created for php sessions.  Old files are supposed to get cleared out, but they weren’t.  Here’s how I fixed it.

Seeing What Was Using Disk Space in Ubuntu

I logged in using Putty and installed a disk space usage program:

sudo apt install ncdu

And then you just type in ncdu and it starts the program.  As there is no graphical user interface, it does take some navigating but ultimately I found that the directory that was taking up a lot of space was /var/lib/lsphp/session/

And then there folders for each version of php that I am using.  I think most wordpress installations and plugins don’t use sessions, but in order to reduce server load caused by bots spamming my login pages, I installed the limit login plugin.  It turns out that the plugin creates sessions to keep track of the IP addresses trying to log in.  I’m guessing that one of my sites was getting hammered with bots and thus created a ton of sessions, ultimately filling up the drive.  The odd thing was that it looked like files were there from when I first installed the plugin – like 5 months ago.

Cyberpanel – how to clear old session files

As best I can tell, Cyberpanel works by running a garbage collection script called through cron every 30 minutes, and any sessions more than a certain age get deleted.  But for whatever reason, even that cron file was not working properly.  Cyberpanel does not seem to use the typical garbage collection run through the php.ini variables of session.gc_probability and session.gc_divisor – CyberPanel has them both set to 0 by default.  Changing them to the standard defaults of 1 and 100 did not seem to do anything as far as removing old session files.

So, the file that gets called by the cron file in the Cyberpanel setup is:

/usr/local/CyberCP/bin/cleansessions

The file that was there looked like:
#!/bin/bash
for version in $(ls /usr/local/lsws|grep lsphp); do echo ""; echo "PHP $version"; session_time=$(/usr/local/lsws/${version}/bin/php -i |grep -Ei 'session.gc_maxlifetime'| grep -Eo "[[:digit:]]+"|sort -u); find -O3 "/var/lib/lsphp/session/${version}" -ignore_readdir_race -depth -mindepth 1 -name 'sess_*' -type f -cmin "${session_time}" -delete; done

I didn’t try executing the script, but I suspect that for some reason it just wasn’t executing properly.  It is supposed to get the setting from the php.ini file where session.gc_maxlifetime will be set to the number of seconds to keep session files.  It is set to 14400 seconds, which would be 4 hours.  However, the way the cleansessions script is written, it looks for files using -cmin which is in minutes.  Even so, that would be 14400 minutes which would be 10 days.  That wouldn’t explain why my session files were still there from months ago.

Anyway, the code that I found that fixes it to remove any files over 4 hours was:
#!/bin/bash
for version in $(ls /usr/local/lsws|grep lsphp); do echo ""; echo "PHP $version"; session_time=$(($(/usr/local/lsws/${version}/bin/php -i |grep -Ei 'session.gc_maxlifetime'| grep -Eo "[[:digit:]]+"|sort -u) / 60)); find -O3 "/var/lib/lsphp/session/${version}" -ignore_readdir_race -depth -mindepth 1 -name 'sess_*' -type f -cmin +"${session_time}" -delete; done

Which basically takes the original code, but then divides the time by 60, so you are back to 4 hours instead of 10 days.  However, when I first uploaded the above script and try to run it manually by going to the directory and just typing

./cleansessions

which executes the script.  But I got an error message:
-bash: ./cleansessions: /bin/bash^M: bad interpreter: No such file or directory

It turns out this is an error you get if you try to write the file on a windows based machine and then upload it to a linux based machine.  I found a nice solution here to strip out the hidden characters that cause the problems with executing the script.

Run following command in terminal

sed -i -e 's/\r$//' cleansessions

Then try

./cleansessions

It should work.

And it worked!  And now the cron is working correctly with clearing out any php session files over 4 hours old.

]]>
https://rmalis.com/cyberpanel-out-of-space-php-sessions-directory-full/feed/ 0 875
Your Site Isn’t Ready to Show Ads – Low Value Content https://rmalis.com/your-site-isnt-ready-to-show-ads-low-value-content/ https://rmalis.com/your-site-isnt-ready-to-show-ads-low-value-content/#respond Thu, 22 Sep 2022 01:35:18 +0000 https://rmalis.com/?p=868 Low Value Content – Rejected by Adsense

Thanks Google.  I set-up this site in WordPress and then started blogging about issues I’ve encountered trying to self-host websites, mostly with using Cyberpanel instead of cpanel on a shared hosting service.  I started to get some traffic and the Site Kit plugin offers an easy way to integrate Adsense ads.  I was actually debating if I wanted to go that route, as I wasn’t sure I’d want ads on my site.  I figured with the traffic I was getting, I may as well start to monetize it.  I applied to Adsense through Site Kit, figuring it was an easy way to monetize a WordPress site.  

Back when I first started using Adsense, you would basically just place the ad code where ever you wanted an ad to show up – on any site.  I have multiple sites that show as approved within my Adsense control panel, but now you have to submit your sites to get approved.  I had one site that I applied for Adsense a year ago, but I applied before I had added content.  I was not surprised that that site got rejected.  This site, however, I was a bit surprised.

So here is the message I had in my Adsense account when I looked for more details:

Your site isn’t ready to show ads

We’ve found some policy violations on your site which means your site isn’t ready to show ads yet.

  1. Low value contentYour site does not yet meet the criteria of use in the Google publisher network. For more information, review the following resources:

View the Content policies or visit the Help Center for more information. After you’ve fixed the violation, you can request a review of your site.


Let’s look at these one step at a time

Minimum Content Requirements

This page has a lot of information but it can be simply summarized as
Content Policies: Nothing illegal, dangerous, stolen, deceptive, or sexually inappropriate.  Basically – nothing controversial or bad.
I think I’m safe here

Behavioral Policies:  A variety of things, like inaccurate adsense information, manipulate serving of ads, showing ads on blank pages, or lack of content
I think I’m safe here, but the “lack of content” can be subjective if they just think I don’t have enough unique content

Privacy-Related Policies: Privacy policy and not doing anything deceptive with user information
Oops – I didn’t add a privacy policy yet.  I’ll do that.

Make sure your site has unique high quality content and a good user experience

Provide enough unique content.  This may be a potential criticism – it’s hard to know what their actual threshold would be for this.  I currently have about 30 articles.  Not a huge site, but also not “no content”.

No duplicate content.  A few of my articles cover the same issues, but covering the information from a slightly different angle. I guess this could be a potential criticism, but I don’t think my site is anywhere close to abusive in this area.  It certainly wasn’t intentional duplicate content.  It was just addressing a problem that I thought was fixed, but wasn’t, and explaining the new approach.

Build a good user experience with navigational elements.   I think my site layout is pretty good.  Sure, maybe it could be better, but I don’t see this as being an issue to not have gotten approved.

Thin content

It’s interesting that the link is to a section in the “manual actions” report of the Search Console, with the title “Thin content with little or no added value”.  My Google Search Console does not show any manual actions.  I assume you’d have to have really bad thin content to justify a manual action in the search console.  I don’t know if the Adsense rejection was customized or if this is a generic list of items to address.  This is essentially the same as the “Provide enough unique content” issue above.  I do like that they include a video from Matt Cutts.

And the webmaster quality guidelines are pretty obvious.

 

Bottom line (literally in this case) – Low Value Content means that – I need to have more content on the site that will be seen as useful to visitors.  Fair enough.  I’ll keep on blogging and re-submit again once I’ve added more quality content.

]]>
https://rmalis.com/your-site-isnt-ready-to-show-ads-low-value-content/feed/ 0 868