Strong Opinions, Weakly Held

I believe in three core values to any successful team and/or project: communication, collaboration, and transparency. Communication is a key aspect to successful teams because it keeps everyone involved. Communication drives ideas. Ideas are the seeds of change and communication gets them planted. Collaboration brings the seeds of ideas to growth. Teams that are not collaborative suffer from infighting and become unproductive and resentful of a project. Team members want to be part of a solution and collaboration is the vehicle everyone must ride in to reach success. Transparency is the last leg of a successful team. Transparency requires both communication and collaboration. Transparency requires each individual team member to know the difference between what they do know, and what they need to learn. Team members who are transparent in their skills ask a lot of questions. The answers to these questions are often helpful for other team members as well. Transparency is also about owning mistakes, addressing them, and learning from them. Every failure comes with an opportunity to learn. One never really fails if they seize the learning opportunities afforded by failure and grow from them. These three core values I hold are what I instill in my teams.

Recently, during an interview, I brought up these core values and followed up with a quote I feel expresses not only these three values, but my thoughts on being a team member: “Strong opinions, weakly held.” This can also be rephrased as “Strong opinions, loosely held” and they both mean the same thing. I bring strong opinions to a team backed by experience and learning through many failures. Learning from these failures strengthens particular opinions, but they still remain loosely held. These opinions are meant as a starting point for collaboration or as a learning opportunity for myself and any others who may not have experienced what brought about these opinions. These opinions are meant to inspire creative thought and collaboration, not as a rule of thumb or “set in stone” requirement. These opinions are loosely held.

The flexibility of a team is important to adapt to changing requirements, processes, deadlines, and outside obstacles. Rigidity is a project slayer. I may have strong opinions on a topic (say, using a REST API vs an unstructured one) but these opinions are meant as a conversation starter to discuss a solution to a relevant problem. This conversation solicits input from the members of the team. It provides a platform for other opinions and a better solution. Sure, that solution may be an unstructured API, and that’s okay. But, the point of bringing up strong opinions is to start that conversation, not lay down the law. If there wasn’t at least a conversation about API design (or any other implementation) in the first place, the team could move forward in a rather meandering manner. The project could take an intangible hit to be discovered later as it accumulates technical debt. Communication about a project direction reduces this debt and lets a project be more flexible during a time where flexibility comes easy.

In the interview, I failed to accurately describe “strong opinions, weakly held.” This article is me learning from that failure and really taking the time to think about that phrase and how it can be perceived by others. When I came across the phrase it resonated with me as it so succinctly underlined my core values of communication, collaboration, and transparency. To me, it’s a positive attribute to have. Using that particular phrase became a strong opinion of mine. Maybe in the future I won’t use this phrase without following up with exactly how it aligns with my core values and what I look for in a team. The only thing I know is that I don’t know everything and I am definitely open to learn. I have strong opinions for sure, but they are loosely held.

Copyright Expiration is BACK!

Copyright Expiration is BACK!

Since 1998, when Disney (along with a group of other corporations) successfully convinced congress to pass an extension to the original copyright laws. The original laws state that any works created before January 1, 1978 were protected for 75 years. The change in 1998 extended that to 95 years. This is great for corporations like Disney who’s iconic character, Mickey Mouse, was first published in 1928 in Steamboat Willie. This averted releasing the character Mickey Mouse into the Public Domain in 2004. It is now scheduled to be moved to the Public Domain in 2024 and I’m sure we will see another fight similar to that in 1998 to extend copyright protection laws even further.

While these copyright protection laws protect anything that was published prior to January 1, 1978, everything published afterwards is protected for the lifetime of the creator plus 50 years. So, this article will be entering the Public Domain sometime after January 1, 2219 (hopefully later! Predicting your own death is a little morbid).

So we can rejoice that, as of this moment, anyone can publish Robert Frost’s Stopping by Woods on a Snowy Evening without fear of violating copyright laws as it is one of many works entering the Public Domain today!

Stopping by Woods on a Snowy Evening

By Robert Frost

Whose woods these are I think I know.   
His house is in the village though;   
He will not see me stopping here   
To watch his woods fill up with snow.   

My little horse must think it queer   
To stop without a farmhouse near   
Between the woods and frozen lake   
The darkest evening of the year.   

He gives his harness bells a shake   
To ask if there is some mistake.   
The only other sound’s the sweep   
Of easy wind and downy flake.   

The woods are lovely, dark and deep,   
But I have promises to keep,   
And miles to go before I sleep,   
And miles to go before I sleep.

Hello world!

So, after much consideration, I’ve retired from computer repair and decided to re-launch a site to focus more on my passion: developing solutions to interesting problems. My goal is to document my forays into the unknown (to me at least) for later reflection. Maybe it’ll help someone facing similar issues.

I have a few projects lined up and I’m considering resurrecting older projects to make them more modern. I’m currently working on a service for No Man’s Sky that allows a user to determine what they can build given resources they have (or could gather). More on this in another post.

I recently completed a Discord bot for Tom Clancy’s: The Division that leverages the very nice and clean APIs at Ruben Alamina’s site to easily search all the vendors when the reset their inventories. This too, I plan on writing up in a later post.

So, this site is running (finally) and I plan on writing up how I made it all automated, repeatable, version controlled, secured and backed up. I haven’t worked much with Docker before, but I do understand the concepts. This site runs on Docker! It’s in it’s own little container with a mounted Docker volume for plugin files. It’s also fronted by Nginx or, more specifically, an nginx-proxy container with a Let’s Encrypt companion container letsencrypt-nginx-companion (go ahead, check the SSL certificate) that auto-magically creates, renews, and configures any new publicly exposed containers with their own SSL certificates provided by Lets Encrypt. The site is backed by a MariaDB Docker container with a mounted data Docker volume. The website volume is read-only mounted to a WordPress Backup container that is also linked to the MariaDB container. This WordPress Backup container periodically copies and compresses the WordPress files in the mounted volume and creates a database dump of the WordPress database. These are both stored on the mounted backup volume. This backup volume also happens to be mounted to a Dropbox container and all of these backup files go straight to Dropbox! So, if this server goes kaboom! All i have to do is relaunch the containers on another host and restore the backups from Dropbox!

That’s it for the teaser. It was a fun project and I’ll definitely be diving into the details when I get back from GopherCon next week. I’m sure I’ll have some goodies from that as well (the No Man’s Sky and the Division projects are both written in Go).

I hope you enjoy the project write-ups I’ll be adding here. It’s not all programming, I’m developing a game with my son. I do plan on writing up other things as well (we have a Raspberry Pi and home automation is something I’ve dabbled in a wee bit).

What are you interested in? What projects would you like to see? I’d love to hear about them so leave a note in the comments below!