Sunday, November 19, 2017

A Day Wasted on FTC Compliance

Oops, I just discovered a problem. I told blogger to use ssl for this. I can't afford an SSL certificate for my site; So I can't post resources from my primary site on this site.

I just wrote a post on FTC compliance that I put on my other blog.

Friday, November 17, 2017

Never Shop At a Store that Uses Domain Privacy

I was reading through the "Terms and Conditions" page of a web site that I was considering promoting.

Line 15 of the terms read:

15. 1. It is mutually understood and agreed that this Agreement shall be governed by the laws of the place where the Company holds its principal place of business,

The web site itself does not say where the company is located.

Their contact page just has a web form. They use a 1-800 number and they bought the domain privacy feature from Godaddy which masks the information used to register the business.

The fact that this company does not report its location makes the whole idea of doing business with this company absurd.

If you are considering doing business with a company you should always check the company's contact page and find out where they are. Any contracts you make with a company will be governed by the state (or country) where the company resides.

If the company does not report their location on the contact page; you can often discover it with a whois tool like whois.domaintools.com or whois.icann.com or even whois.godaddy.com.

If a company does not report its location on a contact page and is using domain privacy; you should not do business with that company.

I decided not to do business with the company in question. Quite frankly, I suspect that others have decided not to do business with the company for the same reason.

Businesses Should Never Use Domain Privacy

I believe that we need to protect the privacy of individuals. If you are blogging about a political opinion; buying domain privacy is smart.

If your goal is to engage in business, you should never use domain privacy.

Domain Registration and SEO

Millions of people look up whois information. There are robots that troll the whois database as well. These people compile lists and make reports. Many of these reports end up online.

These people end up creating free links and traffic to your business. When you buy domain privacy, you lose out on a bunch of free traffic.

The robots that troll the whois database send a lot of spam. The answer to this spam is simply to create a throwaway mailbox for your domain registration. See, if you have a domain name, you have an infinite number of mail box addresses. I used the mailbox spam for my registrations: eg spam@example.com. I only use this address for domains.

You do not need to buy domain privacy to protect you from spam because you get an infinite number of email addresses with your domain name!

