Detaching Unix Child Processes with Go

I ran into a situation with a project where I needed to build two separate programs to work together. The first being a server, and the second being an on-going client-facing process. The server is designed to kick off any number of instances of the on-going process. Before having written any code to have the server run the on-going processes as children, I had intended the child processes to be independent of the server. That is, if the server went down, the child processes would still function. They would store requests in a queue and periodically attempt to reconnect to the server. Once the connection was re-established, everything would go back to normal. It turned out that Unix processes don’t quite work like I had expected.

In reality, when a process spawns another process, it is called a “child”; the original is called the “parent”. As long as the parent process has not exited, the child will continue to run. If for some reason the parent goes down, so does the child. That is, unless the child is considered “detached”. A child process is detached when it no longer has a parent (I believe that technically, parent-less children are owned by an init process). Thus, you can have a parent process spawn a detached child and immediately exit, which will leave the child process all alone.

Read on! “Detaching Unix Child Processes with Go”

Hosting WordPress over HTTPS with Docker

Just the other day, I moved my portfolio to a separate server and started serving it over HTTPS. I was super stoked when it was all done! I wanted to talk a bit about what steps I took, since I found some annoying gotchas along the way. This isn’t a step-by-step tutorial, rather I’m sharing the configurations that finally got it working for me.

Read on! “Hosting WordPress over HTTPS with Docker”

Localizing Go to JavaScript

While working a Go backend for a side-project, I implemented a custom templating system among other things. For my project, I needed to be able to pass nonce values down to my JavaScript. I realized that keeping the data in the front-end up-to-date with the backend would require a lot of leg work. In order to save time and effort, I built the localize package.

This package takes a pre-defined Go data structure and recursively translates it to JavaScript primitives. The JavaScript that is spit back out can be used in just about any fashion, but it is designed to work best with the html/template package. Since the html/template package provides support for calling functions assigned to data passed to the template.Template.Execute() function, templates can fire off the localization process themselves. Once you have a template setup to utilize the localize package, it’s a fire and forget situation. The best kind, in my opinion.

Read on! “Localizing Go to JavaScript”

Go formatting with rgblog

One of my projects involves a lot of console output, and to make it readable, I added some color. Cyan for important messages, red for errors, and yellow for normal (everything is fine) logs.

The short of it is: I wanted to do the same somewhere else, so I published it.

If you’re a Go developer and want some quick and easy functions to color things, check it out.

Here’s the GitHub repo if you want to see the README. Or, you can just go get github.com/foresthoffman/rgblog and use it right away.

Read on! “Go formatting with rgblog”

React Counter Customizer

Eons ago, I briefly looked into ReactJS, to see what all the hype was about. At the time, I didn’t see much value in it since it didn’t look applicable to the projects that I was working on. Recently, I decided to give it another go. I took a deeper dive this time, and tried making a React-based customizer for my radial Counter JavaScript library.

Read on! “React Counter Customizer”

Running WordPress PHPUnit Tests With Docker

I recently moved my web development workspace from MAMP to LAMP with Docker. The transition was difficult, due to issues with Ruby and RVM on my host machine. Now that it is working, all is well!

When I started tinkering with Docker, my goal was just to see if I could replicate my WordPress development environment. After I did that, I improved it a bit. Now, i’ve suitably compartmentalized each project. Each WordPress project has its own WordPress installation, MySQL server, error logs, plugin and theme directories.

The only thing missing was being able to run unit tests!

Read on! “Running WordPress PHPUnit Tests With Docker”

I Switched From Pixelmator To Affinity Designer, and It’s Awesome!

affinity-designer-1916x1053

On Friday, I dropped $49.99 via the App Store to get the MacOS edition of Serif (Europe) Ltd.’s Affinity Designer. Already, I’m very impressed. Previously I had been using an outdated version of Pixelmator. It was outdated for various reasons, but the point is, it ultimately became unusable. That situation was unfortunate, but understandable.

When it was working normally, Pixelmator was leaps and bounds better than any of the other Adobe alternatives—read, “Inkscape and GIMP”. Pixelmator allowed me to do raster and vector graphic work, without having to sell my soul (and wallet) to Adobe. I’m very grateful for that. However, any mildly complex operations such as working with vector shapes, paths, or masks were very unintuitive.

Oh, and the UX in Affinity Designer is infinitely better. Pixelmator suffered from a plethora of disconnected menus that could cover up the workspace. Affinity Designer’s UI follows the lead of Adobe Illustrator in that the viewport is actually inset. That way the UI outlines the viewport and doesn’t cover up whatever you’re working on. From what I gather the menus are customizable (I didn’t have a reason to do that, so I can’t confirm). Best of all, the viewport isn’t limited by the dimensions of the canvas I’m working on! I can actually move around!

Anyway, I thought I’d share my initial experience with the program. I think that it will be a fantastic edition to my design toolbox. If you’re in a similar situation, Affinity Designer is worth a look.

Setting Up GitHub Pages (For Beginners)

I’ve frequently heard questions about getting started with Git and utilizing GitHub pages. Things like, where to start and if there are any good resources to follow. It got to a point where I deemed it worthy of a tutorial! In this video I touch on:

  • installing Git
  • making basic Git configurations
  • creating a GitHub repository
  • pushing to a remote repository from a local one
  • creating a gh-pages branch for project-based hosting (e.g. https://username.github.io/repo)

For non-Mac users, the downloads page on the Git website contains everything necessary to install Git.

Useful Sublime Text 3 Snippets

An example of the auto-completion dropdown in Sublime Text 3.
Sublime Text (3) Snippets!

I have been using the Sublime Text for a while now—it’s already up to version 3!—and have grown very fond of it. One of the many features that I have found extremely useful is the snippet system. Snippets allow you to store blocks of code that can be accessed with a keyword via the auto-completion pop-up when typing. I have a few snippets below that I tend to use over and over again. Perhaps you’ll find a use for them as well.

Read on! “Useful Sublime Text 3 Snippets”

So, you want to be a programmer?

Hello there! This article is targeted toward individuals that have an interest in programming, but are still on the fence. I hope to clear that up by answering some common questions/concerns that i’ve heard. I’ve paraphrased those questions of course. Enjoy!

“Where should I start?”

If you’re unsure where to start, the first thing you should do is pick a language. A language that I frequently recommend is JavaScript as it is a lenient language. The next step is to find a tutorial for the language and follow it to completion. That means physically typing out every line of code verbatim; it is impossible to learn a language without writing it. I recommend TheNewBoston’s JavaScript tutorial, as it is easy to follow and only requires a basic understanding of HTML (the structure of websites). Other excellent tutorials can be found on lynda.com, however a subscription is required after a short free trial period. If neither of those suit your fancy you can always use the mystical Google!

Read on! “So, you want to be a programmer?”