Tuesday, July 23, 2019

Get A Free Press Release on a PR website

Truly Free - 1 Press Release per day



PR-Inside - 3.4 euro to post one

Hype News

Issue Wire - free tier includes just 1 PR

PRLog - Free press

Wednesday, July 17, 2019

10 Must Have Wordpress Plug-ins

A List of 10 of the Most Important Wordpress Plug-ins

Here's a List of the most important plug-ins to make your wordpress site stand out from the crowd

1. SEO Plug-ins
2. Responsive menu Plug-ins

Thursday, July 4, 2019

Top 10 Free SEO Audit Tools and SEO Boosters

Our Top 10 Free SEO Tools that Every Website Designer Needs

If you are going to build or maintain a website in 2019, you need to audit your SEO periodically, and make sure it's up to today's modern standards. Last year's SEO standards are now obsolete and google has changed things quite a bit. Ok, so we don't have 10 items yet. If you know of some more, please leave a comment below.

1. Nibbler Website Tester

SEO Audit, Headings finder, general website auditor. Immediate results, fresh and clean.

2. Ubersuggest

Get keyword suggestions from competitor websites, get backlinks. Usually about 3 months out of date, and quite inaccurate at times. Niel Patel has many more free SEO tools on his website.  His website analyzer tool, and ubersuggest will often give you false results in an attempt to sell you on his digital marketing services. A summary of his free advice for digital marketing.

3. Creative Click Media SEO Checker

Another SEO company offering a free checker tool. Get a PDF report showing all sorts of things.

4. Semrush

many more free website checker tools here.

5. Keywords Everywhere

A keyword research extension for Chrome and firefox. It will help you find keywords in google.


Check your content to make sure it does not appear to be copied from somewhere else.  In my own testing, I found that it would deliver questionable results, and flag things are copied.

7. Blackhat vs Whitehat SEO

A great story about SEO

8. Domain Authority Checker

what's your domain authority number? Did google just knock you down to zero?

9. Write A Great Landing Page

A great blog entry on how to write landing pages.

10. Get A Free Backlink In A Business Directory

Backlinks are important, but you cannot get them for free, until now. Here's a place to get one for free.  The California Business Directory is offering free listings with links and SEO features for free. Sign up here.

11. SiteMap Maker Tool

The sitemap maker will produce an XML sitemap for you https://www.xml-sitemaps.com/

12. Free Press Releases to Give Your Free Backlinks


Saturday, June 29, 2019

Fix: The Diagnostic Service Host service failed to start due to the following error.

Lots of these Messages about the Diagnostic Service Host in the System Log

On Windows 7 Machines Attached to A Domain

The Diagnostic Service Host service failed to start due to the following error:
A privilege that the service requires to function properly does not exist in the service account configuration. You may use the Services Microsoft Management Console (MMC) snap-in (services.msc) and the Local Security Settings MMC snap-in (secpol.msc) to view the service configuration and the account configuration.

Here's How to Fix It

You see this in your system logs repeatedly, and its dragging down your computer and making it run slow.  Startup is slow, and there are no real diagnostics. Plus it's difficult to search your event logs. This is one of the items to fix in our blog entry on making your computer run faster. There are lots of blog entries about how to fix this, plus many paid fix-it services such as experts-exchange say they have the fix, and even put [SOLVED] in the title.
Lot of messages about the Diagnostic Service Host repeatedly

How to Fix It with Group Policy

The first thing to do is to open a group policy object that applies to your desktop and server computers.  Hopefully you can edit your Domain group policy.  You have to adjust the following items:  Bypass Traverse Checking, Impersonate a Client After Authentication, and Profile System Performance by granting certain users permission.  

In the registry, you will see this:
Required privileges of the Diagnostic Service Host 
The registry shows what privileges are needed. You need to grant them to the service users.

SeChangeNotifyPrivilege  -- Bypass Traverse Checking
SeImpersonatePrivilege -- Impersonate a Client After Authentication
SeSystemProfilePrivilege  -- Profile System Performance

All in Computer Configuration -> Windows Settings -> Security Settings -> Local Policies

Edit the User Rights Assignment Policy Object, when done it will look like this.

by granting each one:

All need to have:
NT SERVICE\WdiServiceHost

Just like this for each one
When fixed, you will see this in services.msc
Finally, go to each machine and reboot it.




Thursday, June 27, 2019

How to setup Rabbit SVN client in Ubuntu 14.04 LTS

RabbitVCS is a graphical front-end for version control systems available on Linux. It integrates into file managers to provide file context menu access to version control repositories. The project was originally called NautilusSvn, but due to the desire to support file managers in addition to Nautilus and more version control systems, it was renamed to RabbitVCS.

Step 1: Open your Terminal press Ctrl+Alt+T.
Step 2: Run the following commands one by one

RabbitVCS team also maintaining PPA for Ubuntu and Debian systems. Use the followings commands to add RabbitVCS ppa in your system install required packages.
$ sudo add-apt-repository ppa:rabbitvcs/ppa
$ sudo apt-get update
$ sudo apt-get install rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus3

Step 3: Restart your ubuntu desktop.

You have successfully installed Rabbit SVN Enjoy.

To remove Rabbit SVN client

Step 1: Open your Terminal
Step 2: Run the following command.

sudo apt-get remove rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus3 nemo-rabbitvcs

Step 3: Restart your desktop.


Wednesday, June 26, 2019

Useful Web Development Hacks and Useful Tips

Javascript, HTML and PHP Tips and Shortcuts

