SSL all the WordPress!

I’ve been running my wp-admin page over SSL for a while now, having purchased a signed SSL certificate through my web hosting provider. I recently installed the WordPress HTTPS plugin but was experiencing issues with forcing SSL on the admin pages and forcing non-SSL through everything else.

The issue was with the plugin’s option to Force SSL Exclusively. The option forces everything that isn’t specifically secured via WordPress’s Force SSL (which makes wp-admin & wp-login available only over SSL) or HTTP filters that to be served over HTTP only. This means that any post or child post that doesn’t have the Secure Post option checked (available on the post’s edit page) will only be served over HTTP. This works great…until you try to customize your theme via wp-admin’s Appearance -> Customize page. This page will load your blog’s homepage within a frame, and since your homepage isn’t being forced over SSL (because Force SSL Exclusively is set), either your browser will display a warning about insecure content being served over a secure connection, or the theme customize page will blank instead of displaying your homepage.

I tried a number of different ways to fix this. The first one was to create an HTTP filter in the plugin’s setting page to redirect http://damiankarlson.com to https://damiankarlson.com. This ended up having adverse consequences, as I received a number of WordPress errors after doing so. My next attempt was to change my WordPress URL in Settings -> General to https://damiankarlson. This also didn’t work, as I was still experiencing the blank page in Appearance -> Customize.

My final attempt was to try the .htaccess route, since my site is hosted on a Linux server, and mod_rewrite is enabled. The Apache wiki lists two ways to do this. The first way uses a RewriteRule within .htaccess. The second way, which is recommended, is to use a Redirect directive within VirtualHosts. Typically, one VirtualHost exists for requests over port 80 (non-SSL), and the other over port 443 (SSL). However, my web hosting company doesn’t allow VirtualHost directives within my .htaccess file, so I had to use the RewriteRule.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    # forcing SSL

    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>

#AWS Glacier & SNS #PowerShell cmdlets

So, yeah, I finally finished writing this. In terms of coding projects, this one has been the most challenging for a number of reasons. First, AWS Glacier is cold storage, which means that vault inventories and archive retrievals have (approximately) a four hour wait before further action can be taken. After the job completes, it only stays visible for 24 hours. As you might imagine, I’ve lost track of how many times I’ve kicked off jobs for testing purposes, and then never got back to it due to family or work obligations. Second, those family and work obligations have been getting in the way. Most of the time, after the work day is done and the kids are asleep (providing I’m not on the road for work) I simply don’t want to sit in front of my laptop again. My brain is fried and wants a “bourbon, neat” for its troubles. 🙂

“Why did you do this?”, you might ask, and I would tell that 1.) I’m a nerd that likes to do nerdly things in order to keep the nerdly brain cells happy and well-exercised, and 2.) Glacier is a hell of a cool solution for my particular use case. Namely, “What the bloody hell do I do with 100’s of GBs (and more) of digital family photos and videos?!”

Usually, a service like Mozy/BackBlaze/Carbonite would be a suitable solution, but I store everything on a NAS and those silly companies usually pick NAS as the dividing line between consumer and business. The NAS I speak of is an Iomega ix-200, and if you’ve ever used one, you’re probably painfully aware that it’s a bit of a dog on the performance tip, so doing some fancy/lame thing like copying files off the NAS just to sync “to the cloud!” will eat up tons of local disk and be horribly slow. Slow as in, whenever it finishes, the zombie apocalypse will be upon us and I won’t care about digital photos anymore, just eating brains and trying to stay out of Rick Grimes‘ way.

Based on the above, even if I use the ever-loving hell out of Glacier, with the currently available, pricing I’ll never use more than a couple dollars a month. Pretty awesome, I think. OK, you’ve tolerated me long enough.

The code is up on Ye Olde Github here: https://github.com/sixfootdad/AWS-Glacier-SNS-PowerShell.

Be sure to check out the README and holler if you have any querstions.

My experience at #IndyVMUG #DemoDays2012

I had an opportunity to speak at the Indianapolis VMUG last Thursday, July 26th, thanks to a gracious invitation from Mike Ellis and Kyle Ruddy. This was my second VMUG user conference in Indianapolis; I attended last year as a sponsor. In case you’re not aware of the Indy VMUG, it’s quite possibly one of the largest VMware user conferences in the United States. This year’s attendance was well over 870 folks, featured multiple talk tracks starring some real rockstars of virtualization (Scott Lowe, Alan Renouf, Chris Colotti, Jake Robinson, and Jeff Szastak, to name a few), and over 70 vendors. Additionally, both EMC and Dell were onsite with hands on labs that allowed interested folks to spend time with products and technical consultants.

