Quick Archive
Full Archive

By YearBy Category


Legacy Macs

Posted on 06/13/2016

Today it was announced that I will own my first legacy Apple computer (an early 2008 iMac) when Apple releases macOS Sierra. I have owned older Apple devices which are no long supported, like an iPhone 3GS and a first generation Intel MacBook, but never when they were no longer on the latest operating system. Even when Apple was charging consumers for the newest version of OSX, I was happily handing over the money to ensure that my machine, which houses some very important and very private data, was receiving regular updates. Now that Apple has deemed my main machine as not worthy of their newest operating system, I am hoping that I won't be left out to dry.

I should be clear that I am not expecting Apple to support and update older machines forever; I understand that is not possible. I also understand that as technology advances and developers release new features, the older hardware is not capable of keeping up. For example, my iMac has has had the maximum amount of RAM (6GB) since the day I purchased it. The people at Apple pride themselves on making quality software that runs on advanced hardware and they charge consumers a significant amount of money. It's not that I don't want to upgrade my hardware, but it is not reasonable for me to upgrade my home machine if it is currently fulfilling my requirements.

Read more...

Updated on 04/02/2021

Sleep Well

Posted on 03/21/2016

I've struggled with my sleep for years. I have gone through periods of great sleep, horrible sleep, or no sleep. I use the Sleep Cycle app to help me track my sleep and have been frustrated at being unable to break 60% sleep quality on a regular basis. I've always heard that blue light from my computer and phone could be a reason why I wasn't sleeping well, but sometimes I need to work and getting away from my computer is not possible. I recently came across this article on Lifehacker and I learned that I needed to change when I wake up as well as what I do to wind down the day.

The aforementioned Lifehacker article outlines the "10-3-2-1-0" rules for getting better sleep. The rules are as follows:

Read more...

Updated on 04/02/2021

Create Your Own Dynamic DNS Updater

Posted on 01/15/2016