Change the URL in the browser address bar.  A useful hack to so that when you have an <A HREF="#" > and an OnClick handler, your browser addressbar will get cleaned up.

Changing only what's after hash - old browsers
document.location.hash = 'lookAtMeNow';
Changing full URL. Chrome, Firefox, IE10+
history.pushState('data to be passed', 'Title of the page', '/test');
The above will add a new entry to the history so you can press Back button to go to the previous state. To change the URL in place without adding a new entry to history use
history.replaceState('data to be passed', 'Title of the page', '/test');

Sunday, June 23, 2019

How to Make A Keymaker in C-Sharp

You can reverse engineer .Net programs to find out how other software developers protect their applications.  It is a good exercise that will teach you how to make a better software protection scheme.  The first thing to do is get a good set of reverse engineering programs. I recommend dotPeek32. DotPeek32 can open up a .Net program and show you the source code.  Dot.net programs are merely interpreted and not true machine code. They are Microsoft's famous JustInTime compiled with CLR run time code. Using DotPeek or RedGate .Net Reflector, you can easily reverse engineer any application.  My simple keymaker serves as an example of how you can make keymakers using one that I found inside an obscure industrial service application.  You could use the same things in your own application, although I would recommend extending it to 32 characters.

The Simple keymaker UI
the code shown below is the called Sample_Keygen.Form1. It is the event handler for the "Get Key" button.  It works by taking a four digit customer number and 2 digit major version number as inputs, then applying an offset to the customer number strings and version number strings and spreading them over nine (9) characters of an char array.  The second and fourth characters are just random characters that are not used.   In actual operation, the output is stored in TextBox3 and is then given to the customer to use in his own application.  This same function is used in the protected application, and the second and fourth characters are not compared against the inputted key value.  It is a simple and effective way to protect an application against software piracy.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;

// using this dll
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0
namespace Sample_Keygen
    public partial class Form1 : Form
        public Form1()

        private void button1_Click(object sender, EventArgs e)
            int num1;
            object obj1;
            int num2;
            int CustNum = 0;
            int VersionAPP = 1;
            string Num, Ver;
            char[] chArray = new char[9];
            Num = textBox1.Text.ToString();
            Ver = textBox2.Text.ToString();
            if (!Int32.TryParse(Num, out NumNaja))
                NumNaja = 0;
            if (!Int32.TryParse(Ver, out VersionAPP))
                VersionAPP = 1;

            string str1 = Microsoft.VisualBasic.Strings.Format((object)(double)CustNum, "0000");
            string str2 = Microsoft.VisualBasic.Strings.Format((object)(double)VersionAPP, "00");
            chArray[0] = Microsoft.VisualBasic.Strings.Chr(checked((int)Math.Round(unchecked(Conversions.ToDouble(Microsoft.VisualBasic.Strings.Mid(str1, 1, 1)) * 2.0 + 65.0))));
            chArray[1] = Microsoft.VisualBasic.Strings.Chr(checked((int)Math.Round(unchecked((double)VBMath.Rnd() * 26.0 + 65.0))));
            chArray[2] = Microsoft.VisualBasic.Strings.Chr(checked((int)Math.Round(unchecked(Conversions.ToDouble(Microsoft.VisualBasic.Strings.Mid(str1, 3, 1)) * 2.0 + 65.0))));
            chArray[3] = Microsoft.VisualBasic.Strings.Chr(checked((int)Math.Round(unchecked((double)VBMath.Rnd() * 26.0 + 65.0))));
            chArray[4] = Microsoft.VisualBasic.Strings.Chr(checked((int)Math.Round(unchecked(Conversions.ToDouble(Microsoft.VisualBasic.Strings.Mid(str1, 2, 1)) * 2.0 + 65.0))));
            chArray[5] = Microsoft.VisualBasic.Strings.Chr(checked((int)Math.Round(unchecked(Conversions.ToDouble(Microsoft.VisualBasic.Strings.Mid(str1, 4, 1)) * 2.0 + 65.0))));
            chArray[6] = Microsoft.VisualBasic.Strings.Chr(checked((int)Math.Round(unchecked(Conversions.ToDouble(Microsoft.VisualBasic.Strings.Mid(str2, 1, 1)) * 2.0 + 65.0))));
            chArray[7] = Microsoft.VisualBasic.Strings.Chr(checked((int)Math.Round(unchecked(Conversions.ToDouble(Microsoft.VisualBasic.Strings.Mid(str2, 2, 1)) * 4.0 + 65.0))));
            chArray[8] = Microsoft.VisualBasic.Strings.Chr(checked(unchecked(checked(Microsoft.VisualBasic.Strings.Asc(chArray[0]) - 65 + Microsoft.VisualBasic.Strings.Asc(chArray[1]) - 65 + Microsoft.VisualBasic.Strings.Asc(chArray[2]) - 65 + Microsoft.VisualBasic.Strings.Asc(chArray[3]) - 65 + Microsoft.VisualBasic.Strings.Asc(chArray[4]) - 65 + Microsoft.VisualBasic.Strings.Asc(chArray[5]) - 65) % 26) + 65));
            obj1 = (object)(Conversions.ToString(chArray[0]) + Conversions.ToString(chArray[1]) + Conversions.ToString(chArray[2]) + Conversions.ToString(chArray[3]) + Conversions.ToString(chArray[4]) + Conversions.ToString(chArray[5]) + Conversions.ToString(chArray[6]) + Conversions.ToString(chArray[7]) + Conversions.ToString(chArray[8]));

            textBox3.Text = obj1.ToString();