Image for post
Image for post

In a COVID-ridden world, traditional in-person conferences are few and far between. The days of waking up early, dawning your badge/lanyard, and picking up as much swag as you can from the exhibit hall have paused temporarily, but will hopefully return in the future. However, in the meantime, we cannot stop the valuable live sessions, information sharing, and excitement that conferences bring about.

Virtual conferences are becoming more frequent, and as an interesting side effect, have leveled the playing field. Traditional conferences can become extremely costly, and the more money the conference hosts have, the more market share they are often able to capture. This has left “mom and pop” conferences and individual contributors in the dust. My latest project, Shaka.live aims to make virtual conferences easy, but not just for corporate giants. Shaka.live wants to provide a platform for EVERYBODY to create engaging, live, and captivating events for all types of audiences. …


Let’s Focus on Something Else

Image for post
Image for post
Photo by Pass the Honey on Unsplash

When hearing about blockchain, distributed ledger technology, and cryptocurrency the first thing that you are probably attracted to is the financial aspect. The prospects of getting rich quick from one of the many bubbles, initial coin offerings (ICO), or “decentralized finance” crazes are often more tantalizing than the call of the siren, but we need to break away from this. Distributed ledger technology (DLT) and blockchain is so much more than just a method of value transfer, decentralized banking, or asset exchange. It is a way to break away from the centralized web that places so much emphasis on the FAANG companies (Facebook, Amazon, Apple, Netflix, Google (Alphabet)), servers, and internet service providers, and instead refocus efforts on democratization of data. …


The implications of “The Impostor”

Image for post
Image for post
Cover art for the game “Among Us”

Among Us is one of the latest crazes to hit online gaming and the streaming platform Twitch. It has a simple premise: players complete tasks on a ship, but among them are impostors that attempt to sabotage and kill the other players while avoiding detection. The game is cross-platform across PC and mobile, lending to its viral success. However, this is not a game review…

The idea of an “Impostor,” or malicious actor, among a group of individuals working towards a common goal is what makes one of the biggest problems in computer science and theory so complicated. This problem is what underpins the mechanics of leading blockchain technologies such as Ethereum, Bitcoin, Litecoin, and others. The concept of the game is an allegorical jab at developers everywhere working on consensus algorithms for distributed technologies. …


Extracting Value from Comments

Image for post
Image for post
Photo by Fabrice Villard on Unsplash

This is the second part of the walkthrough “Cool Stuff with Go’s AST Package.” If you have not yet had the opportunity to review the first article, I recommend starting there to become acquainted with abstract syntax trees, the Go package itself, and the facilities provided by the package for traversing Go’s AST.

What we Will be Covering

In the first article we introduced NATS and how it can be used to create a microservice that publishes regular heartbeats on a message topic. …


Ability to Recreate One’s Self

Image for post
Image for post
Photo by Markus Spiske on Unsplash

The “Beyond the Source Code” series of posts will explore source code beyond its use as a set of instructions that direct a process or set of processes. We will dive in topics such as readability, metaprogramming, quines, and many other topics that look at source code in a different light. The motivation for this series comes from the idea of making source code work for developers, rather than the developers having to work against the source code.

In the previous article we dove into readability and understanding of source code, with a focus on self-documenting code, comments, and documentation automation. …


Time for a bit of tough love

Image for post
Image for post
Photo by Sarah Kilian on Unsplash

Everybody in the business of working with ideas has heard the phrase “ideas are a dime a dozen.” Yet for some unknown reason, everybody holds onto their ideas like they are the most precious diamond on the face of the planet. Yes, you should cherish and care for your ideas, but do not become obsessive. Ideas are in essence extremely cheap, with many bordering completely worthless due to intractability, no market fit, or a lack of resources to see the idea to fruition. Learn when to move on.

Face the Fact

You will come up with bad ideas, especially if you go out searching for them. Your relentless pursuit of the perfect idea for a business or product will blind your ability to recognize simplicity, elegance, and actual solutions to problems the world is dealing with. The further you dig down into that rabbit hole of ideas, the more complex they become. You end up in a tangled mess of complex branches that stem off other ideas. These branches either become to unwieldy to traverse, or become so feeble they can’t support the weight of a business. …


The Package for Dissecting the Go Language

Image for post
Image for post
Photo by engin akyurt on Unsplash

Let’s explore the awesome builtin packages that ship with Go, and the cool stuff you can do with them. I will pick some of the more “obscure”, “complex”, and/or special purpose Go packages, especially ones that set the language’s builtin library apart from other languages.

The first stop is the go/ast package. This package is used to explore the syntax tree representation of a Go package, and can be used to perform static analysis, code linting, metaprogramming, and anything that requires a structured interpretation of Go source code.

This walkthrough is broken up into three parts. We will explore traversing the AST tree, type assertions, extracting literal values from the code, comment extraction, and some advanced struct reflection. By the end of it, we will have a utility capable of extracting documentation from a NATS publishing microservice that details the topics and message types that it produces. The output will be similar to a Swagger specification, but for event messaging systems. …


A Curated List of Podcasts for Programmers and Software Engineers

Image for post
Image for post
Photo by rupixen.com on Unsplash

As a programmer, turning off my brain is something I am not good at. Programmers are always thinking about that latest bug that’s pestering them, an architectural redesign for their web application, or what to name a variable. Regardless of what’s on their mind, a programmer usually has a train of thought that is more than a mile long, constantly having train cars added on.

One of the ways I have found to keep this train moving, but let the steam engine cool down a bit, are technical podcasts. Technical podcasts allow me to keep a problem framed in my mind, but take a small breather and hear another’s thoughts and musings. If the podcast episode is selected carefully, it can even be used as a way to seek outside help on your problem and as a catalyst ideas. For example, if you are working on designing a database interface for an application, it might be a worthwhile exercise to listen to a podcast episode on open source databases, or a show about data engineering. …


Image for post
Image for post
Photo by Vinicius "amnx" Amano on Unsplash

One day on a whim, I decided to write a program in a goofy language called “Brainf**k” (you can fill in the rest of the letters). Starting off as a joke, I realized that I was learning a lot more along the way. Learning Brainf**k has had a profound impact on my thinking as a software engineer, and I think everybody can benefit from learning it. The program I wrote can be seen below. If you want to know more about this amazing language, please read on.

++++++++++>>>>++++++++++[>++++<-]>+++>++++++++++<<<<<<[[->+>+<<]>[-<+>]>[>>>.<<<-]>>>>.<<<<<<-]

Table of Contents:

  1. Esoteric Languages

2. This Language is F***ed Up. But Really Cool…

3. Language…


The “Beyond the Source Code” series of posts will explore source code beyond its use as a set of instructions that direct a process or set of processes. We will dive in topics such as readability, metaprogramming, quines, and many other topics that look at source code in a different light. The motivation for this series comes from the idea of making source code work for developers, rather than the developers having to work against the source code.

In this particular post we will be exploring the readability of source code and the implications of having high readability vs low readability. We will also explore how certain programs can interpret source code and automatically build documentation to improve developer productivity. Keep in mind that readability is a completely arbitrary metric and easy-to-read code in one person’s eyes may be completely different than another’s opinion. …

About

Cooper Thompson

I am a software engineer with a love for automation and systems design. I believe source code is the key to a world of unlimited creativity.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store