World Autism Awesomeness Day!

Yep. April 2nd. Let’s light it up ignorant and intolerant. The problem is that most autism non-profit organizations have boards and executive suites stacked with people that are not autistic and don’t see the world from an autistic perspective.  Persons with autism are nuisance and a problem to be solved. Autism Speaks PR campaigns like “I Am Autism” (trigger alert!) don’t help to make the world friendly for autistics.

The “1 in 68” statistic means that your odds of successing in life are stacked against you and the house 99% of the time wins. Talk about being the wrong kind of 1%. I have to fight constantly to earn what I have and keep it. It’s exhausting and last winter I almost gave up.

I can’t change people’s negative perceptions about myself or others with autism. For every negative message, I point out the things about my autism that make me awesome and deliver extra value to the people I work with. Let that other autism non-profit that equates us with a puzzle piece have their day. We’ve got our own like ASAN and Asperger Works that know that we’re awesome team contributors and we do awesome things. Today is World Autism Awesomeness Day. I’ll share how my autism helps me to make it rain awesome sauce!

  • I have freakish powers to visualize. If you’re familiar with Temple Grandin, she has this talent. She’s able to visualize in detail plans for a humane feedlot. Describe a technical problem and *boom* in seconds I can see the solution and break down the next steps we need to do.
  • I’m an obsessive, detailed planner. I’m uncomfortable with starting a project without understanding what’s ten steps ahead and what potential problems we may face. I won’t go on a hike unless I’ve studied the guide book and have everything I need in case poo hits the fan. It does irritate more impulsive colleagues. Thankfully Lean/Agile keeps me from overthinking things and keeps my brain entertained with dreaming up test plans.
  • Out of the box? Thats my wheelhouse! I’m that guy on the team that asks “why are we doing this? Is there a better way to do it? There’s new thing we should try …” My autistic brain is an unstoppable idea and innovation machine. As I type, I’m inventing something else my my head.
  • I’m know for deep, deep dive analysis. I obsessively and intensely research things I’m curious about. Which is why root cause analysis and solving performance problems is my best IT talent.
  • I have a freakish long-term memory. My short-term memory is unreliable but I can remember what SSL ciphers are PCI compliant. I’ve memorized terabytes of data and can recall obscure bits of information. My autistic brain is one big huge Big Data in-memory database cluster!
  • I do business with extreme levels of integrity. Dealing with grey areas is a bit tough for me. My autistic brain is a binary machine. I’d rather follow the golden rule than to feel conflicted which drives me nuts. I do what I say and delver when I can. Autistics hate being wrong or violating personal standards of ethics.

 

Site Going Down for Major Renovations

Just a heads up. I will be taking this site down so that I can re-archetect the hosting infrastructure and rebuild the server from scratch.

Why am I doing this?

  • My day job is mitigating WordPress sites that have been compromised with malware, I am very busy. Often maintenance neglect is an attack vector. I’ll own  up to not being very responsive to installing wordpress and OS-level patches.

Soap Preservation

A few years back I took up traditional wet shaving. It was the curious retro appeal to it. The rituals. Then the blissful sensory treat of a badger brush applying a face lathered soap. It wasn’t always blissful: my fine motor skills and hand-eye coordination led to quite a number of nicks and weepers. Not to mention the razor burn.

Recently I discovered artisanal made shave soaps from companies such as Barrister and Mann and Stirling Soap. The formulation of these soaps were done in a way that the lather was extremely slick, protective, and moisturizing. A blessing for my sensitive skin.

Then I read more and more on Badger and Blade on soap. Then I really started to get curious about the chemistry of soap which has lead to a mild preservation. I was so curious about the science of soap that I considered making my own . What pulled me back was realizing that I had too many damned hobbies and unfinished projects.

That’s how these special interests and preservations start with a simple curiosity. Combined with the autistic brain, they scale to extreme heights driven by the obsessive nature of being on the spectrum.

I have a tub of Reef Point Soaps “Aviator” which I want to trade with someone that has a tub of Barrister and Mann’s Seville. Please contact me via the Contact Me page on this site.

Ken Rockwell’s Aspergers Ignorance

For the non-photographers, Ken Rockwell is a famous photography blogger who is know for his highly technical reviews of cameras. He’s also famous for occasionally saying laughably dumb things or giving ill-informed advice.

This is the man that said “… I did not know Jesus was a Jew …” and has advised his readers that they don’t need to bother with manual modes on their cameras. Not using manual modes is bad advice since mastering manual modes makes you a more creative and proficient photographer.

