Emma Long Park

Two posts in one day, eh? Yup. If earlier this week I went to Walnut Creek, today I went to Emma Long park out west of here in the hills. There was a rather nice nature trail that follows Turkey Creek. Soooo many doggos. If I ever get a dog, I think I’ll take them to this spot lots just to socialize them.

I took a bunch of pictures. Enjoy!

Emma Long Park (2018)

Job Offer!

So, for those not in the know, for the past two and a half months I’ve been unemployed. My previous employer was a pretty cool place, but it wasn’t working out for me and I resigned back in March.

Maybe one of these days I’ll talk a little more about why it wasn’t working out, but for now I prefer to keep that story close to my friends.

But anyway! Today I got a job offer from one Mirantis! I’ll be moving forward in my career as a Cloud Operations Engineer, doing support stuffs! I’m very excited about this, and am glad to see the end of my unemployment vacation in sight.

A New Paradigm!

So! I’ve turned off my Facebook account, and I’m going to be using my blog here as a sort of “replacement.” I was just getting tired of Facebook. I mean, yeah, it’s a nice way to stay in touch with folks and get back in touch with people that I haven’t spoken with in years, but more often than not it seemed like a mindless, thoughtless time waster of a place. That, and politics is just so frustrating these days, that I’m honestly much happier being apart from it.

And, to be honest, I’m annoyed with the idea that “you can’t leave facebook, cuz it’s the only way to stay in touch with people.” It’s absolutely rotten to be in a place only because you HAVE to be.

Anyway, I’ve gotten things set up so that I can add subscribers too, so any time I post those subscribers get emails informing them. It’s not a perfect match to what facebook is, but it’s better for the very reason that I don’t have to be there anymore.


Aaanyway, I’m recently unemployed and undergoing a job search. I’ve been taking it easy and going slow with it, since I can afford to do so and also cuz I want to take some time to practice the skills I learned at my last job while allowing the right opportunities to float up to the top. It’s been very relaxing and rather good for me to take this much time to look for new work.

I’ve also managed to completely redesign and rebuild my server cluster using modern tools and technology. I’m supremely happy with how it’s all come together, and I’m pleased with all the things that I have managed to get working. ūüôā I mean, here’s a list of some of the things that I used:

  • Icinga2
  • Puppet 4
  • Grafana
  • Collectd
  • Rundeck
  • Gitlab
  • Nginx
  • PHP-FPM
  • Consul
  • haproxy
  • Powerdns
  • MariaDB’s Galera cluster implementation
  • Keepalived
  • Csync2
  • Postfix

It’s been good to work on all this, and I’m optimistic that it’ll help me out moving forward as well.

Anyway! I’ll be posting here more often moving forward.

StarCraft “Pro”-Casting Flibble

In college, my friends and I looooved Starcraft (the original one, II hadn’t come out yet). We would regularly play games on the college LAN, and over time I became one of the pre-eminent players along with Andrew Lambourne. Tons of fun was had before everyone got tired of Andrew and I trading wins back and forth, almost always kicking everyone else’s ass. XD

Anyway, when I went to Korea, I was in professional Starcraft territory and I reveled in it! I started attending live pro-games at the GOM TV studio in Mok-dong. I became one of the regulars and was often featured on the live internet broadcasts as the token “White Guy,” especially if I had a sign.

Anyway, one day one of the English casters was out for some reason, and I was randomly invited into the casting booth to fill in. Well! That was definitely the offer of a life time. If I were smart I would have said “no,” but I wasn’t smart and I wanted to make some memories. I ended up “professionally” casting, live on the internet, three matches that evening, and booooy oh boy did I make an ass of myself. XD I’m both glad and regret that I’ve not found videos of that procast so that I could watch myself fail so hard at being charismatic.

Even so, for having never done something like that before, I think I acquitted myself well enough and there was even a fan thread on the Team Liquid forums. I now present that thread to you so that you can share in some of my embarrassment from that time and an honestly fun memory. I wouldn’t take back what I did at all. ūüôā

