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.
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.
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!
The Parsedown Importer plugin allows administrators to import Markdown files into posts and pages. In addition to a helpful interface, the importer provides a series of settings to control how the posts or pages are created.
Ambient Weaver is an ambient sound player for macOS 10.12.2+ and Windows 10. The core mechanics of the player include the ability to create playlists which contain customizable sound tracks. Each track has controls for volume, a starting point, and whether or not the track should repeat. Normal audio players, designed for non-ambient songs, run one track at a time. When those players are used for ambient sounds, there are always momentary breaks in the sound that can break the listener’s concentration. That is the nature of having one playback loop. Ambient Weaver gives each track it’s own loop. This allows for tracks to be overlain in a way that masks the momentary breaks, creating a seamless listening experience.
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.
The Basic theme is exactly what it sounds like. It’s a barebones starter theme built on top of the fantastic Underscores theme (_s). With support for Sass and some build tools that I pieced together, modification is reasonably easy.
Now, I’ve got a launch pad project for simple WordPress site development! Actually, we have a launch pad project for simple WordPress development. I’ve hosted the source code and build tools on Github. You can build the project yourself!