Challenges of getting into a ‘deep work’ state

Read Cal Newport’s book Deep Work for a refreshing take on the state of our minds in the 21st century. Also, the following video is a must watch if you think that social media could be impacting your attention span.

I’ve been noticing more and more lately how social media use has an effect on my attention span and I don’t like what I’m noticing.

I’m a freelance web developer in the evenings and I help businesses and organizations manage their web sites and other miscellaneous IT needs. I typically set aside 10 hours a week for freelance work so I need to make it count when I do sit down to work.

Starting to really notice a problem

Lately, during my freelance hours I’ve been noticing that when I come up across a problem that is not a quick and simple fix, my mind says “I’m outta here” and I have a reflex to jump to Twitter, reddit, or some other information junk food.

When I say reflex, I mean it in the most literal sense. An action that is performed as a response to a stimulus and without conscious thought. When a hard problem or situation that requires some deep thinking comes up, I can see this happening and it’s quite troubling.

I’ve always had love-hate relationships with social media (constantly quitting and rejoining). I think it’s time to cut the fat in some ways and remove all social media that isn’t being used as a means to serve some personal or professional goal (similar to how Cal Newport talks about it in Deep Work).

The information buffet line that social media serves up is rewiring us in a bad way. We run away from hard problems instead of coming at them head on. The sense of pleasure and accomplishment of sticking with a problem and seeing it through until it is solved has been replaced with the cheap, shallow gratification that social media offers us.

Social media companies want us to be consumers for life, constantly consuming the information on their platforms so they can aggregate data on us and sell it to advertisers. And we’re giving up one of our most valuable assets in the process: our time and attention.

I’ll end this rant by saying that I think the biggest challenge to entering a deep work state is social media. I struggle with my own social media usage and boundaries and I’m sure other people do as well.

The second biggest challenge is the sheer amount of notifications we all receive now from all of our devices. We all need to give ourselves some time to think and reflect once in a while.

I think as a society we need to take a look at what we’re doing as we could be heading down a path where significantly less people in the future will be capable of complex thought.

If you are a current social media user and have no problem controlling your attention span, kudos! Leave a comment, I’d love to hear how you do it.

Scene from the movie “Idiocracy” where many people are incapable of thinking things through.

Using utility classes (like Tachyons) on a Drupal 7 project

We all want to move quickly to create awesome interfaces right? Well, if you’re on Drupal 7, you know that it isn’t exactly the best system to quickly make great front end interfaces with.

I’ve recently found that using Panels/Panelizer and the Tachyons’ spacing classes, I can crank out interfaces very quickly. This is beautiful to me because before I would have to work locally to write/compile CSS, then push it up through dev and staging before I see a style change on production.

Further, every time I’d write a CSS change, it was typically a spacing issue (something like):