Shameless Flatulence in Korea

Once, when living in South Korea, I met up with a couple of expatriot friends and we went out together. I don’t entirely recall where we were going or what we were doing, but it involved taking the Seoul Metro.

While out, they told me about how older folks in Korea didn’t really feel any sense of public shame as we would understand it in the States. They’d spit on the ground and make all sorts of bodily noises, and no one would really be all that bothered by it socially.

Sure enough, while walking down our destination’s metro platform, this elderly Korean man right in front of us let out the loudest and longest flatulence. We giggled for at least 10 minutes afterwards.

How to make your own LizardCam!

I’ve had a lizard cam of one sort or another running for a few years now. My current iteration is inexpensive (about $125 using my links below) and easy to set up, so I’d like to write a tutorial on you can set up your own.

Materials:

  1. A web cam, like this one (link). I like this one because there’s a little hole in the fixture that allows you to nail it to walls.
  2. A Raspberry Pi (link). A tiny, inexpensive computer! I recommend a Raspberry Pi 3 (link), since it comes with built in Wifi, so you can position it anywhere in your home.
  3. A 64 GB mini SD card. This’ll be your Raspberry Pi’s hard drive. Quality matters here; a cheapo micro SD card will cause your Raspberry Pi to crash after a few days/weeks. I recommend going with Samsung (link).
  4. Raspbian, your operating system for the Rasberry Pi. You can download it here (link).
  5. An internet connection!

Instructions:

Install Raspbian

First, get Raspbian installed onto your SD card and start up the Raspberry Pi. I used the following instructions to help me get started. This should work for any savvy Windows user and should have you nearly ready to set up the cam.

NOTE: The instructions on copying the Raspbian image onto the SD card will vary depending on whether you are using Windows, Mac, or Linux.

The instructions in the video fit Windows perfectly.

Mac (link)

Linux (link)

Highlights from the video:

  1. Obtain the things that you need.
  2. Download the Raspbian image and copy it to the SD card using the appropriate method for your system.
  3. Get the system up and running, update software, and ensure a healthy configuration.

NOTE: Two more things that you should do before moving to setting up your cam is resizing your root filesystem to fill up your entire SD card and setting the correct timezone for your Raspberry Pi.

These instructions (link) should help you with adjusting the root fs size. This way, your operating system can work with a full 64 G of disk space instead of the default 4 G.

These instructions (link) should help you with adjusting the timezone for your Raspberry Pi.

Setting up the Cam using Motion

Setting up the camera itself is relatively easy. By this point, your Raspberry Pi should be powered on and you should have a command line in front of you (either by logging into the terminal directly or by starting up a terminal in the OS interface). Run the following command to install ‘Motion,’ the program that powers the web cam.

sudo apt-get install motion -y

Wait for the installation to complete.

When the installation has completed, review Motion’s¬†configuration file at /etc/motion/motion.conf. You can use this using the ‘nano’ command on the command line or a file editor in the OS interface.

nano /etc/motion/motion.conf

You will see a default configuration file in front of you. Most of the configuration items here are fine and do not need to be modified. I do have a few items that I recommend changing, though.

Ensure that you have the right frame size set for your web cam. I use the below settings.

# Image width (pixels). Valid range: Camera dependent, default: 352
width 640

# Image height (pixels). Valid range: Camera dependent, default: 288
height 480

Make sure that you have an appropriate frame rate set. I use 20, since that lowers the network bandwidth and ensures better quality to users geographically far away from me.

# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 20

# Maximum framerate for stream streams (default: 1)
stream_maxrate 15

Ensure that the ‘stream_port’ setting is changed to ’80’ from ‘0,’ and also set the ‘stream_localhost’ setting to off. This way you can actually see your over the internet!

# The mini-http server listens to this port for requests (default: 0 = disabled)
stream_port 80

