Before I kill you, old friend…

On February 5, 2015, I had signed up with DigitalOcean and checked out my first “Droplet”. It was a 2vCPU host with 2GB RAM and 40GB of storage running Centos 6. You were well worth the cost of $20/month and did everything that I asked.

Today is your last day of life. I’ve moved on to a new host that has 2vCPUs and 2GB of RAM, but 60GB of storage and runs Centos 8. It’s also $5 cheaper.

Before I shut you down and terminate you I’d like to say that you did more than you were designed for. You were excellent in how you handled updates and installing software that you weren’t designed for. You almost had a 4-digit-day uptime but for some reason, I felt the need to reboot you.

[root@VPS ~]# last | grep ^reboot
reboot   system boot  2.6.32-431.1.2.0 Thu Dec 19 09:17 - 14:06 (134+03:49)
reboot   system boot  2.6.32-431.1.2.0 Sun Feb 17 16:50 - 09:17 (304+16:26)
reboot   system boot  2.6.32-431.1.2.0 Sun Dec 30 15:45 - 16:50 (49+01:04)
reboot   system boot  2.6.32-431.1.2.0 Sun Dec 30 15:43 - 15:45  (00:01)
reboot   system boot  2.6.32-431.1.2.0 Mon Dec 10 21:38 - 15:43 (19+18:05)
reboot   system boot  2.6.32-431.1.2.0 Fri Feb 16 11:15 - 21:37 (297+10:22)
reboot   system boot  2.6.32-431.1.2.0 Sat Dec  2 19:59 - 21:37 (373+01:38)
reboot   system boot  2.6.32-431.1.2.0 Sat May 27 10:11 - 19:59 (189+10:48)
reboot   system boot  2.6.32-431.1.2.0 Thu Aug  4 05:06 - 10:11 (296+05:04)
reboot   system boot  2.6.32-431.1.2.0 Thu Feb  5 18:41 - 10:11 (841+14:29)
[root@VPS ~]# shutdown -h now

Broadcast message from mjheick@VPS
        (/dev/pts/0) at 14:07 ...

The system is going down for halt NOW!
[root@VPS ~]#

I’ve shut down other hosts before without giving it a second thought. This, however, is one of the hardest and scariest things I’ve had to do in a long while.

Farewell, my friend at 104.236.197.67. May the bits be ever in your cache.

Server Upgrade Time!

So, it’s time to update my server! Currently, it’s hosted at DigitalOcean with an old Centos 6.5/2GB/40gb droplet. I pay a cool $20/month for my server for hosting, email, and about 10 other domains. It’s time to update!

So, I have to decide whether I will go with a Centos 7 or a Centos 8 image at $15/month. The only main difference is that I have to determine whether I need the updated Kernel and the additional updates and if my software/configs are easily portable to the new host.

Read More

.meta-json

One of my “projects” was to be able to store all my data and be able to add information to it. I gave it some crazy name, and let it sit and pickle away in my mind until it matured.

In comes .meta-json. With every file that would be stored (such as file_name.ext) , there would exist a separate file stored alongside that original file that would have the additional extension of .meta-json.

.meta-json is meant to be a common, easily indexable and searchable format that gives files a raison d’être. the format is rooted in json with specifics that helps to define the metadata of the file.

The proposed format comes down to:

{
   'author': 'unknown',
   'type': 'image',
   'title': '',
   'description': {
      'en': 'something'
   },
   'date': '',
   'source': '',
   'location': '',
   'people': [''],
   'checksum' {
      'sha256': 'xxxx'
   },
   'mimetype': '',
   'creation-date': '',
   'filesize': ''
}

This format pretty much breaks down to key/value pairs. Every key can either have a string or an array/object as a value, depending on the name of the key.

Key Value Types Description
author string|array A list of people who participated in creating this file
type string A generic name for what the file is (image, video, archive, document, etc)
title string|object A visible summary of what this items is.
As an object, the key:value is localization:summary
description string|object A full description of the item. This can be akin to “a picture is worth 1000 words”, but for any kind of media.
date string A parseable date/time identifying when the item “happens”, not typically the same as the creation or modification dates, but it very well could match.
source string How this item was acquired. Typically images are either via Camera or Scanner, Audio would be via Radio, Microphone, Telephone, etc. Documents could be OCR.
location string|object A parseable location where the item “exists”. As a string it could be a general location such as “around the corner from Joes Diner” or an intersection. If placed as an object, this identifies specificity as it could be “gps”: “”, “address”: “”, etc
people array Whom is depicted. Comes down to names or Identifiers of whom is presented in the items is called, such as “person 1”, “person 2”, or “Mick Jagger”.

Additional fields can be defined and exist, but a majority of the data should be present in the metadata for each file to complete it.

This is the initial spec of the .meta-json format.