Nature has the best graphic designer by far. Picking colors is the easy part. Learn how to make the best use of them as well, with this simple system.

You’ve got 16 million colors to choose from. Which ones do you pick for your color theme? Turns out, Mother nature always knows best! Follow this guide and your UI will have natural looking color combinations with great UX.

Image for post
Image for post
Photo by Sharon Pittaway on Unsplash

What is a theme anyway?

theme | THēm | noun
an idea that recurs in or pervades a work of art or literature

Translation for design systems: A set of colors that recurs in an interface.

We have 2 easy tasks ahead of us:

  1. Determine a set of colors.
  2. Determine the system that we’ll use to apply them to our interface.

About this series

In this series, I’ll be…

Rather than becoming an expert at color theory, here’s how you can easily wield colors like a designer.

A closeup photo of red, green and blue pixels under a microscope.
A closeup photo of red, green and blue pixels under a microscope.
Apple iPad 2 pixels under a microscope. From

Part I. Don’t use RGB Unless you’re an expert in color theory.

Pop Quiz: Without cheating, describe what color this hex code is likely to represent: #03A87C? Here’s a hint: RGB(3, 168, 124) (did that help at all?)

— The answer: ¡uoʇʇnq ʍoןןoɟ ǝɥʇ ɟo uǝǝɹƃ ǝɥʇ s,ʇI

You don’t have to be religious to appreciate this vastly underrated tip at resolving interpersonal conflict…

Image for post
Image for post
Oh, believe me, I’ll tell you what the Fox says! — Photo by on Unsplash

What do you do when someone rubs you the wrong way, does you wrong, or treats you poorly? Our goto is typically to go run and tell someone, gossip behind their back, or cut them off, or even get revenge somehow. Well, there’s this one verse in the Old Testament that gives some pretty solid advice about what to do during interpersonal conflicts. It described to ancient people what to do, and when I read this, it changed how I handled conflict forever. Here is the verse:

A Brother who Sins (Deuteronomy 19:15–17)

Moreover if thy brother shall trespass against thee, go and tell him his…

A cognitive science approach to how our brains limit our ability to notice things, how we might be able to hack this in our favour.

Image for post
Image for post
Did I remember to shut the pantry door? Those fruit flies have been really pesky lately. - Photo by Rob Schreckhise on Unsplash

A newlywed couple, a landscaper, a cat-burglar, and a bird-watcher take a stroll down the same suburban neighborhood on a sunny May afternoon. The newlywed couple sees the potential for future children playing in the yard, and wonders what the schools might be like in this area. The landscaper is looking for uncut lawns, overhanging branches, immediate opportunities to provide service the homeowners. The cat-burglar is looking for more nefarious things: potential hidden entries, security cameras, vulnerabilities. While the bird watcher is completely ignoring the homes, and using her ears, and scanning the tree tops, listening for nature’s singers.

The brain manages sensory input


Version specific virtual environments. The elegant solution to needing different Python versions for different projects.

Image for post
Image for post
Who’s a happy camper? Yes you are! Yes you are! Photo by Bob Walker on Unsplash

In order to install the package I required, I needed to switch to an older version of Python, but only for that project. Here is the simple solution: Version specific virtual environments.

As of writing this, I am using the latest version of Python on my machine: 3.8.5. It is usually fine to use the latest version. Except every now and then, something juicy requires an earlier version of Python for it to work, or in some cases, it won’t even install without that older version.

In this case, I’m talking about Kivy. It’s a super slick front end app development library for Python. It lets you develop mobile apps for your device completely in Python, and it’s really solid from what I can see (it even supports Material Design). But for…

Difficulty: Intermediate. Step-by-step instructions on how to connect an e-ink display to your Raspberry Pi using Python 3.

Image for post
Image for post
A popular use for e-paper is for ebooks. They have low energy requirements, and are good for eye health. Photo by bady abbas on Unsplash

Why E-ink (or E-paper)?

People like e-ink displays for the same reasons they like regular paper. It has a wide viewing angle, doesn’t beam rays of blinding light into your eye sockets, and doesn’t consume any electricity to keep a picture on screen. In fact, it only uses electricity when changing the display, meaning images can remain on screen for days on end without consuming any power at all. Since E-Paper is still a developing technology, manufacturers and researchers are continually raising the bar on resolutions, refresh-rates and color capabilities — and as a result, they are only gaining in popularity.

The most widely…

Rapid implementation of symmetric key encryption using the Fernet cipher, in Python’s cryptography library.

Image for post
Image for post
This is what happens when you forget to turn off your orientation lock. Photo by Markus Spiske on Unsplash

Symmetric key encryption is one of the simplest forms of message encryption where sender and recipient(s) utilize the exact same secret key to both encrypt and decrypt. The key is shared securely with all parties that want to read the ciphertext, and they decipher it by loading it into the algorithm that was used to encode it. Here, we’ll be using the AES128-bit Fernet cipher with Python’s cryptography library.

A “key” or a “secret” in cryptography is just a chain of bytes generated by the cipher…

Do you want to edit remote files locally? Try this easy, secure way to mount your remote drives with SSHFS.

Image for post
Image for post
This can be you. Just break all your light bulbs and break out the hoodie. Photo by Kevin Horvat on Unsplash

Situation: You’ve got your Pytorch or Tensorflow machine learning instructions on a GPU server, or hardware project connected to the GPIO pins on your Raspberry Pi, or a remote docker container on your secure air-gapped network, and you really want to dig in with an advanced IDE.

In some cases, you can run a remote development environment, but if you’re connected to a lightweight system, or you don’t have full access, you might find yourself faced with using what’s available on the remote system’s command line — usually nano or vim. …

How to set up a virtual environment: A super easy, lightweight solution to quickly and efficiently set up portable environments for your Python projects. Let’s begin.

Image for post
Image for post
Whoops, this is a real environment; not a virtual environment! Photo by ANGELA BENITO on Unsplash

What is a virtual environment for? Why do you need one? A virtual environment helps keep your project bundled together with a list of its dependencies. This makes it portable and easy for someone else to open your project and get it up and running without dozens of import errors. We’ll assume you know why you should have an environment but have you been digging around for a straightforward tutorial without all the fluff…

Get your layers to fit smoothly, the first time, every time. A beginner’s guide in becoming fluent in tensor and layer dimensions in PyTorch.

Image for post
Image for post
Get your layers to fit smoothly, the first time, every time with this invaluable knowledge. — Photo by Clark Van Der Beken on Unsplash


This article covers defining tensors, and properly initializing neural network layers in PyTorch, and more!


You might be asking: “How do I initialize my layer dimensions in PyTorch without getting yelled at?” Is it all just trial and error? No, really… What are they supposed to be? For starters, did you know that the first two required arguments of a torch.nn.Conv2d layer, and a torch.nn.Linear layer ask for completely different aspects of the exact same tensor data? If you didn’t know this, keep reading.

Example 1: Same, same, but different.

Constructing a convolution layer and linear layer are syntactically…

Jake Krajewski

Product designer, machine learning, music production

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