If you have money (I don't have money); you should get a box at a local mail center. The starting price is usually $8 per month. (Postnet, UPS Store, post office. The address should have the correct city and state of your business. Some local office buildings will offer mail boxes.

ADVERTISEMENT: If you had a lot of money (starting $50/month); you might consider getting a virtual office with DaVinci Office. This option gives you meeting space at prime locations around the globe. You can add a virtual reception and other cool features.

Conclusion: Business contracts tend to be regulated at the location of the business. You should never do business with a company that uses Domain Privacy services. Conversely, if you are a company and you want to do business; you should avoid using domain privacy.

The best way to protect your privacy is to get a mail box or virtual office. You can protect your email address simply by using a dedicated email address for domain registrations.

Monday, November 13, 2017

Outdenting the Listings

I am a big fan of using defaults.

The original concept behind the web was that people would customize their browsers to the font and font size that they found the most readable. Web designers should then use the default fonts.

What happened is that manufacturers increased the resolution of their screens. The browsers kept the default font size in pixels and web sites relying on defaults became less readable.

Anyway, I decided to clean up broken links. I've removed 700 so far. While doing so, I decided that the site was just too illegible at the current defaults.

So, I switched the lists to a sans-serif font. I also decided to outdent the list.

I am happy with this change.

I think I will be able to pull another thousand broken links from the site.


Sunday, November 12, 2017

Reviving the Community Color Project

In this last year, I've been investing my efforts in a fool-hearty attempt to revive the Community Color project.

This project examines the way that different communities are reflected on the Internet. The projects includes directories for towns in Utah, Colorado, Arizona and Wyoming.

I actually started this project for towns in Idaho, Montana, Oregon and Washington. I gave away the first directories, but kept the Missoula.ws domain.

My effort to revive the project began by rewriting the code for the site from scratch. I then began feverishly adding new pages and "site reviews." I have also been investing time in removing broken links. The number of web sites that failed in the last few years is disheartening.

I now need to work to build some inbound links. I figure that the best way build such links is to blog about the site and the efforts I am taking to revive the site.

Monday, September 25, 2017

Updated About Page and fixing broken links

Maintaining a web directory is time consuming enterprise and has little reward. Anyway, I just updated the about page for Community Color.

I also started fixing some of the broken links to pages in the directory which will hopefully increase traffic.

My last server could only deliver 10,000 pages a day. I believe that the new server will be able to deliver several hundred thousand page views per day. The challenge is figuring out how to create content that is worth that many page views.

Saturday, August 12, 2017

DMOZ Died

I logged into DMOZ.org yesterday and was sad to see that Mozilla's "Open Directory Project" had finally failed.

DMOZ was a really big thing back in 2000.

DMOZ was a human edited directory maintained by volunteers. The directory was arranged in a hierarchical fashion which is a common structure for organizing data.

The DMOZ directory was a primary source for some of the early search engines. For awhile a listing on DMOZ resulted in a big boost in one's position on Google and Yahoo.

Apparently, DMOZ inspired the creation of Wikipedia.

DMOZ was owned by AOL (America Online). AOL was a huge thing back in the 1990s. AOL provided online access before the general public was allowed to connect to the Internet and instantly became the biggest internet service providers when the public was allowed access. AOL was acquired by Verizon in 2015.


My desire to build community portals coincided with the creation of DMOZ. I never found a funding source. I never developed a network of volunteers because I believe strongly that people should be paid for their work.



My idea is to mix affiliate ads with the free listings on the directory. This income stream fails because people don't use directories for shopping. They use directories for browsing.

Anyway, I am staring at the blank page for DMOZ and am left wondering if I should see the fall of the largest Internet directory as an opportunity or if I should see it as yet another sign that the days of my project are numbered.

Friday, August 11, 2017

New Home Computer

I finally faced up to the fact that the last computer I purchased did not have enough power to do complex tasks like edit photos, open spreadsheet files or load ad laden web pages such as Tumblr.

The computer had enough power. IMHO, the real problem was that Windows10 had become so bloated even fast computer is bloated down by bad software.

So, I bought a new computer.  Since I've been using Ubuntu for my web server, I decided to get one built for Linux. It is Meercat from System76.


System76 Meerkat

Sunday, March 05, 2017

Porting to new server

I am finishing the job of porting web sites to the new server. The new site uses PHP7, SQLite and HTML5. Things are different enough that I have to rewrite every single line of code in the program.

Anyway, I would love to receive comments on the site. I've been working on this project since 1999 and have actually received any comment on the idea of creating local directories.

The site currently does not have any interactive features. So, I will use this blogspot blog for comments.

I just moved iMoab.com to the new server. The site seems to respond quickly. The last Utah directory to to will be the Salt Lake Directory.

Monday, February 20, 2017

The Martyrdom of Parley Pratt

I was raised in Denver and grew up loving the history of the Old West.

One of my goals in creating the Community Color sites was that sites would justify taking time to explore the colorful history of different regions.

My family moved to Utah some decades ago. The problem I face is that I really do not like the history of Utah.

Utah was settled by Mormons. Mormonism, it turns out, is a culture war religion. The Book of Mormon claims that there was once a great extermination war that took place on this continent between the Nephites (who were white and delightsome) and a variety of other tribes who were dark and loathsome. The Nephites lost the war.

Both Joseph Smith and Brigham Young claim that the proof of the Book of Mormon is the base observation that Europeans have lighter skin that Native Americans.

Mormonism teaches that a group of righteous saints are to be gathered in the "latter days" and that these saints are locked in an unending culture war with everybody who is not a member of their tribe.

Joseph Smith liked the ladies. Smith restored the principle of polygamy and sealed himself to as many women as he could get his hands on. Smith's band of wives included some fourteen year old girls and the wives of his followers.

Polygamy is an interesting device in that it allows powerful men to grab even more wealth and power.

The history of Utah is one in which Brigham Young and the Mormons would form powerful polygamist clans and would then use the clans to grab as much territory as possible.

There were invariably conflicts between the immensely powerful Mormons and everyone else.

The story of Saint Parley Pratt provides the typical settlement story, but with one sensational twist. (Members of the Latter Day Saints consider themselves Saints on earth).

Anyway Parley Pratt was an early convert to Mormonism and was a part of Joseph Smith's twelve Apostles. Pratt saw the potential of polygamy and took to marrying multiple women with a vengeance.

After emigrating with Brigham Young, Pratt helped with the survey of Parley's Canyon and, being an extremely powerful member of the LDS Church, grabbed the choice chunk of land which is now Park City.

While in San Francisco, Parley Pratt seduced a woman named Eleanor who was married and had three children with a man named Mr. Henry McLean. Without gaining a divorce, Eleanor was "sealed" to Parley Pratt in Salt Lake.

I need to point out that Joseph Smith had sealed himself to the wives of several of his followers. So, marrying another person's wife is not considered outlandish among Mormons.

Anyway, Henry McLean was cantankerous. He tried sending his children to their grand parents in New Orleans to keep them from the clutches of Parley Pratt.

Parley and Eleanor went to New Orleans to collect the children. After Pratt took the children, Henry McLean followed and eventually shot Parley Pratt.

So, Parley Pratt, who was an Apostle of Joseph Smith, was pursued, persecuted and martyred by an evil gentile named Henry McClean.

This martyrdom of Apostle Parley Pratt is held by Mormons as one of the great persecutions of their faith.

I guess Mormons hold that a great man like Parley Pratt should be able to marry the wives of non-great mean like Henry McClean without repercussion.

Now, here is the problem I have with Utah history: Mormonism is a culture war religion. The LDS Church teaches that its adherents are the righteous who were gathered in the latter days to engage in an extermination war with the evil gentiles.

Because the area was built by people engaged in culture war, every piece of history in this state gets interpreted as part of the culture war. It is impossible to research the history of the state without getting drug into this mean hateful culture war.

The town of Park City was originally named Parley's Park City after Parley Pratt.

Park City is one of the choicest pieces of real estate in the Mountain West and is now an internationally recognized destination resort.

One cannot talk about the history of Park City without discussing Parley Pratt.

One's opinion of Pratt almost always follows culture war lines.

The righteous hold that Apostle Pratt was a great patriarch of the faith who married 12 women  but was persecuted and martyred by an evil gentile. Non Mormons tend to look at Pratt and see a lecherous lout who broke families apart by seducing married women.

The great culture war that dominates live in Utah means that people in general cannot talk about the history of the area without being drawn into a mean hateful culture war launched by Joseph Smith.

BTW, I do not believe that Native Americans are loathsome. My observation is that people in southern climates tend have darker skin than people in northern climates because they spend more time in the sun than people in cold northern climates.

Thursday, February 16, 2017

New Site and Advertising

I am finalizing the the new site design for Community Color. I have only two sites pointed at the new server.

The new site is much faster than the old site, and I hope it will be able to handle a hundred times the traffic of the old server.

The Community Color project had over 10,000,000 page views last year. The old server would freeze up whenever I exceeded that amount.

Sadly, I made less that $3,000 revenue from the site. Last year I performed three test purchases on the site. I received credit for only one of the three purchases. It makes me livid. I am sending hits to advertisers by the thousands who are not crediting me with the traffic.

I figured my best bet for salvaging the project is to replace the affiliate ads with direct advertising. The problem with direct sells is the collection cost. Spending two hours to collect $10 from an advertiser is a path to insolvency.

So, what I decided to do is to sell the ads in units of 100,000. The price for the unit will be $25.00.

As mentioned, I had 10,000,000 page views last year. I should be able to consume 100 lots of 100,000 ads.

Advertisers can order an ad (I need advertisers in Colorado, Utah, Arizona and Southern Wyoming.).

If I approve the ad; I will place the ad on the site and send a Paypal invoice show the ad placement. If the advertiser is happy; the advertiser can pay the bill. If not; I will delete the ad after a week or so.

Now for the scary part. I am betting the boat on my ability to sell 100 ads for $25 a pop to make $2,500.

The market for local advertising has been so weak for the last few years that I am not sure there's a hundred businesses in the Mountain West that would buy the ads.

Anyway, I have the ad ordering program online. The ad is 738x90 banner that goes above the fold on the page. I have at most one such ad per page. The ad can be text or an image.

I am looking for ads in Arizona, Colorado, Utah and Southern Wyoming. Here is the ad ordering page.  You can order an ad. I will put it online and send a Paypal Invoice. If you like the ad, you can pay the invoice; Otherwise I will remove the ad.

Monday, February 06, 2017

Reviving Utah Color

I have put this project off for too long!

I am in the last stages of moving the Community Color sites to the new server. Due to changes in PHP, I've been forced to rewrite the code from ground up and it is going extremely slow.

I decided to start the migration with the UtahColor.com. The new design will feature a subdirectory for each of the 29 counties in the state. Egads, 29, this is a lot of work.

I am laying in a framework starting with Beaver, Carbon County, etc.

I appreciate any feedback on the site.

Quite frankly, the reason that I've taken so long on the rebuild is that I have not received any feedback and the lack of input has zapped my enthusiasm for the project.

Saturday, November 26, 2016

Small Business Special

At the dawn of the Internet, I realized that small business was likely to get the shaft while big businesses make big deals between themselves to dominate the web.

I decided that I wanted to do something to help small business; So I started making little directories for local businesses in select towns in the Mountain West.

The original idea was that I would build directories and web services for small communities. The directories would be funded by affilate ads from big business. The big businesses would pay for free services for small businesses and charities. This worked okay for awhile.

This year, I decided to experiment with selling ads directly to small businesses. The ad rate will be $25.00 for 100,000 page views. The Ads are 728x90 banners that gone in the upper fold. Note, I serve the ads in SVG and they scale to screen size. The ads can be a 728x90 banner or just plain text. I present the Text in SVG. The ads scale to screen size.

The sites show at most one ad per per page. The click through rate on my old affiliate ads was a little over one click per thousand page views.

I am only interested in local ads from small business. The directories are in the mountain west. I have select towns in Utah, Colorado, Wyoming and Montana. I have a county by county directory for Arizona.

The work flow for ordering an ad is: You select a directory and a subject within a directory. You then define the ad. The Text ads have two lines. The title line should be under 28 characters and the text line under 75.

If you have a 728x90 image on line, you can enter a link for the image. I will copy the the image to my server.

I also use box ads (336x280). These ads go on calendar events. My ad inventory for these box ads is really small. So I am not pushing the box ads.

When you order an ad I require that you give me your name and an email address.

If I approve the ad; I will place the ad on apropriate areas on my site. After placing the ad, I will send you an invoice via Paypal to your email address for $25. The invoice includes a link showing the placement along with ad stats. You can then review the placement.

If you are unhappy with the placement; don't pay the invoice!

Note, I do not offer a money back guarantee after you pay the invoice. I am giving you a review period in lieue of a money back guarantee.

Some ad campaigns have a fixed duration. If your ad expires in the next 90 days, enter the expiration date. I charge only $12.50. I turn fixed duration ads off when they expire or have 40,000 page view, which ever comes first. I cannot guarantee 40,000 page views and don't offer a prorated refund as calculating a prorated refund for $12.5 is a pain in the tush.

This program is in an experimental phase. I do not mind if people order the ads just to test the program. Write in the note area that the order is a test.

Here is the ad ordering page for Park City. The first line of the program lets you select the site for your ad. Park City is the only site on my new server. This new ad program goes live as I move sites to the new server.

Wednesday, September 07, 2016

Demise of ITT Tech

Looks like The Obama Administration was successful in shutting  down ITT Tech. I wander if they will be able to shut down the University of Phoenix this year?

The closure of ITT Tech makes me sad. A decade ago the school had a curriculum that was better than most local community colleges. ITT Tech students were actually getting a higher return for the amount of money they invested in education than other schools.

ITT Tech was briefly owned by ITT and was truly focused on giving students the skill sets needed for the technology environment of the day.

Businesses tend to align with their funding source. The primary funding source was the Federal Government and guaranteed student loans.

So, instead of focusing on developing a better curriculum for less. It appears that ITT Tech took the low road and turned into a mill for processing student loans.

Even worse, ITT Tech appears to have devolved into a student loan mill during a weak job market. The poor students would pop out of the company into a soft job market and simply be umemployed and deeply in debt.

I had the misfortune of wasting two years of my life as an instructor for a student loan mill in Utah. The company was very good at getting students to sign the dotted line on the loan application, but was providing a subpar product.

Many public universities appear to be little more than student loan mills. Since the universities don't have private investors, they don't get raise the ire of the public. When public universities go bad, Democrats simply yell for higher taxes.

Anyway, now that the Obama Administration has the formula for closing down private for profit schools, I wonder how many schools he will be able to close before the end of his administration.

Tuesday, September 06, 2016

Replacing Affiliate Ads with Direct Ads

I am upgrading the Community Color Web Sites to PHP 7. I am also replacing MySQL with SQLite3 and upgrading to HTML5. It's a big project that I hope to complete this week.

As part of the upgrade I will replace the Adsense Ads and Affiliate Ads on the site with direct local ads.

I like the basic concept of affiliate advertising. A site with a product to sell offers a commission on sales. Web sites run their ads and get an occasional commission.

There are tens of thousands of merchants with affiliate programs. These merchants offer millions or products.

I believe that affiliate marketing is a good thing. Because there are so many products, web sites can run ads for things they support without compromising their message.

The problem I have with affiliate marketing is that the huge networks that offer affiliate ads aggressively track user activity. These use the information they gather to manipulate user behavior. They often engage in activities that undermine the sites that run their ads.

I believe that my sites are well enough established to break from the clutches of the big marketing firms and that I will be able to replace the ads. Currently, I have over 10,000 page views a day. My 10 year old server freezes up when I have more. I believe the new new server and improved code will be able to handle a hundred times more traffic.

I decided that the best way to handle local advertising is to sell the ads in blocks of 100,000.  I am currently getting about $30 for every 100,000 page views. Since I will bill in advance, I decided to charge $25 for every 100,000 page views. This is a super low rate of 25¢ CPM.

The new site will go live in a week or so. I would love to have a few people buy ads before the site goes live so that I can tweak the program.

The ad is a 728x90 banner that is in the upper fold of the page (between the page title and contents). I put text ads in a stylized SVG block. You can pre-order ads on my test server.

Use this form to order text ads.
Use this form to order a banner ad (you need a link to a 728x90 banner).

The ads won't go live until I switch to the new server which I hope to do soon.

I only have 10,000 page views per day (which I've split into targets). I only want ads related to the target. I don't want to show ads for Denver Lawyers on the Moab Real Estate page. The flow of the program is as follows. A person orders an ad. If I have a relevant target, I will approve and place the ad.

Some time after the new site is live, I will send the user a payment request using Paypal (Paypal accepts Visa, Mastercard, etc). The request will show the ad placement. If the person is happy, they can pay the bill. If not I will remove the ad. I am using a delayed payment instead of a money back guarantee.

Monday, September 05, 2016

Still No Date Picker in Firefox

I am bummed out. Firefox still hasn't implemented the date picker that was in the HTML 5 specs that came out a few years back.

I hold that the date picker should be provided by the browser because it gives the client a unified experience across sites. Here is a sample form with the new HTML date types. Chrome and the other browsers I tested have date pickers. Firefox does not.

This means I can't depend on the feature. Arrrggggggghhhhhhhh!

Friday, September 02, 2016

New Privacy Policy

I created a new privacy policy page for the Communtiy Color sites.

The privacy policy tells the world that [gasp] I track activity on the site.

I track the activity to see what parts of the site people visit. I use this data to figure out how to expand the site. If people are interested in sports, I add more info about sports. If they are interested in history, I add more pages about history.

Our leaders and media vilify small sites for using cookies and tracking activity. The EU requires that web sites apologize if they use cookies.

A cookie is simply a device that allows web sites to carry information between pages. I do not use cookies for casual visitors to the site. However, I do drop a session cookie when a user logs in to the site. I need the cookie so that they can modify the information on their account.


Now, I find the idea that every site provides a privacy policy to be absurd. The only privacy risk of small sites is that they might send spam if they require a user's email address. This risk is adverted by being careful in giving out one's email address. Personally, I use multiple emails addresses and never give up my most private addresses.



As for this new policy:

I've been hoping to replace my large national advertisers with small local advertisers; So, I am using the privacy policy to sell my new local advertising product.

My advertising product seeks to replace advertisements from large national advertisers that track user activity with small local advertisers that do not.

So, while I think the demand that every site includes a privacy statement to be foolish, I am not adverse to using the page to sell a product. If advertisers bought their ads directly from sites, it would help replace ads from big advertisers that create user profiles with small sites that do not.

Thursday, September 01, 2016

Online Advertising

I've been working on upgrading the Community Color sites. The process is taking longer than I had hoped.

The new design will offer targeted local advertising.

The way this works is I assign each page a target. The Design an Ad page allows advertisers to select a target and create an ad related to the target. The program will allow both text and image ads. I create the text ads with SVG.

The cost for the ads will be $25 for 100,000 ad views. That is an ad rate of 25¢ per thousand ads. This is an extremely low rate.

The catch is that it might take several years for me to display 100,000 ads on some of the smaller targets.

The new design is not yet live, but my test server is up.

The process will work as follows. Advertisers can design ads on my test server. If I approve the ad; I will send a Paypal invoice to the advertiser after the new site goes live. Advertisers can then accept the placement by paying the invoice or reject it by not paying the invoice.

You can order an ad. See what it looks like on the site and then cancel the ad just by ignoring the Paypal invoice.

It would be fun to have a few ad orders before going live. That way I could test the program with live data.

Monday, August 08, 2016

SQL Table Object

I open sourced the code for the object I use to create simple HTML tables. This is somewhat of a Swiss Army Knife object that can be used to create tables in multiple ways.

To understand the object you will want to look at both the source code and the demonstration page.
The object I use to produce forms is much more complicated. I am updating it for Forms 4.0.


NOTE: The program uses the sqlRow() function which  encapsulates the PHP PDO object. It uses the htag() function which indents the output; so that my HTML is well formatted.

Friday, August 05, 2016

Path to Citizenship?

In 2013, the US naturalized 777,416 immigrants. The chart on uscis.gov indicates that the United States has naturalized well over a half million immigrants every year this decade.

Hillary Clinton's claim that there is no "path to citizenship" is a lie. The fact that the United States continues to have the most generous immigration systems on the planet proves Clinton to be a liar. (Not surprising for a person married to a convicted perjurer).

The problem we face isn't the lack of a "path to citizenship" but the fact that that millions of people are blatantly ignoring immigration laws which makes it much more difficult to define that path to citizenship.

In today's speech, Clinton made the claim that illegal immigrants pay some $13 billion into Social Security.

I need to point out that it is the employers who pay into social security.

The true statement that employers paid some $13 billion into social security.

Quite frankly, this same amount of money, if not more, would have been paid into the system on the behalf of US citizens if the employers hired US citizens instead of illegal immigrants.

I personally do not hire illegal immigrants. Many illegal immigrants appear to be part of a shadow economy and the people in the shadow economy work in cash and do not pay social security.

The claim that Republicans are anti-immigration is a blatant lie. We have a path to citizenship proven by the half million people who make it through that path each year.

The problem is that we don't have an effective path for denying citizenship.
As for deportations, If I were president, I would make enforcing visas a priority. A visa is a contract. People violating the terms of their visa show a contempt for contracts and the rule of law.

Hillary's statement that she would only enforce immigration laws in regards to violent offenders is horrible. We need to enforce visa laws to have an effective visa system. By openly declaring that she would not enforce Visa laws, Hillary has made it more difficult to have a liberal visa system.

Aggressive enforcement of visas is not anti-immigrant because it allows for a greater liberalization of visa laws. The idea that being granted a visa should be seen as a path to citizenship is absurd.

Quite frankly, since violating the terms of a visa shows contempt of law, I would say that people who grossly violate the terms of the visa should be kicked off the path to citizenship. Showing respect for contracts, including a visa contract, should be part of the path to citizenship.

Monday, August 01, 2016

Redirects and Broken Links

The migration to the new server is going slow. I am rewriting each line of code. Oddly, my programming style is becoming more Spartan. with time.

Here is the code for the primary redirect program. A redirect program simply records a hit and sends the user to destination for a link.

Most users don't like web sites recording their links. So, I only use the redirect program on merchant ads and paid links. I only track usage for about 5% of the links in the site.

My stat counters say that the redirect program has been called 1.7 million times; So, I figure that I have sent well over 20,000,000 hits to sites listed in the directory.

There are several robots, eg Googlebot, that read the site. Many of these robots are created by companies that send traffic to web sites. I believe my local directories have had a positive impact on local commerce.

Anyway, I made two huge improvements with this new version of my redirect program.

The first is that the program now produces full blown pages, instead of a cryptic message, when links aren't found.

The really big improvement is that I decided to start recording information about broken redirects.

I did not do this before because my site verify the existence of a link before generating the code for the link.

While coding this site, I realized that, if I began using redirects for more links, then I would be in a better position to discover broken links as they occur.

So, I will probably come back and visit this redirect page after I finish the migration to my new server.

Thursday, July 21, 2016

First Page

I am still extremely unhappy with the PHP Object Model. But I simply have to move my sites to a new server or perish.

Anyway, I just created the first official page for the new design. I decided to start with something simple; So, I created the About page . Each site in the project has an about page with a blob of text about the project. I store the blob in a SQL table.

As promises I am open sourcing the code. The code for this page is four lines long. The page simply calls the framework and says: I want to print a page with this data.

Here is the code for the About Page.

Okay, I could have reduced the size of the page to three lines of code.

PS: I am still working on the CSS and overall page layout. I will finish the work on the layout after I put up several pages with more complex content.

PPS: Okay, Okay. I removed the fourth line of code. The whole point of this project is that if one has a decent framework, then thee pages themselves will be short and fast.

Monday, July 18, 2016

Recoding Site

I need to get myself in gear and start programming again.

The problem I face is that PHP deprecated the mysql_query() function and wants people to use a hideous piece of code called PDO.

I have yet to find a single implementation of PDO that does not turn my stomach. I am to the point of giving up on PHP altogether and just writing everything in C. Let's face it, the only reason I used PHP was because my webhost wouldn't let me write and compile code on the server.

PHP is a programming language that is commonly used to create HTML for display on a browser. Most PHP programmers don't care about the quality of the HTML, but I want the HTML produced by my programs to be well formed and well formatted.

PHP does not allow programmers to override the echo command; So I wrote a function called htag() which keeps track of the indentation level of the HTML code.

As for PDO, I created a function called dbConn() to encapsulate the PDO Object. I make the calls to the database with functions called sqlValue(), sqlRow() and sqlExec().

Being a good netizen, I will open source the PHP for the Community Color project on the site prog.communitycolor.com. The program includes a schema viewer which lets you see the create statements for the tables used by the site and a code viewer which lets you look at the PHP for select files in the program.

The first piece of code I present is the code viewer. This pieced of code was just a brute force program I wrote to show formatted code. It is not well designed.

The cool thing about these viewers is that they pull and display code from the live web site.

Saturday, May 21, 2016

Starting the Web Site Move

Users of the Community Color sites may have noticed that the sites are overloaded. I added some come that drops the page when the serverload is over 85%. Without that code, the sites would be crashing every hour or so.

The sites are dropping several thousand of pages each day.

This should not be happening. I bought enough resources that I should be able to handle ten times the current traffic.

The solution is to redesign the site and move to a new server. Back in December, I experimented with PHP7 on Ubuntu 14.04. Several of the features of PHP7 did not work correctly; So, I decided to wait until PHP7 was available on a Linux distribution with long term support.

That finally happened about ten days ago.

The day after I bought the new account, my father passed away. Since that event, I've been unable to get a block of time sufficient to test the server and start the migration.

This morning, I decided there was insufficient time to fully test the new server; So, I started the migration. I turned off the ability to register as a user and started the migration.

Five minutes after taking that action, a family member came to the house with ambitious plans that will consume the next three days. I probably won't get an opportunity to work on the migration until next Wednesday or Thursday.

I apologize for the inconvenience.

Thursday, May 12, 2016

In Passing

My father passed away today. It was an expected event after months in rehab and hospice; So, I didn't get a chance to work on my website migration as I had hoped. I will probably be busy for a few days.

Migration to VPS.net

Hurray, VPS.net finally added a template for Ubuntu 16.04 (Xenial Xerus). This LTS (Long Term Support) release includes PHP7. LTS means that a company called Canonical will provide security and product upgrades for 5 years.

I plan on migrating the Community Color sites to this new service. My site has been on its current server for about eight years. One should upgrade servers about every five years or so; So, this upgrade is long past due.

I will be using the VPS SSD account. The account is actually hosted on an array stack of SSD memory rather than a traditional hard disk.

I already moved my email accounts to the new service and am extremely pleased with the performance of the server.

I don't send a lot of email; So, I purchased a single node account for my mail server. The cost of a single node is $5/month or $60 per year.

Webhosts often put email same server as the email. This means that people who attack your email accounts can attack your website and people who attack your web site can get their fingers into your email.

Putting the email on its own server also frees up resources on the web server for delivery web pages.
Email tends to be disk intensive; so it is an ideal application for an SSD cloud account. I am using VPS.net. To get an account do the following:

  • Copy the number 69032. This code gives you a $10 discount on the service and gives me a $10 discount.
  • Go to www.vps.net/products/ssd-vps and select a single node for $5 month.
  • Select the data center which is closest to you. At this point in time, I would select Ubuntu operating system and the Ubuntu 16.04 template (which was just released.)
  • VPS.net will ask for billing information. Paste the number 69032 into the coupon box. This gives you $10, which offsets the cost for the first months.
  • I installed the following packages for my web server: Postfix (a mail transfer agent), Dovecot (email server). Setting up an email server is a pain in the tush. The default settings of these programs often work, but it is best to read the online manuals to fine tune the configuration.
  • I like to read email online; So, I installed Apache2 (a web server), PHP7 and SquirrelMail. (Most of the tutorials have you install MySQL, but you don't need it.
  • As only a few people use my email server. I decided to use a self-signed SSL Certificate. If multiple users use the server, you might one to get one from a certificate authority.
  • The hardest part of the installation was setting up the DNS. This is different for different domain registrars.
Setting up an email server is a real pain in the tush. But I highly recommend putting email on a separate account from the main server.

Saturday, April 16, 2016

Account Maxed

I apologize for the intermittent delays and outages on the Community Color sites. It appears that I've maxed out the resources on my account with Westhost.com. I am using the Westhost cloud service with costs $50 a month. I could double the capacity of the account by going to the next service level, but this would cost another $50/month.

But the sites don't generate $50/month in revenue!

I cannot a $50 a month upgrade!

So, what I am going to do is to switch to an SSD Cloud account on VPS.net.

The Westhost account is a managed account. I includes the CPanel management tool.

I will have to do all the management for the VPS.net account. I will have to use an SSH Shell instead of CPanel ... but I will save $20/month.

As I don't want to spend a lot of time configuring Linux. I decided to go with a basic install of the Ubuntu framework. Ubuntu goes through a little bit more testing that Debian or Centos.
I want to use the Xenial Xerus release of Ubuntu which is scheduled for release on April 21, 2016. I don't know how long it will take VPS.net to offer this on their service.

I am excited about this release.

Xenial Xerus uses PHP7 which includes some major performance improvements. I also intend to switch from using MySQL to SQLite which should also result in performance improvements.

The final problem I face is with the structure of my code.

I wrote two different versions of the site. The first version follows best practices and uses the object-oriented syntax of PHP. The second version uses structured functions.

Despite the fact that object-oriented syntax is considered to be the best form of programming. Traditional structured programming seriously outperform the object-oriented style.

The universities, Fortune 500 firms and governments that prefer class-based object oriented programming can overcome the inherent inefficiencies of this programming style by throwing more hardware at the problem.

But, even $5.00 a month is a huge difference for a small company or individual. (My performance tests all tell me that using the class-based object code in PHP will cost me $5.00 a month.)

Since I am struggling to survive, my temptation is to simply scrap all of my class-based code and just stick with functions.

This leads to my final problem: I have the naive notion that I should open source all of my code. I would be publishing a bunch of functions to people who've been taught that class-based objects are superior to functions.

So, I've been spinning my wheels trying to develop a collection of objects that do not take up more resources than traditional procedural programming. And simple can't nail down a design.

Anyway, I want to apologize for the down time people are experiencing on the Community Color sites. It would cost me $50 a month to fix the problem on my current server. So I am stuck waiting for a software release hoping to lower my costs so that I can keep the sites live.

I anticipate that I will be able to move the sites within a few days after Xenial Xerus becomes available on VPS.net. Until then, I am only able to apologize for down time. I anticipate the release being available some time in early May.

Saturday, February 13, 2016

At the Center of Every Tribe There is a Chief

Many groups and businesses these days have taken to calling themselves "tribes."

At first I thought the trend was cute. The term "tribe" has friendly echoes of community.

For the most part, when I see groups outside the Native American community using the term "tribe," I see a group that is trying to create a deeper senses of community.

I should point out that there is a long (and mostly positive) history of community organizations like the boy scouts that frequently use terms from the native culture.

But after reading blogs by self-proclaimed tribal leaders, I've started getting the willies when I come across efforts to establish a new tribalism in America. Some of the leaders of this new tribalism seem to be going beyond promoting a sense of community. They seem to want to tell people who to think.

I was perplexed by a reading a blog by a "tribal leader" of the new tribalism a week ago. This morning the sentence popped into my head: "At the center of every tribe their is a chief."

This sentence makes a nice gauge for testing groups declaring themselves a tribe.

So, lets say you have a job interview with a group using the term "tribe" in its literature. You should look closely at the political structure of the group. If you can find a person or small group in the organization trying to set themselves up as chief; you should stay clear of the company.

Self-declared chiefs in self-declared tribes tend to be control freaks and it best to stay clear of such creatures.

Control freaks are not seeking to promote community at large, but are seeking to gain power by dividing people and setting them against each other.

In tribal societies of old, the leaders often fit the model of war lords and tribalism was not an ideal society but an extremely fractured existence with the tribes set against each other in fierce conflict.

While I still associate the term "tribe" with friendly ideals about small local communities, I fear that the New Tribalism taking hold in our communities is source of division and not of unity.

Sunday, January 17, 2016

Referrer Report and Link Development

The migration to my new server is taking longer than expected. I keep hitting diversions and suffer long interruptions.

Yesterday, I had a short break; so I created a referrer report and opened a disqus forum titled Link Development.

Rather than just starting a new web site. I want to draw people into a discussion about the direction of the Internet itself.

The World Wide Web was written in a language called HTML (HyperText Markup Language). The defining trait of HTML is the Hyperlink.

Hyperlinks are an interactive feature. You can click on a link and go to a different internet resource.

The configuration of links is actually a very interesting topic, but I rarely come across people openly talking about the overall configuration of links.

Right now, the Internet is dominated by large repositories of links called "search engines." I question if this domination of link repositories is healthy because it effectively centralized power and concentrates wealth.

If centralized repositories are not the best structure, what alternatives can we develop?

I developed the Community Color web sites are simply human edited directories which list links for select towns in the mountain west. I developed the directories to investigate the natural links between local entities. I live in Salt Lake. It frustrates me to no end that there is so little local internet in the direction the Internet is headed.

But there might be people in the broader world who find a discussion of the linking structure of the Internet interesting.

The referrer report tallies up info from the REFERER variable submitted by web browsers that visit my new site. The Link Development is a stub for a section of articles on the topology of links and internet traffic and steps that individuals can take to help keep the Internet a level playing field.

I have to complete the site redesign before writing the articles. But I think it's fun to discuss web design while knee deep in the process.

Wednesday, January 06, 2016

Privacy Policy for New Site

I am working on a major upgrade for the Community Color sites.

I am developing the code on yintercept.com.

I added a code viewer so that I can claim the site is open source.

I decided to log statistics for the site in a SQLite Database.

When writing the "privacy policy" I decided to show the information that the site has collected.

I did this to emphasize that the data collected by small sites like mine is basically harmless.

The reason I track data is to answer questions about the site. For example, I want to know how many people visit a page and the amount of resources consumed by a page.

About seventy percent of the traffic on the web is robots and webcrawlers. I want to know what the robots are doing.

I want to be able to defend the site against DDOS attacks.

I learned the painful lesson that one cannot offer interactive features to the public, like a guestbook, without attracting a great deal of spam.

I require a log in for interactive features.  I use a system of User IDs and Sessions to track usage.  Interactive sites require an id, otherwise they can't respond to the things that you are doing.

The privacy concerns we face on the Internet are not the result of cookies or web owners monitoring their sites. The problem is with huge corporations (and governments) seeking to dominate the Internet by tracking individual activity in minute details.

Unfortunately, the self declare privacy rights activists use methods that make life very difficult for small sites.

The fact that small sites use cookies to provide interactive features is not a problem.  The big sites that monitor activity can do so without cookies.

I hope that my showing the details I track on the site to the public, people will learn that independent web sites are not a threat, but it will probably backfire.

Tuesday, December 08, 2015

Community Color Redesign

PHP7 was released last week.

I am doing a huge redesign of the Community Color sites. I am writing and testing the code on the domain yintercept.com .

I know this sounds pathetic, but I stopped programming a few years back because my coding style is considered an "antipattern" by the technorati. The word "antipattern" is the way that thugs in the programming world put people down.

I finally decided that it is stupid let oneself be cowed by a bunch of thugs.

So, I decided to call my coding style The Resource Model of Web Design.  I just opened a Disqus Thread and invite people who enjoy code or have comments on design to drop a line. The site uses PHP7, SQLite3, HTML, CSS and SVG.

Note, I am blocking in the structure for yintercept.com in HTML. I will add the PHP script after I've tested it line by line with PHP7.

Saturday, November 28, 2015

Happy Small Business Saturday

Happy Small Business Saturday.

The theme of today's post is simply that ownership matters.

Personally, I believe that the most robust form of society involves a large number of small businesses owned by people who are active in the local community.

Mathematically, one can show that networks with a distributed framework and many independent yet interconnected nodes is more robust and more resilient than societies formed in a hierarchy or dominated by a few control centers.

History provides thousands of examples where communities depending on a single business or product fail when faced with adversity, while diverse communities are able to adjust to changes.

Societies that depend on big government, big business or big capital might thrive for a moment but are subject to systemic risks which can can cause untold hardships.

The driving theme of the different project that I engaged in on the Internet is that ownership matters.

So, rather than shopping at a small business on this small business Saturday; I would like to encourage readers to think about and research the ownership of the companies with which they do business?

Look at your credit card statement. How often do you spend at a big business and how often do you shop at small businesses.

One should look through their household. Where did the stuff come from? How much, if any, of things were made locally?

You can look up your web history? How often do you visit small locally owned web sites?

I believe that ownership matters. I want to frequent locally focused small business whenever possible.

One valuable tool for researching ownership is the whois lookup. whois.ICANN.org lets you look up the current owner of a domain. whois.domaintools.com maintains a database with the domain history, but you have to register to use the service. (more domain related tools)

The whois record shows who owns a domain-name. Some times the the domain name is owned by a different person or group from the business. Even worse,  domain registrars push "enhanced privacy services." These services mask the domain ownership.

If you have a business; you should never use domain privacy service. Instead you should maintain a good clean registry entry with your business address. If you are own a business and are using a domain privacy service, you should cancel that service and display accurate information about your business.

The one privacy caveat is that you should not use your primary email address in the domain record because unprincipled marketers harvest publicly displayed email addresses and spam them. Since you can control the email address on your registry record; you don't need to buy privacy services.

I use the email address spam (at) community color. com to inform the user that I treat every message received by that address with suspicion. To date, just about everything I've received on that email address is useless marketing garbage.

A useful shopping tip: If you are considering purchasing something online, you should check out the whois record first. I never buy from a web site that uses privacy services. If a business is not willing to display good contact information, then I assume they are hiding other things as well. Domain privacy should only be used by opinion sites.

The Internet makes it easy to trace down owner the ownership of a domain. It is more difficult to track down ownership of businesses.

Publicly traded firms are required to post quarterly filings with the SEC. I've been maintaining a list of stocks of local concern on this page irivers.com/stock.html .

Unfortunately, only the largest businesses in a community are traded publicly.

Wikiepedia often has good information on huge corporations. But almost no information on local firms.


Anyway, my goal for 2016 is to track down other sources to help people figure out who owns what in their local community. There are many good sources of info on the Internet. States require businesses to file incorporation records and DBA records. Counties often have good databases on land records.

My message for Small Business Saturday is that ownership matters and that responsible consumers should be attentive to who owns what and should consider ownership in purchasing decisions.