.component {
  padding-left: 2rem;
  margin-bottom: 4rem;

This is a big waste of time in my opinion because I’m essentially bloating my CSS with writing lots of the same spacing properties.

Instead of doing this, why not use a Tachyons-style approach and have a bunch of utility classes in your CSS that can be used to tweak spacing on the fly within Panels/Panelizer.

Panel pane configuration options after you click “Customize this page”

In fact, with a recent update of Panels, they’ve put a CSS button right on each pane so you don’t have to go into the styles menu to add them! This is perfect for quickly applying spacing classes.

There are a lot of other major benefits from using these small utility classes in production, but thought I’d share one use case that has saved me a lot of time!

Happy New Year

Happy New Year to all my family, friends, acquaintances, co-workers, people I have done business with (and anyone else not covered by those categories).

May your 2018 be filled with not only the completion of personal and professional goals, but with contentment with who you are and where you are in this life.

The most important design principle: Be inclusive

I’ve made some previous posts about design systems, which are all the rage in 2017. We are still working through the creation of one at my organization. One of the core parts of design systems are principles.

These principles ideally shape the future of design for an organization. The most important thing that I keep coming back to when thinking about how to create interfaces is to be inclusive.

Be inclusive

This is the most important design principle you can have as an organization. Convincing people that it is important can take a lot of work and often times you will be fighting an existing culture that says “If it works on my computer then its good.” A lot of people don’t stop to consider all the other ways people can be accessing their site/content.

What does that mean?

If your creative team is well versed in inclusive design principles, then it’s easy: Hand over design authority to your creative team. Are you reaching as many people as you can? If your superiors look at your creative team as tools that will do what they say and create what they want then it is incredibly difficult to design inclusively.

The problem with this approach is that often times the stakeholders who are “driving the bus” so to speak, are not well versed in performance, accessibility, and usability — all three of these areas are vital to being inclusive.


It’s nice that the site works on your high speed, wired internet connection, but how does it perform with spotty WiFi or on 3G speeds? Are you able to access the site in these situations?


I think this is what a lot of people think of when talking about being inclusive. Is your site designed and developed in a way that takes into account WCAG 2.0 (the de-facto standard for accessibility guidelines)? Complying with these guidelines helps everyone, not just those with disabilities. Microsoft has done a phenomenal job at explaining that disabilities are not personal health conditions, but rather mismatched human interactions.


Usability is closely related to performance and accessibility. If the site isn’t performant and accessible then it isn’t usable. On top of that, ensure your site is following agreed upon UI patterns to ensure a consistent experience across your site.

This is not a complete or exhaustive list by any means but it seems to me that keeping these three areas in mind will go a long way in ensuring that your site is inclusive.

Using your Android phone as a pet/security camera with IP Cam and Ivideon

My wife and I just got a new puppy and are crate training him. We’d love to know how he’s doing if we’re not there so I decided to look into some DIY pet-cam solutions. Using the IP webcam app for Android and Ivideon cloud streaming service, I was quickly able to get up and running with a perfect solution that allows me to check up on my pet when I’m not there.

What you’ll need

  • An Android device that can run IP webcam (free)
  • An Ivideon account (free)

Step 1: Create Ivideon account

Make an Ivideon account. Head over to and sign up. Follow the steps to create your account.

Step 2: Configure IP webcam

Download the IP webcam app to your phone. Open the app and find “Connection Settings” > Cloud streaming.

It should say “INACTIVE” at the beginning (see above). Tap this and then tap “Ivideon account” to connect to Ivideon.

After you connect to your Ivideon account, the app will present you with a message that it was successful. You may think that you’re done, but you’re not! There’s one more important step.

Step 4: Start server

The final step is to enable the server on the IP webcam app which will start broadcasting your stream to Ivideon. Scroll all the way to the bottom to find this.

Once your server has started, you can login to your Ivideon account and see your camera!

Protip: Turn off your screen to prevent hard core battery drain.

Step 5: Login to Ivideon and watch your stream!

Go to and select your camera. Now you can watch your stream!


Basic bash, node, and npm setup on Windows

I never thought this would be something I’d be writing about but it’s actually super exciting. This has been a major bane when trying to dev on my Windows machines. A lot of developer tools installation instructions walk you through some terminal commands, then the Windows people are all commenting at the bottom trying to figure out what additional steps need to be taken to make it work on Windows. This is crazy, and I’m glad Microsoft recognized this was a problem and included a bash prompt on Windows 10.

When I first installed it and launched it, I didn’t quite get it. I was in a ~ home directory but it wasn’t my Windows home directory which I kind of expected. I was in the home directory of this Ubuntu VM that has been booted to provide a bash prompt. I searched around and found that if you want to access your Windows home folder through the bash prompt, you’d have to:

cd /mnt/C/Users/<USER NAME>

Ok, now I can do an ll command there and see all my files, just as I’m used to when working with Linux and Macs. Pretty exciting!

Now, I don’t want to cd to my Windows home every time I login. To get around this, I edited my .bashrc file with an alias. The .bashrc file is in the home (~) folder of the Ubuntu VM.

alias home='cd /mnt/C/Users/jfitz/Workspace'

This sets an alias for home so anytime I want to go back to this directory I can just type “home”. It also executes so that when bash starts up I’m already in my Windows home directory.

Working with node and npm

I tried to install create-react-app via npm and got the following error.

npm ERR! Linux 3.4.0+
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "create-react-app"
npm ERR! node v7.4.0
npm ERR! npm  v4.0.5
npm ERR! path /usr/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!  { Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

Turns out, this is a permissions issue that can be easily rectified.

sudo chown -R $(whoami) ~/.npm
sudo chown -R $(whoami) /usr/lib/node_modules
sudo chown -R $(whoami) /usr/bin

The future

It would be absolutely bonkers if you could launch Windows apps from the bash terminal. So say I’m in my Workspace folder, I’d be able to open up Sublime text or PHP Storm from the bash terminal. I looked into this situation and there is an issue thread on Github. This comment is pretty promising:

The project definitely has its issues, but its very promising to see Microsoft trying to make this work. I think we’re another year or two off from having a super solid *nix development environment in Windows.

Thing one thing I don’t understand about Google Photos

Let me be clear: Google Photos is awesome and I love using it, but as a loyal Google user, I feel a little slighted. Here’s why.

When photos were managed by Google+, they counted against your storage. I accumulated a lot of photos during this time.

Now that Google Photos is out, they are offering FREE storage (that does NOT count against your storage quota) if the photo is under 16MP.

But wait a minute, all those previously uploaded photos are still counting against my storage, even though they were imported into Google Photos and are less than 16MP.

Not a huge deal, but a little disappointing. Anyone else have this experience?