Now he takes the cake with this statement:

“… I can do without Pentax’ primitive DSLRs unless I was some Aspergers case hoping to use my ancient manual-focus Pentax lenses. Pentax’ manual focus lenses are also inferior to Nikon’s AI and AI-s and Canon’s FD lenses. God bless Pentax for trying and not giving up as Minolta and Contax did, but I fail to see who would buy it other than some feeble Aspergian hope to recycle old lenses from my K1000. (For those of you who don’t have to care for as many on-the-spectrum people as I do on a daily basis, those with Asperger’s have great difficulty handling change. Many outsiders may miss my point: those with this disorder find it an insurmountable obstacle to dump their old lenses and get new ones instead.) …”

http://www.kenrockwell.com/tech/00-new-today.htm (Pentax K-1 review)

Seriously????

I can deal with an assclown posting laughable gems like “P mode is Profesional mode”. That statement quoted above is ignorant and ablelist.

Please write to Ken Rockwell to call him out on his ableist attitudes and ignorance.

http://www.kenrockwell.com/contact.htm

(I’m not hyperlinking to his site so that he can get the benefits of SEO and backlinks to his site)

 

UPDATE:

I’ve had a few people e-mail me about Ken Rockwell. In one source, Mr. Rockwell admits that he is “on the spectrum”. But Mr. Rockwell, why the self-hating attitude towards your ASD? Too many Applied Behavioral Therapy sessions warp your mind?

That said it explains some of the eccentric things he says or does. I have a new found respect for Ken Rockwell as a fellow Autistic Cousin.

Autistic Cousin Relations

I found out about a former friend that was recently diagnosed with Asperger’s Syndrome. While I will never desire to be in the same room with this person, I still consider this person an Autistic Cousin and worthy of the support I extend to other Autistic Cousins. Despite our issues and differences with each other, we still need to back each other up and support each other. Family first over personal issues. We’re all cousins working towards a common goal.

Ken Thompson in a Suit!

It’s not often you get to see the Father of UNIX and God of All Geekdom wearing a suit.

Absolutely no disrespect to Mr. Thompson intended (I’m not worthy!!). It’s nice to see a Real Hacker (TM) slip into something other than the expected Uber Geek uniform from time to time. And oh, nice tie Mr. Thompson. You have better taste than Bruce Perens, just saying. :-)

My Varnish VCL file for WordPress sites

This was my starting point: https://dl.dropboxusercontent.com/u/5629939/temp/varnish402-wordpress-example.vcl

# Specify VCL new 4.0 format.

vcl 4.0;

# Imports

import std;

# Default backend definition. Set this to point to your content server.

backend default {

    .host = "X.X.X.X";

    .port = "8888";

}

acl aclPurge {

        "127.0.0.1";

        "localhost";

}

acl aclBanned {

        "81.82.83.84";

        "31.5.89.4";

}