# Restrict stream connections to localhost only (default: on)
stream_localhost off

There may be some other configurations that I’m missing, and there may be some other tweaks that you may want to make, but if you want to have a working configuration with few questions asked, you can find my current configuration here (PasteBin.com link).

Once you’ve done all that, give things a test by plugging your webcam into the Raspberry Pi and starting up Motion. You can start up Motion using the following command.

sudo /usr/bin/motion -c /etc/motion/motion.conf

All being well, you should see the light on your webcam light up, which indicates that Motion is capturing frames and. Next, test to see if you can actually see the stream by going to your Raspberry Pi’s local area network address in your browser and seeing if it loads the stream. You can find out the local area network address by running this command.

ifconfig | grep 192

When done testing, run the following command to turn Motion off.

sudo /bin/pidof motion | sudo xargs kill -9

Finishing Touches

The last things to do are setting up a schedule by which your cam runs (if that’s something that you want), positioning your cam and Raspberry Pi appropriately in your home, and making sure that the outside world can reach it by setting up pinholes through your home router.

 

Using Cron Jobs to Schedule your Cam

Let’s talk about scheduling the cam first. In Linux, scheduling is done using something called ‘cron jobs (link).’ Here are the cron jobs I use and an explanation of how they work and how to I install them.

#lizard cam start
0,20,40 13,14,15,16,17,18 * * * root /usr/bin/motion -c /etc/motion/motion.conf

#lizard cam stop
19,39,59 * * * * root /bin/sleep 55; /bin/pidof motion | /usr/bin/xargs /bin/kill -9

I install the cron jobs by creating a file in /etc/cron.d/ called ‘motion’, and then copying the above contents into this file. Here’s what they do.

  1. At the 0th, 20th, and 40th minute (0,20,40) of the 13th, 14th, 15th, 16th, 17th, and 18th hours (13,14,15,16,17,18) every day of the month (*) of every month (*) and every day of the week (*), start the web cam as the root user (root /usr/bin/motion -c /etc/motion/motion.conf).
  2. At the 19th, 39th, and 59th (19,39,59) minute of every hour (*) of every day of the month (*) of every month (*) and every day of the week (*), wait 55 seconds from the start of the minute and then stop the Motion process if there are any running (root /bin/sleep 55; /bin/pidof motion | /usr/bin/xargs /bin/kill -9).

You can modify the cron jobs to fit an appropriate schedule. Just make sure that you are setting it according to the Pi’s system timezone, and not whatever your local timezone actually is. If you adjusted it during the setup above, then this¬†shouldn’t be a concern.

 

Always on Web Cam

If you want your web came to always be on when you start up your Raspberry Pi, then you will want to do the following.

Open up the /etc/rc.local file (link) with a text editor either on the command line or in the OS interface.

sudo nano /etc/rc.local

Put the following command into the rc.local file just above the “exit 0” line.

/usr/bin/motion -c /etc/motion/motion.conf

All being well, the next time that you plug in your Raspberry Pi your webcam should start immediately.

 

Positioning

Assuming that you’ve made it this far without issues, you can unplug your Raspberry Pi from everything, position it in an appropriate spot in the house where you can reach both an internet cable, power, and the spot where you want your web cam, and then plug everything in!

 

Pinholes through your Router

If you want the outside world to be able to see your cam, then you will need to make sure that incoming traffic from the internet can pass through your router to the Raspberry Pi. Every router is a bit different, so I can’t provide detailed instructions here.

However, the basic gist of it will be the same across all platforms. Make sure that outside traffic hitting your public IP address on port 80 can reach your Raspberry Pi’s LAN address on port 80 as well. Once that’s done, then you should be able to go to your public IP address and see your web cam!

 

Questions and Problems?

If you’re having any issues with these instructions, then please feel free to reach out to me on Twitter. I’ll be glad to help out in any way that I can!