Page 1 of 3123

Low-Profile Living

Basically, if you have a website with your name in the URL, you are not living a low-profile life. I should probably change my website from richardxthripp.thripp.com to something that isn’t my real legal name, but I have no intention of doing so. In this article I would just like to talk about the mindset and benefits of low-profile living.

When I talk about keeping a low profile, I’m not talking about having a fake I.D., not using Google, or shielding yourself from corporations or governments. I mean shielding yourself from ordinary people. I consider it perfectly normal to give out my Google Voice phone number to people I meet at work, college, events, or shopping, but many people restrict their phone number to close friends. While I use a fake last name on Facebook, I only started this recently and still list my real last name as an alternative so people can find me. Most chilling of all, my home address is still listed on all my domain registration records. I really need to get a P.O. box, but I don’t want to pay every year for it, and I don’t want to risk putting a fake address on my domains because that is technically grounds for domain seizure by the ICANN, Verisign, or GoDaddy.

However, many people don’t even share their home address or personal details with close friends or romantic partners. Some people don’t even have phone or email―you have to go to their house or write a letter to get in touch with them. Other people live in the wilderness, such as rural North Carolina, where they are mostly cut off from modern life. I’ve lived a stone’s throw from Daytona Beach all my life, so it’s difficult to imagine being thirty minutes from the nearest Walmart.

Though I didn’t list it in my resolutions, one of my resolutions for 2011 is to maintain a higher level of secrecy. This is mostly in regard to my website, Facebook, Twitter, acquaintances, and satellite friends, which I define as friends who are primarily my friends because they know at least one of my close friends well. For family and close friends, I am actually being more open. It’s just important to keep mutually unwanted friends out.

I thought of the phrase “mutually unwanted” because last month I tried to open a checking account at Bank of America and found I am on the ChexSystems blacklist for fraudulent activity. I looked it up, and several websites described it as being a list of “mutually unwanted customers” which is basically a cartel of banks that have banded together through this third-party, non-governmental company. This really sucks, because it means I can’t open a checking account at any bank that uses ChexSystems for the next five years. I don’t even know why I’m on the list―I haven’t had any overdrawn accounts or illegal activity, and I doubt anyone stole my identity since my credit score is fine and I haven’t lost any money from my accounts with other banks. I submitted an appeal both by phone and their website, and they said I would get a letter within 5 business days, but that was before Christmas and nothing has come yet.

You could say Bank of America, BB&T, and other banks are being low-profile by using ChexSystems. Instead of welcoming new customers with open arms, they use a shady background service that doesn’t even work right most of the time, and they put absolute faith in it. From one perspective, this is an abundance mindset―they are implying I don’t matter because there are plenty of other people who want to be their customers. It’s depressing, but they’re probably right. Unless you are very wealthy, famous, or both, you’re just a number to anyone but your family and closest friends. Even your medium-close friends will often turn out to be “fair weather” friends when you have trouble in life. They won’t be there to loan you money or bail you out of jail. They’ll just disappear.

Similarly, peripheral friends you share sensitive information with might screw you over. If you tell everyone you are burning garbage in your yard, an environmentalist ninny might squeal to the police. If zinc prices go up and you start melting down pennies, be careful because you could get five years prison if you keep a high profile. If you buy a car for $3000 but report to the DMV you paid $1000 to save on sales tax, don’t tell anyone you don’t know for real because they might work for the State. Being discreet is just common sense.

When you see stories about people going to jail for making Twitter updates about blowing up planes from their cell phones at the airport, realize that they are not Constitutional issues nor civil rights issues. They are stupidity issues. The Constitution is just four sheets of paper. It doesn’t mean a damn thing in 2011, just as it didn’t in 1865. No law or contract is worth anything more than the paper it’s printed on. All that matters is human behavior and human relationships, and this is why bookworms get in so much trouble. They have book smarts, not real smarts. They share too much information and they don’t know psychology. If you think paper can stop a bullet, you’re living in fantasy-land… unless it’s 100 cases of paper, which might be able to stop a bullet. :smile:

Last month, I started a campaign to remove my Google Voice number from every public website. My new Google Voice number is 510-936-2417, and I feel perfectly safe giving it out, because it always goes to voicemail. I still use the old 386 number, and it still goes directly to my parents’ landline, but I don’t want to share it even though I can block numbers, because I don’t want nutcases waking my step-mom up at 3am. While I know the old number is still in the Google cache, Web archive, and other places because it used to be on this website, I’m confident these will disappear eventually, except the web archive which will require special attention. I’ve already changed my 100+ domains to the new 510 number.

In some ways, being low-profile lends an air of exclusivity to friendship with you. Only your close friends know sensitive information about you such as your address, home phone number, family, and workplace. These friends feel more valued and special because they know you have given them more trust than the general public. Furthermore, every deterrent increases your chances of attracting good friends who appreciate you for who you are rather than the public image you project. Then, you can be even more trusting with your inner circle, because they will value your privacy just as you do.

On Facebook, I am now using a baby picture as my photo. This means people who are not my friends only get to see a photo of me that is from 1992, so they don’t even know what I currently look like unless they visit this website or know me in person. Surprisingly, most of my close friends don’t even care about richardxthripp.com, nor have they visited it. It’s quite surprising how average college students don’t care about personal websites. All they do is text and Facebook. Even email is a burden.

When you raise your standards and stop sharing dangerous information with the world, stalking becomes a much smaller problem. Every day, women who display themselves in low-cut blouses, string bikinis, or sexual poses on MySpace or Facebook complain about “creepy people” stalking them, and handsome men complain about friend requests from strangers when they display themselves shirtless. A simple lesson in modesty solves these issues. You don’t have to exhibit yourself to the delight of perverts and stalkers, and if you do, it looks stupid and real people don’t want to be friends with you. It’s entirely possible to have a MySpace or Facebook displaying no photos of yourself, if all your friends know what you look like offline and you tell them not to post pictures of you.