As I mentioned, this was my second Indy VMUG, but I’m still astounded at the sheer size of the gathering and at the quality of the VMUG’s execution. There was a real sense of community, which is something that isn’t always apparent at VMUGs. Many thanks to Mike, Kyle, the other VMUG leaders, and the MyVMUG organization. 🙂

#CloudCamp Austin: Lightning Talk with @thinkingserious

On Sunday March 11th, I had the pleasure of attending CloudCamp in downtown Austin during SXSW. If you aren’t familiar with it, CloudCamp is an “unconference where early adopters of Cloud Computing technologies exchange ideas.” It was hosted by Dave Nielsen (@davenielsen), and was attended by a variety of vendors, cloud computing administrators, and folks like me who wanted to learn more about OpenStack and the complementary tool chains & use cases.

CloudCamp started off with a series of lightning talks – which are typically 5-7 minute mini-presentations. The goal is to quickly impart information and ideas to the audience without drowning them in PowerPoint or vendor jibber-jabber. I took a good deal of notes, and present one of the lightning talks below.

Elmer Thomas: Personal Productivity for Developers

Elmer presentation was about applying programming frameworks, tools, and techniques in every day life in order to get things done. Breaking complex tasks or even a bunch of simple tasks down into easily completed pieces accomplishes a couple of things. First, you’re more productive. Second, getting those tasks *out* of your head and onto a piece of physical or electronic paper is a great way to reduce stress. (I can personally attest to this — having 50 different things bouncing around in my head can stress me out; combining that stress along with additional stresses can be mentally crippling.)

GTD (Getting Things Done): consists of breaking projects down into their actions and contexts. Instead of a big list of TODOs, break them down into specific actions that are contextual to where you are or what you need to do. It’s also helpful to pretend that you’re delegating the task to someone else. Write out what you need to get accomplished, not in shorthand but in a way you’ll remember what it was about later.

After you’ve formed a habit of doing this on a regular basis, start adding in a weekly review of captured but unprocessed items, future goals, etc. For an even higher level of  GTD, use it when making 1-2 or 3-5 year plans. Do you want to be employed doing Role X or working for Company Y in 3-5 years? What are the steps that you need to accomplish it, and what are the contexts? Just like quitting smoking or losing weight, reaching your mid to long-term goals requires regular execution and review. Elmer’s suggestion on learning more was simple: Simply Google for GTD. 🙂

Agile: Another great idea is to use Agile programming techniques.

  • Adopt the Rule of Three: write down 3 outcomes you want for the day, 3 for the week, and 3 for the year
  • Use the Monday Vision, Daily Outcomes, Friday Review: On Monday, identify 3 outcomes for the week. Each day you identify the three outcomes you want to accomplish. On Friday, identify 3 things that went well and 3 ways to improve.
  • Set boundaries in your Hot Spots to get a better work/life balance. Personally, I think of Hot Spots as a quasi time budget. Decide how much time you want to spend on certain “hot spots”. For example: no more than 50 hours a week on career, 4 hours a week on fun, 6 hours a week on personal or career development, etc. Once you know where and how you want to spend your time, you might find it easier to push back on tasks that try to interfere in other areas.
Pomodoro: Use a Pomodoro (60-minute kitchen timer that looks like a tomato) to help focus your attention and stay on track. Each task is broken into “pomodoros”, which are 25 minutes of time. Work on the task until the timer goes off, then take a 5 minute break. Every four pomodoros, take a 15-20 minute break.

Techniques: Elmer also had a few great suggestions to help manage time better. The first one is to create what he called a “digital truth dashboard”, or a central point for all of your stuff. It should be simple, easy, and allow you to link to resources or describe where they are. It should be easy to use and available anywhere. If possible, automate it using RSS & APIs.

Another great technique is one that I started doing without realizing what I was doing. I call it “the zone”; it’s usually reached while in a quiet place, and while listening to music with noise cancelling headphones. (Personally I prefer electronica such as dubstep or trance. The beats get my brain going, and the vocals don’t distract me.) However you do it, make sure that it’s effective in removing distractions while encouraging focus on the task at hand.

You can also use mindmaps to help with planning a task or a project. Once you’ve mapped it out, prioritize it, then break it into easily accomplished bite sized chunks. You’ll be done before you know it. 🙂

Personally, I thought Elmer’s presentation was highly informative, and it deserved more than 5 minutes due to the amount of content & references. Fortunately, he made it available on SlideShare. You should take a look at it when you have a chance.