When DynDNS shutdown their free tiers, I, like many people, was left looking for an alternative. I tried No-IP, but their automatic updater never worked for me. Therefore, I was left to manually update my dynamic IP every 30 days like some type of animal. I was already using CloudFlare for caching, simple threat identification, and basic analytics (I don't want to use Google), so I decided to make my own dynamic DNS updater using CloudFlare, Python, and launchd. Before I layout the steps, I will say that dynDNS Remote Access is $40 per year at the time of this writing. This is definitely affordable, but a domain name is cheaper and more versatile. Feel free to follow these steps to setup your own solution. In order to complete this setup, you need a domain name, a CloudFlare account, and a Mac with python3 installed.

First we will setup CloudFlare. You will need to point your domain to CloudFlare's name servers. If you haven't done this yet, you can follow these steps. It might take a couple hours for the DNS to propagate, but CloudFlare will email you when the name servers are updated. Once your domain is pointing to CloudFlare, you need to setup a new subdomain A record. You can call the new A record whatever you like, but it should be easy to remember. For example, I use the subdomain "office." Simply enter in the IP field; this will be updated by your computer.

Read more...

Updated on 04/02/2021

My New Dog Howard

Posted on 07/16/2015

First, if you haven't read my first post on animal testing, I ask that you read that before reading this post. You'll learn a little bit about animal testing, what it means to me, and what Beagle Freedom Project (BFP) is doing to combat the unnecessary cruelty that animals go through. One of the newest programs that BFP started is called the Identity Campaign. For small donation, you can "adopt" an animal in a lab, give it a name, have the option to obtain the records of the animal, and help BFP acquire it if it is released from the lab.

My wife decided that both of us should be involved in this campaign. She adopted a dog for herself and surprised me with one as well. I have always wanted a hound named Howard (we didn't choose Diego's name), and Domenica appropriately chose this as the name for my adopted dog. She named her dog Lucky. About a week later we each received a package from BFP that included an adoption certificate, a tag with our dog's identification number, and a records request form letter. We were very excited and sent the letters right away.

Read more...

Updated on 04/02/2021

Hammerin' Hank

Posted on 05/13/2015

Baseball is my favorite sport, both to play (when I did) and to watch. Baseball and statistics go hand-in-hand. I have even created a baseball statistic myself called the Consistency Index. People use these statistics to try to compare players across generations and identify a GOAT (Greatest of All Time). This is an impossible task, but it is a truly interesting debate. It is easy to make cases for guys like Ty Cobb, Babe Ruth, Lou Gehrig, Willie Mays, Barry Bonds, Cy Young, Sandy Coufax, or Nolan Ryan, and these cases are very persuasive. However, it is my opinion that one person doesn't get enough support in this conversation.

Henry "Hank" Louis Aaron, nicknamed Hammerin' Hank, made his MLB debut with the Boston Braves in 1954 at the age of 20. In that game, he had no hits in 5 at-bats. This was not at all indicative of how his 22 year career would unfold. Hank Aaron is best known for breaking Babe Ruth's record of 714 for the most homeruns in a career. Aaron hit his record-breaking 715th homerun on April 8, 1974. Not only is the record impressive, but he did so in the midst of unbelievable death threats from racists in the South (by this time the Braves had moved to Atlanta). Aaron would finish his career with 755 homeruns, a record that would stand for 31 years.

Read more...

Updated on 04/02/2021

Animal Testing

Posted on 03/09/2015

About two years ago I learned exactly what animal testing is. I'm not referring to medical testing (more on that in a later entry), but rather the testing of household products many of us use every day. I thought that testing shampoo on a dog meant that the dog was getting a nice bath. This is far from the truth. The animals are severely mistreated and are never given the chance to have normal pet lives. If you have never heard exactly what happens inside a testing facility, please continue reading. I will warn you that some of the things you will read and see are disturbing and extremely saddening.

You may know that I have a beagle; his name is Diego. My wife, Domenica, and I adopted him from the Arizona Humane Society on July 12th, 2011. It didn't take long for Domenica to fall in love with Diego and all beagles. While she was searching for beagle-related things on the web, she stumbled upon Beagle Freedom Project and our lives changed forever. If you have the the time and the stomach, please watch the video of their first rescue. Unfortunately, this is one of the more uplifting videos. Watching those dogs run around on that small patch of grass for the first time gets to me every time. I can't watch some of the other videos that show how the animals are treated in the labs; they make me sick to my stomach. It's not hard to find such videos on YouTube.

Read more...

Updated on 04/02/2021

Blog 2.0

Posted on 12/30/2014

About a year and half ago I decided to create a blog. The idea was as much about coding the back-end of the blog as it was about writing. Inspired by Don Melton, who self-taught the majority of his programming skills and went on to do great things, I set out to learn as much HTML, CSS, PHP, and JavaScript as necessary to make this happen. The first version wasn't anything special; it had a welcome page with a list of recent posts and another page that displayed a blog entry given by a GET string. The biggest feature was a dated archive that would expand and collapse as the reader clicked on it. Today, I've updated it with a few more bells and whistles.

The goal with this blog, at least from the development perspective, has always been simplicity. You can read this to see how simple the first version was. After renewing my commitment to publishing here, I realized that it is not very easy to find old posts or past topics. For example, the welcome page showed the 5 most recent posts with a one paragraph preview of each. If you wanted to read any older entries, you would have had to click through the archive on the right. Now there is navigation at the bottom of the welcome page that allows the reader to see previews of posts from further in the past. Links labeled "Newer" and "Older" appear as needed as one navigates through these pages. In addition, there is now a "full" archive where the reader can view all the posts from any year or all the post tagged with a specific topic. This enables one to find or discover posts much more easily. All of this is done in about 200 lines of PHP.

This has increased the complexity a bit, but I am very happy with it. There are 4 total HTML files: the welcome page, the post page, the archive page, and the credits page. The content displayed on the post and archive pages are controlled via a GET string. It's hard to think of ways someone might break your code, but I've tried to make this as robust as possible. That is, if the reader changes the GET string to something crazy, the code is smart enough to make an adjustment and display something meaningful. Most importantly, as the blog grows building this content will not be hindered - it will remain as quick as it is now.

Read more...

Updated on 04/02/2021

« Newer PostsOlder Posts »