Talking about your income sources, family, heritage, religion, political views, assets, tattoos, or relationships is also completely unnecessary. You can have intriguing and detailed conversations without revealing anything important about yourself. Instead of talking about sensitive topics, talk about your hobbies, your favorite movies, sports, current events, or what your friends are doing. When someone else shares something private about their life, you have no obligation to reciprocate. They probably don’t want to hear about your life anyway. Most people prefer talking about themselves. If you indulge them, not only will you be living more privately, but you will be establishing better friendships by listening without interrupting.

Finally, it is very important to respect the privacy of others and never gossip, even if other people encourage it. I’ve recently lost a close friend over this, and it has been a wake-up call for me to re-evaluate what kind of person I want to be. At the same time, I believe in second chances and always grant them if the other person is sincere, not just because I expect to be treated fairly in return, but because being forgiving is the right thing to do.

Virtual Thripp.com Subdomains

I’ve set up some virtual Thripp.com subdomains for pages on richardxthripp.thripp.com that used to subdirectories. All the old URLs 301 to these new URLs. Check out the first batch of subdomains:

about.thripp.com
contact.thripp.com
domains.thripp.com
index.thripp.com
gallery.thripp.com
portfolio.thripp.com
portraits.thripp.com

All of these are for me only and are completely part of richardxthripp.thripp.com. In 2008, I intended Thripp.com to be a social network built on WordPress MU with subdomains for each user, but that never worked out so I feel comfortable owning the *.thripp.com namespace for my own projects now. I will never be changing the URL of this blog from richardxthripp.thripp.com since it’s been that way for so long, though.

This was actually very hard to implement. I’m using WordPress MU 2.7 and the WP Subdomains plugin, but I had to do hacking on both and I can’t get any subdirectories on these virtual subdomains to work so I have to use query strings. For example, gallery.thripp.com is paginated so page 2 is gallery.thripp.com/?page=2/ because I couldn’t get gallery.thripp.com/2/ to work. However, I’m glad I set this up since I will be using Thripp.com subdomains for many pages and ad campaigns in the months to come.

Banned from Sending Facebook Friend Requests

I was just banned from sending Facebook friend requests. After doing some research, I found I was breaking the rules. FACEBOOK USERS ARE ONLY ALLOWED TO SEND FRIEND REQUESTS TO PEOPLE THEY KNOW IN REAL LIFE. I’ve been sending requests to people who share many mutual friends with me. All of these people were in my “recommended friends” list, but apparently sending out 50 friend requests is abusive behavior on Facebook, even though I only sent requests to people who live within 30 miles of me.

Evidently many people I tried to add to my friends reported me for spamming, because that seems to be the reason Facebook bans abusers. I’m sure this ban was completely automated, and I doubt I’m in any danger of losing my account.

Here is the message I received upon logging in tonight:

To prevent you from contacting people against their wishes, your friend requests and your ability to send messages to strangers have been temporarily blocked.

If more of your friend requests are later marked as spam or reported for being sent to strangers, this block could be extended. To prevent this, you may wish to cancel your pending friend requests. Also cancel unanswered requests?

I opted not to cancel my unanswered friend requests and I have been banned from sending new friend requests for 48 hours. Perhaps I will be banned permanently? I sure hope no one else reports me for spamming.

While I’m disappointed, I totally understand that Facebook can impose whatever restrictions it wants on me because I don’t own Facebook.com like I own Thripp.com. Perhaps my Digital Sharecropping article from 2008 was not so far off.

Selling All My Domains for $10 Each! Tobu.org, YourNY.net, News-Journal.org, 93 more

I’ve decided to get out of domain speculation and never register a domain name again. EVERYTHING MUST GO, $10 EACH, EMAIL richardxthripp@thripp.com AND I’LL SEND MY PAYPAL INFO.

In total, I have 96 domains for sale. Most are registered by GoDaddy and expire in Oct. 2011, but 20 are Netfirms domains and about 5 expire in a couple months. If you want to know for sure, look it up.

These prices are FINAL, please disregard any higher prices I’ve posted elsewhere on the Internet. There could be a lot of gems in here. Don’t pass up this opportunity!

alachua.biz
angley.info
angley.us
anthonyrobbins.us
applicationbusiness.com
axxx.us
bakercounty.us
bradford-co-fla.com
bryanferry.us
chipola.us
claycounty.us
daytonafl.org
daytonastate.us
dispute.mx
dixiecounty.us
dvdsort.com
entrepreneurs-journey.org
exabyte.us
feelgooder.org
flaglercollege.info
flaglercollege.us
flashdrivebackup.com
forthepeople.info
fullsail.biz
g2x.org
g2x.us
gadsdengov.com
gladescounty.us
gulfcounty.net
gulfcounty.us
hardeecounty.info
hardeecounty.us
indianrivercounty.net
jackcanfield.org
jamesblunt.us
jerrybrowngov.com
jimrohn.us
johnchow.info
keiseruniversity.us
levycounty.info
levycounty.us
libertycounty.us
lifedig.com
madlibs.info
markvictorhansen.us
miami-dade.us
monroecounty.us
mydakota.info
mydakota.us
mydaytona.org
myflagler.org
myholmes.net
mymanatee.net
mymexico.us
mymiami.info
mymiami.us
mynewyork.us
mynewyorkcity.net
myorange.us
mystetson.com
mytexas.net
myvolusia.info
mywashington.us
news-journal.org
newsjournal.us
ocgov.us
okaloosa.us
okeechobeecountyfl.com
orangecountyfl.info
orangecountyfl.us
parkingrestrictions.com
pavlina.org
photography-school.org
polk-county.info
polk-county.us
queuebook.com
reunioncounty.com
rickscott2014.com
rickscottgov.com
stephencovey.us
stevepavlina.us
suwcounty.com
swfc.us
tobu.org
tri0.com
verbix.org
volusiacounty.biz
volusiafl.com
waynebray.com
waynedyer.info
yournewyork.us
yourny.net
yournyc.info
yournyc.org
yournyc.us
ziglar.info

Let the liquidation begin!

Making WordPress Tag Balancing Work with Exec-PHP

I use the WordPress plugin Exec-PHP to use PHP in my posts, but under normal circumstances if I do this with “WordPress should correct invalidly nested XHTML automatically” (a.k.a. tag balancing) checked in Settings > Writing, I get this nasty error whenever I try to use PHP:

Parse error: syntax error, unexpected ‘?’ in /home/thripp/public_html/wp-content/plugins/exec-php/includes/runtime.php(42) : eval()’d code on line 1

The solution the developer provides is to simply disable that feature. That’s fine most of the time, but I encountered a tricky situation where I needed to use PHP and have WordPress close open HTML tags which I simply could not close.

My posts on this blog are usually photos with short descriptions, but occasionally I write long articles which may go on for thousands of words. Up until last year, my tag, category, and archive pages displayed the full content of my posts. WordPress excerpts were unacceptable for two reasons: 1.) they are always 55 words; 2.) I use Post Thumb Revisited to auto-convert 800×600 images to 400×300 thumbnails, but it only converts them through the_content filter, not the_excerpt. While the excerpt length is customizable in WP 2.8 or newer, I am unwilling to upgrade from WPMU 2.7. What I really needed was an excerpt that used the_content, respected all HTML tags, worked with Exec-PHP, and let me customize the excerpt length.

Enter The Excerpt Reloaded. The plugin was 5 years old, so I found an updated version with bugfixes that was only 3 years old. I quickly wrote this code for my theme’s index.php file and left it this way until today:

if(is_category() || is_archive()) the_excerpt_reloaded(200, ‘all’, ‘content’,
     true, “<strong>… continue reading</strong>”, false, 1, false, false,
     ’p', ‘Click to see whole entry.’, true);
else the_content(__(‘… CONTINUE READING’));

This has been the best of both worlds. It cuts off the content at 200 words, so most of my photos do not have a “continue reading” link because my descriptions are under 200 words. Longer posts are cut off after 200 words, so my archive pages do not become unnecessarily long. I had to set the 8th argument of the_excerpt_reloaded, $fix_tags, to false, because I would get the same old Exec-PHP error if it was set to true. “No problem,” I thought. I already have tag balancing disabled in WordPress, so what could it hurt to disable it here?

Recently, however, I encountered an insidious bug when a post was cut at 200 words in the middle of a <strong> tag. The tag would never be closed, meaning the rest of the page would be bold! Take a look at this screenshot:

Unbalanced tags

What do you do about something like this? Obviously, there are many solutions. I could rewrite the offending article so the 201st word is not in the middle of an HTML tag. All I would have to do is put in a few filler words earlier in the article. I could enable tag balancing, write some code to check if each post contains PHP, and not use the_excerpt_reloaded in those cases. I could use custom fields on posts to determine which mode of behavior should be used. I could upgrade WordPress (oh god no). All of these solutions seem suboptimal.

Instead, I went to the problem’s source. If $fix_tags is true, the_excerpt_reloaded runs the content of the excerpt through balanceTags. What is balanceTags? A WordPress function in /wp-includes/formatting.php which activates force_balance_tags. What is force_balance_tags? A WordPress function in the same file which looks like hieroglyphics. All I wanted to do was force the function to ignore PHP, but I couldn’t figure it out. It wasn’t a simple matter of ignoring <?php ?> tags. My PHP tags often appear in the middle of other HTML tags. Here is the source code of a typical photo on my blog:

<img src=”http://thripp.com/files/photos/flash.jpg” alt=”<?php the_title(); ?>” />

I took this picture of raindrops falling at night, and my camera’s flash reflected off one of the raindrops. It looks like a star going supernova.

[­sniplet fuji-a360], <?php fexf(); ?>

<a href=”[­sniplet photos-path]stock/<?php echo fprm(); ?>-stock.jpg”>[­sniplet stock-dl-text]</a> (<?php fsze(fprm() . ‘-stock.jpg’); ?>) or <a href=”[­sniplet photos-path]stock/source/<?php echo fprm(); ?>-ss.jpg”>[­sniplet ss-dl-text-lc]</a> (<?php fsze(‘source/’ . fprm() . ‘-ss.jpg’); ?>).

[­sniplet stock-rights]

Looks pretty terrible, huh? I’ve got sniplets in there, custom PHP functions, concatenation, nesting… you name it. This template creates the file paths for the photos, source files, and stock versions right from the post title, because I upload the photos by FTP and follow a rigid file structure. The only reason there’s a full IMG tag at the top of each post is because Post Thumb Revisted won’t create the thumbnails to automatically generate my gallery without it. The template also displays the size of the source files and then extracts and displays the Exif data from the photos in my preferred format, which was extremely difficult to set up and is something I used to do manually. It runs itself, and the functions are really quite interesting.

Anyway, what I needed was a way to bypass force_balance_tags entirely, but only in regard to PHP code. I need the function to close dangling tags like <strong>, <em>, and <u> if the_excerpt_reloaded cuts the post in the middle of a tag.

After a lot of unsuccessful Google searches, I remembered that I solved a similar problem at the beginning of October in Tweet This 1.8. On the “Write Tweet” page, Tweet This uses a modified version of Jeff Roberson’s Linkify URL to delimit URLs with a space on each side (function tt_delimit_urls). A tweet like “Check out http://www.google.com/!” becomes “Check out http://www.google.com/ !”. Then, I use Ext-Conv-Links by Muhammad Arfeen to convert all long URLs to short URLs if the tweet is over 140 characters (class tt_shorten_urls). This works great for most URLs, but I discovered it breaks URLs containing underscores. http://en.wikipedia.org/wiki/South_Africa gets sent to the URL shortener http://en.wikipedia.org/wiki/South, which gets converted into http://bit.ly/bzLvSK_Africa, which doesn’t work at all. Totally unacceptable.

After many hours of torment trying to fix Jeff or Muhammad’s code, I decided to approach the problem from a different angle. Why not just replace underscores with something else on the way in, and then change them back to something else on the way out? Good programming doesn’t dance around problems, but I’ll take a practical solution that works over an idealistic solution that fails, any day. But what string to replace underscores with? I can’t use a special character or something that might be used in a tweet on purpose, because it will get converted into an underscore. After some thought, I settled on t9WGb5. It doesn’t look pretty, but it works, and I doubt any URL containing “t9WGb5″ is ever going to be purposefully included in a tweet. So I proceeded to write statements like str_replace(‘t9WGb5′, ‘_’, $url) and str_replace(‘_’, ‘t9WGb5′, $url) at the necessary places throughout the code, and URLs with underscores worked like a charm. As an Easter egg, try writing a tweet over 140 characters containing a URL where you replace an underscore with “t9WGb5″ yourself, for example, “test test test test test test test test test test test test test test test test test test test http://en.wikipedia.org/wiki/Southt9WGb5Africa”, then preview it on the Write Tweet page. Check the preview page for the short URL, i.e. http://bit.ly/cRLAis+, and you’ll see that your “t9WGb5″ was converted to an underscore before the long URL was even sent to Bit.ly, as an artifact of my kludge-like solution.

Couldn’t the tag balancing problem be approached in the same way? Of course it could. A simple modification to /wp-includes/formatting.php did the trick. Right at the start of the force_balance_tags function, I replaced “<?php” and “?>” with “[![?php" and "?]!]” using str_replace, as follows:

function force_balance_tags( $text ) {
     $text = str_replace(array(‘<?php’, ‘?>’), array(‘[![?php', '?]!]’), $text);
     $tagstack = array(); $stacksize = 0; $tagqueue = ”; $newtext = ”;

Then, at the end of the function, I change it all back:

// WP fix for the bug with HTML comments
     $newtext = str_replace(“< !–”,”<!–”,$newtext);
     $newtext = str_replace(“< !–”,”< !–”,$newtext);
     $newtext = str_replace(array(‘[![?php', '?]!]’), array(‘<?php’, ‘?>’), $newtext);
     return $newtext;
}

All this happens either before or after Exec-PHP executes. I’m not sure when, but it doesn’t matter. My goal of being able to use tag balancing with Exec-PHP has been reached. I now have $strip_tags set to true in the_excerpt_reloaded and “WordPress should correct invalidly nested XHTML automatically” enabled in Settings > Writing, and all I have to do is re-apply the hack when I upgrade WordPress. It’s amazing what thinking outside the box gets you.

I can’t actually write “[![?php" or "?]!]” inside any post on my site, because my hack will convert those strings to real PHP code and they won’t be displayed. How did I display the code above? My actual /wp-includes/formatting.php file uses underscores instead of exclamation points. How did I include the sniplets in the example post without the Sniplets plugin executing them? Breaking the parser with the &shy; HTML entity. Simple.

Earlier, I talked about the functions I use in my photo template to automate display of file size and Exif data. Here are those functions:

function fsze($f = ‘simplicity-stock.jpg’, $p =
     ’/home/thripp/public_html/wp-content/blogs.dir/2/files/photos/stock/’)
     {$n = array(‘Bytes’, ‘KB’, ‘MB’, ‘GB’); $p = $p . $f;
     if(file_exists($p)) $b = filesize($p);
          else $b = ’1000′;
     echo round($b/pow(1000, ($i = floor(log($b, 1000)))), 2) . $n[$i];}

function fprm() {
     return str_replace(‘photo-’, ”, preg_replace(‘/-+/’, ‘-’,
          preg_replace(‘/[^a-z0-9-]/’, ‘-’,
          strtolower(trim(str_replace(array(‘?’, ‘…’),
          array(”, ”), get_the_title()))))));}

function fexf() {
     $exif = exif_read_data(‘/home/thripp/public_html/wp-content/’ .
          ’blogs.dir/2/files/photos/’ . fprm() . ‘.jpg’, 0, true);
     $shutter = $exif['EXIF']['ExposureTime'];
     $fnum = str_replace(‘f/’, ‘F’, $exif['COMPUTED']['ApertureFNumber']);
     $focal = $exif['EXIF']['FocalLength'];
     $iso = $exif['EXIF']['ISOSpeedRatings'];
     $date = $exif['EXIF']['DateTimeOriginal'];
     $date = str_replace(‘:’, ‘-’, substr($date, 0, 10)) . ‘T’ .
          substr($date, 11);
     if(substr($date, 0, 4) < = 2007) {
          $id = substr($date, 0 , 10) . '_' . substr($date, 11, 2) .
          'h' . substr($date, 14, 2) . 'm' . substr($date, 17);}
     elseif(substr($date, 0, 4) >= 2008) {
          $id = str_replace(‘-’, ”, substr($date, 0 , 10)) . ‘-’ .
          str_replace(‘:’, ”, substr($date, 11)) . ‘rxt’;}
     $md = str_replace(‘-’, ”, substr($date, 5, 5));
     $hms = str_replace(‘:’, ”, substr($date, 11));
     if(substr($date, 0, 4) == 2004) {
          if(($md < 0404) || ($md == '0404' && $hms < 020000) ||
          ($md > 1031) || ($md == ’1031′ && $hms > 020000))
               $ldate = $date . ‘-05′;
          else $ldate = $date . ‘-04′;}
     if(substr($date, 0, 4) == 2005) {
          if(($md < 0403) || ($md == '0403' && $hms < 020000) ||
          ($md > 1030) || ($md == ’1030′ && $hms > 020000))
               $ldate = $date . ‘-05′;
          else $ldate = $date . ‘-04′;}
     if(substr($date, 0, 4) == 2006) {
          if(($md < 0402) || ($md == '0402' && $hms < 020000) ||
          ($md > 1029) || ($md == ’1029′ && $hms > 020000))
               $ldate = $date . ‘-05′;
          else $ldate = $date . ‘-04′;}
     if(substr($date, 0, 4) == 2007) {
          if(($md < 0311) || ($md == '0311' && $hms < 070000) ||
          ($md > 1104) || ($md == ’1104′ && $hms > 070000))
               $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 18000)) . ‘-05′;
          else     $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 14400)) . ‘-04′;}
     if(substr($date, 0, 4) == 2008) {
          if(($md < 0309) || ($md == '0309' && $hms < 070000) ||
          ($md > 1102) || ($md == ’1102′ && $hms > 070000))
               $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 18000)) . ‘-05′;
          else     $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 14400)) . ‘-04′;}
     if(substr($date, 0, 4) == 2009) {
          if(($md < 0308) || ($md == '0308' && $hms < 070000) ||
          ($md > 1101) || ($md == ’1101′ && $hms > 070000))
               $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 18000)) . ‘-05′;
          else     $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 14400)) . ‘-04′;}
     if(substr($date, 0, 4) == 2010) {
          if(($md < 0314) || ($md == '0314' && $hms < 070000) ||
          ($md > 1107) || ($md == ’1107′ && $hms > 070000))
               $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 18000)) . ‘-05′;
          else     $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 14400)) . ‘-04′;}
     if(substr($date, 0, 4) == 2011) {
          if(($md < 0313) || ($md == '0313' && $hms < 070000) ||
          ($md > 1106) || ($md == ’1106′ && $hms > 070000))
               $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 18000)) . ‘-05′;
          else     $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 14400)) . ‘-04′;}
     if(substr($date, 0, 4) == 2012) {
          if(($md < 0311) || ($md == '0311' && $hms < 070000) ||
          ($md > 1104) || ($md == ’1104′ && $hms > 070000))
               $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 18000)) . ‘-05′;
          else     $ldate = date(“Y-m-dTH:i:s”,
               (strtotime($date) – 14400)) . ‘-04′;}
     if(preg_match(“///”, $focal, $m)) {$pieces = explode(‘/’, $focal);
          $focal = intval($pieces['0'])/intval($pieces['1']);}
     if(preg_match(“///”, $shutter, $m)) {$pieces = explode(‘/’, $shutter);
          $shutter = ’1/’ . round($pieces['1']/$pieces['0']);}
     echo $shutter . ‘, ‘ . $fnum . ‘, ‘ . $focal . ‘mm, ISO’ . $iso .
          ’, ‘ . $ldate . ‘, ‘ . $id . “n”;}

Those were tough to write. PHP’s native functions for calculating the size of files believe that a kilobyte is 1024 bytes and a megabyte is 1024*1024 bytes, which is completely false and unacceptable. I had to write my own function to calculate proper file sizes. I take all my pictures with my clock set to Greenwich Mean Time, but I still want to display the time in local time (Eastern) with the GMT offset. I couldn’t figure out how to write a generic function, so I just did it for each year up until 2012, using the United State’s Daylight Saving Time rules. I’ll have to update the function in 2013, but I hear the world is going to end in 2012 anyway.

If you think this adds to my page load time, you’re probably right. But I use W3 Total Cache to completely cache each page of my blog, so it doesn’t matter.

Next summer, I’m going to China with my Mom. I will be leaving the Eastern time zone for the first time ever. I will definitely need to update the functions above, and I will probably have to specify the time zones manually for all the photos I post from the trip. Should I worry about that now? Of course not.

Tweet This, a WordPress Plugin for Twitter [1.8.3]

Download Tweet This 1.8.3 [0.8MB .zip]

Popular Twitter plugin inserts “Tweet This” links so your readers can share posts with one click. Can automatically tweet new posts via OAuth. Allows you to publish and schedule tweets from a new “Write Tweet” page. Supports 10 URL shorteners including Bit.ly, Su.pr, and TinyURL. Includes options for 20 social networks including Facebook, Bebo, and MySpace. Includes the Wickett Twitter Widget for your sidebar and many other options.


1.8.3: 2011-07-05: Small update to fix compatibility with WordPress 3.2.


Upgrading from 1.8.2 to 1.8.3

1. Upload the new /tweet-this/ folder over the old folder in your plugins folder.
2. Tweet This 1.8.3 is installed.

General Information

Tweeting a post on Twitter takes up a lot of space, because URLs quickly eat up your 140 characters. While your readers might copy the permalink, go to Bit.ly or TinyURL, shorten and copy the new URL, go to Twitter, and paste it into the status box, this plugin merges all that into one step.

This plugin makes short URLs like http:/example.com/?p=1234, then displays a link to Twitter for each post, with an optional icon (20 choices). This is done automatically for each post as needed. You can choose a URL shortener including Adjix.com, B2l.me, Bit.ly, Is.gd, Metamark.net, SnipURL.com, Su.pr, TinyURL.com, and Tweetburner.com. Each shortened URL is cached as a custom field in the postmeta table to keep load times fast. The cached records are updated or deleted as needed when you edit a post’s permalink, delete a post, change your site’s permalink structure, or change URL services. In WP 3.0 or later, Tweet This hooks the short URLs into the get_shortlink filter.

This plugin can also tweet new blog posts automatically, if you provide your Twitter credentials in the options. Then a “Send to Twitter” checkbox appears when writing a new post, along with a text box so you can change the tweet text for that specific blog post. As of 1.7, OAuth is used.

Unlike Tweetmeme, ShareThis, and other Twitter plugins, Tweet This inserts links without JavaScript, iFrames, or third-party dependencies. An example: http://twitter.com/home/?status=Example+Post+http://example.com/?p=1234

Copyright 2008 – 2011 Richard X. Thripp (email: richardxthripp@thripp.com)
Released under Version 2 of the GNU General Public License as published by
the Free Software Foundation, or, at your option, any later version.

Tweet This Version History

Tweet This Blogs

Tweet This Icons

Tweet This Wiki on Thripp.org

Tweet This on WordPress.org

Tweet This Installation

Before you begin, please make sure your server has PHP 5 and Curl enabled. While you can use Tweet This on PHP 4, all OAuth functions require PHP 5. Tweet This requires WordPress 1.5 minimum, with the following exceptions:

1. Importing exported options requires WP 2.0.
2. Automatic tweeting requires WP 2.7.
3. The Twitter Updates widget requires WP 2.8.
4. Adding short URLs to the get_shortlink filter requires WP 3.0.
5. Moving the Tweet This box around the Write Post page requires WP 3.0.

If you are installing Tweet This for the first time, follow these steps:

1. Upload the `tweet-this` folder to `/wp-content/plugins/`.
2. If you’re using WordPress MU and want this plugin active for all blogs, move `tweet-this.php` to `/wp-content/mu-plugins/` at this point.
3. Else, activate the plugin through the ‘Plugins’ menu in WordPress.
4. Tweet This icons should automatically appear on every post and page! Go to Settings > Tweet This to change settings and set up auto-tweets.
5. Optionally, delete readme.txt and the screenshots folder to save space.


Tweet This Donations

If you like Tweet This, consider donating $5.00, $10.00, or a larger amount via PayPal. As of Feb. 22, 2010, I have received $94 in donations since the initial release of Tweet This in Sept. 2008.

2011-02-22: $25.00 from Canopus Research Inc.
2011-02-17: $10.00 from Berend de Meyer.
2011-01-20: $5.00 from Nigel Boulton.
2010-10-27: $2.00 from JJ Soule.
2010-10-24: $10.00 from Linda C.
2010-10-20: $10.00 from Gareth Davies
2010-10-08: $1.00 from Tache Madalin
2010-10-01: $5.00 from Marcos Ramos
2010-09-20: $10.00 from Linda Worthington
2010-09-18: $1.00 from James Magary
2010-09-15: $10.00 from Miter Saw Reviews
2010-09-15: $5.00 from Kinoshita Communications LLC

Tweet This Screenshots

Screenshot 1

1. Tweet This options page: all sections closed.

Screenshot 2

2. Tweet This options page: all sections opened.

Screenshot 3

3. The Write Tweet page, having just published a tweet.

Screenshot 4

4. A post with Tweet This links; Twitter Web API and Share API.

Screenshot 5

5. Publishing a tweet alongside a new post.

Screenshot 6

6. The Twitter Updates widget included with Tweet This.

Frequently Asked Questions

Acknowledgements and To-Do List

Download Tweet This 1.8.3 [0.8MB .zip]

Testking offers fail proof 640-802 exam preparation with help of 640-863 notes, 640-816 study guide, 642-072 dumps and 642-145 practice test.

WiredTree Hybrid Servers Upgraded — Game-Changer for Web Hosting Industry

WiredTree Hybrid specs

I’ve been hosting all my websites on a WiredTree Managed Hybrid VPS Server since July 2009, and the plan has not changed a bit until this week. For the past year and a half, WiredTree offered 1GB RAM, 80GB disk space, 2TB bandwidth, and 1 processor core for $99 per month. Starting Monday, this plan has changed to 2GB RAM, 100GB disk space, and 3TB bandwidth, with no increase in price. These stats are real—WiredTree does not oversell and this resources are always reserved for your account. If you aren’t using all your RAM or disk space, nobody else gets to use it—it stays unused and immediately available to you.

Hybrid Servers are actually beefed-up Virtual Private Servers—the name VPS is not used because they provide the resources of a low or medium end dedicated server without the expense. For instance, a WiredTree server might contain two 1TB hard drives, 16GB RAM, and two quad-core processors. Such a server might host 7 Hybrid Server accounts, giving each 2GB RAM, 100GB RAID10 mirrored disk space, and a processor core. The remaining core, RAM, and disk space would be used for software called Virtuozzo, which partitions the server into virtual machines. Such a powerful server may cost under $400 a month to operate—WiredTree would get almost $700 from seven different clients. While offering the server directly to clients is an option, most people do not need and cannot afford such a powerful machine. A Hybrid Server is a much better option.

Prior to this, WiredTree Hybrid Servers were not a spectacular deal—you could find faster servers at cheaper prices elsewhere. Thousands of people choose WiredTree not for their rock-bottom prices, but for their superior uptime, customer support, and reputation. You can send a support ticket to WiredTree any time of the night and you’ll get a response in under 30 minutes. While other web hosting companies make a point of hiding their phone number, you can call WiredTree toll-free at 866-523-8733 with any questions or problems. Combining 24/7 custom service with the new Hybrid Server specs, WiredTree blows all other mid-range hosting companies out of the water. This is truly a game-changing announcement.

My website gets over 1000 visitors a day, and I host other websites such as Composer’s Journey and Thripp.com on this Hybrid server too. I also host the Th8.us URL shortener here, which shortens 1.3 million URLs per month and receives over 10 million requests, including pageviews and API calls. Th8.us is not simply a URL shortener—I display Google AdSense ads on every short URL in an iFrame, which requires PHP. This alone generates over $100 per month. The Th8.us database is a single InnoDB table in a MySQL database with nearly 20 million rows. The size of the database is 3.2 gigabytes, and it’s never been corrupted. Th8.us barely makes a dent in my Hybrid server’s resources.

WiredTree provides detailed statistics about your server. Here are just a few of those from my server, for the past month:

WiredTree Hybrid stats

The above stats are with the OLD server specs. I had 1.5GB of RAM because I used the coupon code HYBRIDFREE512RAM when I signed up. The spike on August 18 is when I did a full backup of my cPanel account including all files and databases, which totaled 7GB and took only 30 minutes. I only use 150GB of bandwidth a month tops, and that’s with lots of large Canon RAW files (10MB each) hosted on my server for direct download by the public. With the new upgrades, I could use 20 times the bandwidth and still be fine.

WiredTree says all existing hybrid customers will be upgraded within a month, but if you’re a new customer, you can get a hybrid server with the new specs right now. If you use this affiliate link, I will get one month of free hosting a month after you sign up. You can register as an affiliate yourself and receive 100% of the first month of any sales as a hosting credit or 75% to your PayPal account. This could potentially pay your hosting bill every month.

WiredTree Hybrid servers run CentOS 5, a Linux distro that is the defacto standard for VPS hosting. Apache, MySQL, PHP, Perl, Python, FTP, SSH, cPanel, Web Host Manager, phpMyAdmin, Cubemail, and plenty of other stuff is available out of the box, and WiredTree technicians watch your server for problems and improve its security. You can have WordPress set up on your own domain in under an hour, and if you don’t know how, you can put in a support ticket. They’ll even transfer your files from your old host for you if you provide your usernames and passwords (they are trustworthy and I often provide them my root password).

The Radified blog has a great guide to VPS hosting, focused on WiredTree, and you can read Mr. Rad’s experience in making the switch here. It’s 2 and a half years old, but besides better specs and cheaper prices, WiredTree hasn’t changed a bit.

This is straight from the WiredTree “Grove” admin pages:

“We have made major investments easily in the tens of thousands of dollars this year upgrading our Hybrid infrastructure, retrofitting existing servers, and introducing new servers to support these increased allocations and to ensure you are getting the best value for your money.”

Though I don’t know how many clients they have, I wouldn’t be surprised if they spent $100,000 on these upgrades. RAM is cheap, but it isn’t dirt cheap, especially if you want quality. WiredTree performs automatic nightly backups of all your files and has multiple layers of redundancy, so giving a customer 20GB extra disk space might require 100GB extra disk space in their infrastructure. Ditto for RAM and bandwidth.

WiredTree has disabled the coupon codes HYBRIDFREE512RAM and 10PERCENTOFF on the new Hybrid plans, presumably because the prices are already rock-bottom, but you can still receive a 5% discount by paying for a year in advance. This is what I do, and I will be paying them $1128.60 in February unless I get a bunch of affiliate commissions. Start off paying by the month until you find out how special WiredTree is.

Unless you have a large, successful website already, you should start out with a Virtual Private Server ($49 per month) or even shared hosting, which WiredTree does not provide. At the VPS level, there are many WiredTree coupons available—don’t sign up without one.

You can host an unlimited number of websites on all WiredTree’s plans. Your only limits are how much RAM, disk space, bandwidth, and CPU power these sites consume. If you have a bunch of small sites, there’s no reason to pay a hosting bill for each one. Consolidate them under one VPS plan. You can even use your own DNS name servers like NS1.THRIPP.COM and NS2.THRIPP.COM.

While the new Hybrid Servers were announced two days ago, I couldn’t find any articles in the blogosphere about this ground-breaking change—just verbatim copies of the press release. I’m sure this will change before the week ends, and WiredTree will become one of the world leaders in web hosting. They may even need to open a second data-center outside of Chicago.

Check out WiredTree today. Even if you already have a good web host, WiredTree is better.

Your Blog is Not a Community

Most blogs consist of one person commenting on the world, and a whole bunch of people passing by, spending five minutes to skim several posts, and perhaps making a comment or two. These people move on to never return, and they are replaced by more people who in turn do the same.

While blogs are typically considered more communal than typical websites, they may in fact be less so. Other websites have forums which receive hundreds of posts per day from established and respected members. That is a community. Blogs have comments. If you’re lucky (like with this blog), they are threaded with email notifications. This has the potential for community building, as people may make comments, reply to other comments, and return to reply again. However, it generally does not create community. Most people still visit once and only once.

Some bloggers try adding a forum. I did this, and the sad reality is that you will get no participation. For every 100 people that visit your website, one person will make a comment. And for every 100 people who comment on your blog, one person will sign up and post on your forum. Even if you put a widget in your sidebar with the latest forum topics, you’ll still get little to no participation. The forum is basically a separate website, one that will receive no benefit from the fame of your blog. Unless your blog is so popular that you’ve turned off comments, forums are a waste of time. You must chose: forums or comments. One or the other. Not both. On a popular blog, you may be better off disabling comments and creating a forum requiring registration. It cuts out the noise.

Bloggers used to require registration to comment, but fortunately no one does this anymore. It is so stupid and pointless now that spam filtering is so good. There are only three purposes for registration: to track people for marketing, to allow for user profiles that other members can read, and to track comments. WordPress allows none of these. BuddyPress does, and there are plugins, but no one is using those. Registration doesn’t create a feeling of community. It creates a feeling of annoyance.

RSS feeds get people to come back for more, but most people who use RSS feeds are lurkers. You won’t get a comment from them. You may get thousands of pageviews over a period of months, but you won’t get comments and you won’t get community participants.

Responding to comments helps build community, but don’t respond to everything. Simple comments like “your work is great” do not deserve a thank you. That is boring and unneeded. I no longer reply to such comments. My time is better spent writing new blog posts.

Most comments will be people looking for help, and they will be in response to problem-solving posts that didn’t solve their problems. A third of the comments on this blog have been on my Tweet This plugin (most are archived), and they have not been thank-yous so much as requests for help. These are not people wanting to participate in a blog community: these are people who want their problems solved so they can move on with their lives. No community content there.

WordPress MU does not build communities. Many people try and many people fail. All the blogs are separate—all the blog posts are stored in separate database tables. There’s no way to even aggregate them effectively without creating a mirror of them in a unified table, and this is complicated to set up. It is also unwieldy and wasteful. There is no linking blogs together in WordPress MU. They are islands. When you host a WordPress MU site, you are not a community leader. You are a web host.

As a blogger, you are a publisher, not a community leader. Don’t think of your blog as a round-table. Think of it as a newspaper. Yes you may feature letters to the editor, but remember who is in control and who leads the discussion. If you aren’t producing new blog posts every week, whatever “community” you have (which is really just visitors) will disappear immediately. It did when I left this blog for six months. It will for you too. No big deal. It can be quickly rebuilt. Communities take a long time to build, and if you alienate your loyal readers your site goes down the tubes. Blogs aren’t communities, so if you alienate some people (and you will), new people will replace them. Don’t expect anyone to write your posts for you or come up with ideas for you. It’s all on YOU. YOU must do it all YOURSELF. No one will help you. When you accept that you have no community to back you, you accept complete responsibility for the success of your blog. That is power.

Putting Users First

In the United Kingdom, some six million domain names are registered under the .co.uk suffix. While yourname.uk would be preferable to yourname.co.uk, such registrations are banned.

This adds up to thousands of lost hours among computer users and much more wasted space. UK residents have to type the extra “.co” for every domain they visit, communicate, or advertise. Clearly, the UK does not put its users first, or the lengthy subdomain would not exist.

One practice common among universities is to give students second-rate email and blog addresses. My email address at Daytona State College is the ridiculous richard_thripp@falconmail.daytonastate.edu. Blogs take on unwieldy addresses like agessaman.blogs.gfalls.wednet.edu. Giving students first-class registrations at the second level, like richard_thripp@daytonastate.edu or richardxthripp.wednet.edu, is out of the question. Usually, administrators will have their reasons such as firewalling users, keeping the namespace open, simplifying management, or departmentalization. None of these are valid and they all put the user last, when in fact the user should be the #1 priority.

On Thripp.com, it would be tempting for me to place users in some God-forsaken subdirectory like users.thripp.com/richardx, but instead I put them right up front like richardx.thripp.com. Sure, I might run into problems later. Sure, there might be unforseen consequences. Perhaps someone will register shout.thripp.com and then later I’ll decide I want it for a site feature? While the cautious person may say, “so that all my options are open, I should not allow direct registration of subdomains in case I want to use them later,” this is folly and treats the user as a second-rate citizen. Users make up the bulk of your community and are the only important part. This means you should give them important space. Damn the torpedoes. Whatever namespaces you are reserving are less important than you think. In fact, if they are so valuable, they will be much more valuable and attractive in the hands of the community rather than on a blacklist that goes nowhere. example.com has so much potential.

At most businesses, employees park far away from the building to give parking spaces to the customers. Since employees are there all day, it’s no problem for them to walk a little ways. Contrastingly, customers may only be there for several minutes. However, when it comes to the public library, city hall, the DMV, or the post office, who do you see closest to the building? The employees themselves. Often a whole section right near the back door is reserved for them. Because the government has no competition, they have no reason to put their users first. Often, the users wind up dead-last. As corporations grow more bureaucratic and government-like, the same may happen to them. As soon as the user is put second, the business is one step closer to death.

Many websites you see start out with a splash page where you have to click “Enter.” This is a dumb waste of time. No one wants to “enter” your site. The very act of typing the URL into the web browser is entrance enough. Avoid time-wasters if you value your visitors.

Forums and other websites require you to register before you can read certain material or download certain files. Theoretically this will encourage you to come back later and build a spamming mailing list for the webmaster, but in fact 75% of people just stop right there and never register. Whatever they were going to download wasn’t important enough to be hassled anyway. Most people that do register never return and are actually useless users. They just clog up the database and do nothing. Furthermore, registration forms are often notoriously unintuitive and complex. What will often happen is a user will mistype a hard-to-read CAPTCHA, then return to type it again, then fail because their password was erased upon failing the initial CAPTCHA, and then have to do both over again. Many websites forget the email address too upon a reload. It can take the inexperienced web user a dozen tries to get through. Definitely not user friendly. Mandatory registration simply does not put users first.

Using target=”_blank” on links is bad bad bad. If the user wants to open the link in a new window, he’ll middle-click it. Otherwise, a left-click means he wants to open it in the same window. Don’t force preferences on your users. Your site should look good at least at 1024×768, preferably scaling to any size as web layouts are supposed to be fluid, not fixed. Many websites are entirely Adobe Flash, put mid-gray text on a light-gray background, disable right-clicking, or interfere with the browsing experience through other methods. If you think this “protects” your content or expresses your artistry, you’re completely deluded. It patronizes your users.

Microsoft Windows sucks for users. In Vista, whenever you execute a program or change a setting, you get at least three pop-up windows asking “are you sure?” Instead of blocking viruses and pop-up windows pro-actively, they’re allowed free reign on your system. You can only combat them by using kludges like anti-virus software and pop-up blockers, which only remove the material once it has already appeared on your computer. When Windows wants to install a “critical” update, it asks permission to restart. If you say no, it comes back a few minutes later. Say no again, and it starts a count-down timer. Heaven forbid you’ve left the room to burn a DVD or download a large file, because Windows will forcibly close all your programs and restart for your “protection.” So much for user friendliness. When you install or uninstall a software program, you are often stuck with a window that says “click OK to restart now.” If you don’t want to restart, you have to ignore it or drag the window to the corner of the screen. All these hurdles beg the question: who is the master of your computer? You or Microsoft? If Microsoft indeed put users first, the answer would be you and the question wouldn’t need to be asked.

When you call a support line, you’re left waiting for ten or fifteen minutes while a message repeats saying “your call is very important to us.” If your benevolent overlords had some respect for you, they’d stop insulting your intelligence.

Users don’t like being called idiots, being bamboozled, jerked around, put off, or made fools of. In fact, they may become violent and vindictive when patronized. Show some respect, give them the best namespaces, put them first on the list, and don’t boast about how much you value them.

First Google AdSense check

$112.23 Google AdSense check

Just got this check from Google for $112.23. I wasn’t sure if this Google ad program was real till now; perhaps they’d just take my money and ban me when I reached the $100 threshold? :xx:

I started this blog way back at the end of last year, just for my photography. I didn’t do much for a long time, often just spending lots of time fiddling with the layout and code, but in the past two months I’ve made lots of progress. I feel I can do a lot of good here, if not for others, for my own mind.

While DaytonaState.org makes the most, the balance is switching to this blog. I think it’s because I’m writing in-depth, thought-provoking articles like Digital Sharecropping, Personal Development for Photographers, and Transcending Limiting Beliefs. Not lists or tables or mash-ups or charts. No fluff. Writing that takes will work and has a real purpose. I didn’t really start doing this till two months ago, when I added personal development as my main subject alongside photography.

While $112.23 is no more than pennies an hour for all the work I’ve put in here, it’s much better than any job because I would do this for free. Most people can’t say that about their jobs.

Even though I made far more as a criminal, it’s much better to profit as an asset rather than a leech. Friends have been quick in offering to click ads for me or get others to do the same, but I’ll have none of it.

My hosting bill is paid up till 2009 March, and it has totaled $70. I also registered Thripp.com till 2018, costing $73, and thripp.net/org/us/biz/info are mine. I’m in this for the long haul. Expenses don’t really count, because I’d be paying them either way.

This month has been the best yet; I’ve taken in $61; half of what I made in the eight months before combined. Curiously days have bounced between $0 and $4 rather than being constant like last month, but it doesn’t matter.

Some people hate ads. If I was one of them, I would’ve made nothing. If this is a business, I’m lucky because most businesses lose a lot of money to start.

You can’t expect to make money if you don’t even try. Blogs are much like newspapers, which pay their printing bills and more with advertising. Now, the bills are time, effort, and less importantly, web hosting. And the message is free, rather than being a token fee of thirty-five or fifty cents.

However, if you give away the message and turn your back on advertising and turn down donations (read: don’t ask for), you can’t turn your passion into anything more than a hobby.

Unrelated: the URL for this post has 666 in it because that’s the post ID. It’s just a counter. I think it’s cool to have it at the end of URLs. I’ve actually made only 530 posts and pages, but the other numbers have been lost to test posts and drafts. Think of it just as an arbitrary number to uniquely identify each of my articles.

Also: this post is evil. :evil:

Page 1 of 3123