Follow Elmer Thomas at @thinkingserious or check out his blog at ThinkingSerious.com.

An Airing Of Grievances

I was thinking today about a number of things that really annoy me about the overall user experience of browsing the Internet on a mobile device. (For the record, I use mobile Safari.) And before you think that I’m going to go all Andy Rooney on you (“You know what I don’t like about gophers?”), I just ask for you to bear with me; I’m certain that there are a number of things on this list that annoy you too.

Before I begin, a quick note: I understand that I’m just one guy on the internet with just one little voice. However, I’m hoping that somehow, in some way, this message gets out to site developers to start making their user experiences better. My frustrations listed here aren’t found only on old-school companies trying to be hip or cool (think Dr. Evil attempting the Macarena), but can be found on sites that should know better, like Mashable.

Modal windows

You know what I’m referring to, although you might not have known what they’re called. They’re those little windows that pop over a website, typically while darkening the site behind it; something akin to the Windows 7 User Account Control experience where the screen dims around a box, prompting you for input. Admittedly, I used to think modal windows were cool, especially when used in conjunction with photo galleries; who knows, perhaps there still are cool use cases for them. However, on a mobile device they tend to be a giant pain to use, causing a poor user experience.

Most modal windows take the size of the browser window into account when attempting to position themselves right smack dab in the middle. While this behavior may be OK for a desktop based browser, on a mobile it’s terrible. I can’t even remember how many times I’d be zoomed into some content on a mobile browser and a modal window popped up (often times, all by itself), not in the middle of my screen (making it easy), but rather down in the far right hand corner. When this happens, I’m forced to try to zoom out my view in an attempt to get to the X or close button. Even this doesn’t always work well, as the script that’s popping up the modal window might fire again when it senses a browser resize and again puts it in the far right hand corner. My assumption is that the script that’s calculating the centering is interpreting the dimensions of the browser to be bigger than the screen itself. Honestly, I don’t know if it’s because a site isn’t doing a good job on identifying the browser user-agent (user agents are a browser’s means of announcing who they are to sites), or if it’s lazy development from the folks who built the site, or an issue with mobile Safari – ultimately, it’s a poor user experience and has to stop.

I’ve had a number of experiences where I’ve had to fight a modal window in order to return to the content I wanted to read, but was unable to. What happens then? I leave your site. Seriously. So if you care about click throughs, time spent on site, or site exit pages; STOP making it hard for me to read something.

Please. I’m begging you here.

Tiny little click-boxes

Ok, seriously folks, this is a mobile device. The accuracy of a touch screen interface powered by a human hand isn’t the same sort of accuracy you might get from a mouse and a desktop browser. Stop making it hard for me to click things on your website, especially the !@#$ tiny little click-boxes in your modal windows.

Mobile sites that don’t translate full-version links

What do I mean by this? I’m sure you’ve had the experience by now where you’re using a mobile device and click on a link in an email, Twitter, or Facebook. Instead of getting the content you wanted to get, you’re instead presented with a mobile version of that same site WITHOUT the content you wanted. WHY? If you have a mobile version of a “full desktop” website, PLEASE make the both of them aware of the other; otherwise, you have no stinking business even making a mobile site in the first place. I don’t want to have to search your mobile site for the content, and I don’t want to have to find your “switch to full version” link (if you have one), then re-click the link in the hopes that I’ll actually get to your content. While I’m on the subject of mobile sites, please for the love of all things good and right…

Stop forcing me to use one version of your site or the other

If I get presented with the mobile version of your site, and then choose to go to the full desktop experience, please remember my choice. DON’T force me back to your mobile site. There’s a reason why I made that choice, wouldn’t you think? Make your site smarter, or frustrate and potentially alienate a huge part of your site’s audience.

Advertisements

Sometimes I feel like mobile browsing has taken the overall Internet experience that most have become accustomed to in the past decade and thrown it in the trash. Why in the world do I still have to view all sorts of ads and pop over windows and flashing crappy gif animations, etc? A mobile equivalent of AdBlock needs to exist. (Admittedly, it might in the Android world of mobile devices, but since I’m an iOS user… Well, we all know how much Apple loves to control the user experience and the platform by which it’s delivered, but I digress.) Somehow this sort of functionality is needed. Will someone please get the scientists working on this already?

OMG Stop complaining

OK. That’s enough for now; I think I’ve managed to get most of this out of my system. Site developers, please take my concerns into consideration. I’m sure I’m not the only one frustrated.