sub vcl_recv {

        ### DOC

        # https://www.varnish-cache.org/docs/4.0/users-guide/vcl-built-in-subs.html#vcl-recv

        # http://www.mediawiki.org/wiki/Manual:Varnish_caching#Configuring_Varnish_4.x

        # - The builtin VCL is always called afterwards.

        # - Happens before we check if we have this in cache already.

        # - Typically you clean up the request here, adjusting headers, managing cookies, rewriting the request, etc.

       ### Do not Cache: special cases

        ###

        ### Do not Authorized requests.

        if (req.http.Authorization) {

                return(pass); // DO NOT CACHE

        }

        ### Pass any requests with the "If-None-Match" header directly.

        if (req.http.If-None-Match) {

                return(pass); // DO NOT CACHE

        }

        ### Do not cache AJAX requests.

        if (req.http.X-Requested-With == "XMLHttpRequest") {

                return(pass); // DO NOT CACHE

        }

        ### Only cache GET or HEAD requests. This makes sure the POST (and OPTIONS) requests are always passed.

        if (req.method != "GET" && req.method != "HEAD") {

                return (pass); // DO NOT CACHE

        }

        ###

        ### Request URL

        ### Static files: Do not cache PDF, XML, ... files (=static & huge and no use caching them - in all Vary: variations!)

        if (req.url ~ "\.(doc|mp3|pdf|tif|tiff|xml)(\?.*|)$") {

                return(pass); // DO NOT CACHE

        }

        # WordPress: disable caching for some parts of the backend (mostly admin stuff)

        # and WP search results.

        if (

                req.url ~ "^/wp-(login|admin)" || req.url ~ "/wp-cron.php" || req.url ~ "/wp-content/uploads/"

         || req.url ~ "preview=true"       || req.url ~ "xmlrpc.php"   || req.url ~ "\?s="

        ) {

                # do not use the cache

                return(pass); // DO NOT CACHE

        }

        # WordPress: disable caching for some parts of the backend (mostly admin stuff)

        # and WP search results.

        if (

                req.url ~ "^/wp-(login|admin)" || req.url ~ "/wp-cron.php" || req.url ~ "/wp-content/uploads/"

         || req.url ~ "preview=true"       || req.url ~ "xmlrpc.php"   || req.url ~ "\?s="

        ) {

                # do not use the cache

                return(pass); // DO NOT CACHE

        }

        if (req.url ~ "\?add-to-cart=") {

                # do not use the cache

                return(pass); // DO NOT CACHE

        }

        # Kick DFind requests

        if (req.url ~ "^/w00tw00t") {

                return (synth(404, "Not Found"));

        }

###
### http header Cookie
### Remove some cookies (if found).
###
# https://www.varnish-cache.org/docs/4.0/users-guide/increasing-your-hitrate.html#cookies

# Unset the header for static files
if (req.url ~ "\.(css|flv|gif|htm|html|ico|jpeg|jpg|js|mp3|mp4|pdf|png|swf|tif|tiff|xml)(\?.*|)$") {
unset req.http.Cookie;
}

if (req.http.cookie) {
# Google Analytics
set req.http.Cookie = regsuball( req.http.Cookie, "(^|;\s*)(__utm[a-z]+)=([^;]*)", "");
set req.http.Cookie = regsuball( req.http.Cookie, "(^|;\s*)(_ga)=([^;]*)", "");

# Quant Capital
set req.http.Cookie = regsuball( req.http.Cookie, "(^|;\s*)(__qc[a-z]+)=([^;]*)", "");

# __gad __gads
set req.http.Cookie = regsuball( req.http.Cookie, "(^|;\s*)(__gad[a-z]+)=([^;]*)", "");

# Google Cookie consent (client javascript cookie)
set req.http.Cookie = regsuball( req.http.Cookie, "(^|;\s*)(displayCookieConsent)=([^;]*)", "");

# Other known Cookies: remove them (if found).
set req.http.Cookie = regsuball( req.http.Cookie, "(^|;\s*)(__CT_Data)=([^;]*)", "");
set req.http.Cookie = regsuball( req.http.Cookie, "(^|;\s*)(WRIgnore|WRUID)=([^;]*)", "");
# PostAction: Remove (once and if found) a ";" prefix followed by 0..n whitespaces.
# INFO \s* = 0..n whitespace characters
set req.http.Cookie = regsub( req.http.Cookie, "^;\s*", "" );

# PostAction: Unset the header if it is empty or 0..n whitespaces.
if ( req.http.cookie ~ "^\s*$" ) {
unset req.http.Cookie;
}
}
###
### Normalize the Accept-Language header
### We do not need a cache for each language-country combination! Just keep en-* and nl-* for future use.
### https://www.varnish-cache.org/docs/4.0/users-guide/increasing-your-hitrate.html#http-vary
if (req.http.Accept-Language) {
if (req.http.Accept-Language ~ "^en") {
set req.http.Accept-Language = "en";
} elsif (req.http.Accept-Language ~ "^nl") {
set req.http.Accept-Language = "nl";
} else {
# Unknown language. Set it to English.
set req.http.Accept-Language = "en";
}
}
###
### Varnish v4: vcl_recv must now return hash instead of lookup
return(hash);
}

sub vcl_backend_response {
# Happens after we have read the response headers from the backend.
# Here you clean the response headers, removing silly Set-Cookie headers
# and other mistakes your backend does.

# main variable = beresp.
}
sub vcl_deliver {
# Happens when we have all the pieces we need, and are about to send the
# response to the client. You can do accounting or modifying the final object here.

# main variable = resp.

set resp.http.Server = "mine";
set resp.http.X-Powered-By = "electricity";
}

sub vcl_pipe {
# https://www.varnish-software.com/blog/using-pipe-varnish
# Note that only the first request to the backend will have X-Forwarded-For set.
# If you use X-Forwarded-For and want to have it set for all requests,
# then make sure to use this: set req.http.connection = "close";
# (This code is not necessary if you do not do any request rewriting.)

set req.http.connection = "close";
}

Work on SEO (reminder to self)

Read this as a self-reminder and a “practice what I preach” item. I just did a vanity search on Google and realized I need to work a bit more on my search engine optimization.

In the meantime, search for my name and “bow tie” and you’ll get more relevant results. And I do wear bow ties to business meetings 😉

UpdraftPlus + Amazon S3 Storage = Awesome

Take the stress out of keeping backups of your WordPress blog. Just sign up for Amazon’s S3 storage service, install the UpdraftPlus WordPress plugin, and let the awesomeness pile up. S3 is cheap. I store about ~20 gigabytes on Amazon S3 and it costs less than $2 per month. UpdraftPlus plug-in automates all your backups so you’re totally covered. Amazon isn’t going anywhere but cheaper per megabyte of storage. If you break up with your web host, it’s an easy restore from Amazon S3 via the UpdraftPlus plugin and a Dear John letter sent to your former web host. If you’re technically inclined, I can recommend an Ubuntu VPS at Servarica which this blog is hosted on.

Use a 3rd Party DNS host and Domain Registrar, trust me on this!

I’ve been a webmaster for quite a while. I’ve provided consulting to various small businesses over the years. If you are building a site for the first time, please follow these cardinal rules on owning and managing your domain name.

Use a third-party domain registrar with a good reputation and without tasteless ads

Do everything you can to avoid registering your domain name with your web host. Especially the ones that have huge advertising budgets, sponsor NASCAR teams, promise unlimited everything including the sun and moon (they never deliver on that), or offer to build your website for free (then hit you up for service fees after the trial ends). A common tactic in the hosting industry is to use your domain as a carrot and stick to retain you as a customer. It could be as evil as completely owning your domain (read the fine print!) or partnering with a domain registrar (yeah, you Network Solutions) that has a highly bureaucratic domain transfer process which makes it next to impossible to move your domain. Your domain name is your online brand, own it! That means going directly going to the site of a domain registrar such as NameCheap, Gandi.net, Register4Less, or any that are frequently reviewed by LifeHacker.

I think Danica Patrick is smokin’ hawt and a talented race car driver but that doesn’t excuse her sponsor, GoDaddy. I’ve had a few situations where GoDaddy has given me the run around because my domain is close to expiration date and I wanted to transfer to another registrar with better pricing. They usually make you register at GoDaddy for another year before you transfer. So you pay twice! I’ve had a few domains go in to domain purgatory and ended up losing them. The last thing you need is losing your domain to an evil link farm website operator. Never a good search engine optimization best practice. I can’t stress enough reading up on the the registrar’s transfer out policies and procedures. The good ones let you transfer out with zero drama. Avoid any that makes moving your domain seem like quantum theory physics.

I personally use NameCheap for all my projects. Full disclosure: I’m not on their affiliate program. I do not gain financially by recommending NameCheap. They’re very fair to the customer, fully comply with ICANN’s regulations, offer free DNS hosting, protect your privacy, and donate money to the Electronic Frontier Foundation. They also advocate for Net Neutrality and fought some really bad bills in Congress that would put the hurt on small website operators. They go out of their way to put the interests of Internet community and their customers first.

Don’t use the DNS servers provided by your hosting provider, use a 3rd party

This is another tactic to ensnare you. DNS means Domain Name System. It’s the phone book of the Internet. When you type google.com, a network of servers look up google.com, find the numerical Internet address (IP address), and send you to Google. Same with your website. People type the address for your website, the DNS system matches your domain name to a numerical Internet Protocol address and directs visitors to your site. Typically your hosting provider will take care of the technical side of DNS for you. However if you want to move your site to a new web host, now you have to work your soon to be former web host. And it’s a mixed bag as to the extent that your web host wants to help you break up with them. Some will just be sad and ask to be friends. Some will go batshit possessive on you. Just avoid the drama by using a third-party DNS host or the DNS hosting provided by your domain registrar. Using a third-party DNS host makes moving your site easier. It also allows you keep copies of your site at other hosting companies in the event that your first hosting company has technical glitch or outage. Just log in to your DNS hosting provider, change the IP address of your site to your alternate webhost, and you’re back in business after a few hours. If your perma-pissed with your webhost and you want to kick them to the curb: sign up with a new hosting provider, restore your website from a backup kept on your computer, change the IP address for your website to the new company, wait a day or two to allow the world-wide DNS database to sync up, then fire that lame-ass hoster. You’re in control. You’ve taken the risk out of relying on web hosting companies. You’ve taken a major step towards having a contingency plan in the event that your web hosting provider goes out of business.

Hopefully my hard-earned experience helps your small business be a more savvy website operator. If you need some help, contact me at [email protected]