‘How To Be a Moderately Successful Person’

Emer O’Toole:

I hope it will not seem conceited if I say that I am a moderately successful person. I have a job I like. I wrote a book that is doing quite well. I have managed to trick a human I love into believing that it is a good idea to live with me. I’m reasonably happy most of the time, and think anyone who says they never feel like crap is lying.

Things are going grand and, truth be told, being highly successful sounds stressful. So I’m taking it upon myself to share the closely guarded secrets of moderately successful people. Practise these and you too can muddle along just fine.

I’m fine with being moderately successful. Sounds kind of great.

Chris Coyier’s Productivity Advice

Chris Coyier:

“How do they do it all?” people unceasingly want to know. The answer is never satisfying. Nobody actually has any magic tricks. Nobody slows down time. They do work and work gets done, whether it’s marinating alligator heads or building websites. You’ll be surprised how much you will do in a day if you sit and do it.

So true. Just reminds me that when I haven’t been able to do something, it’s because I haven’t made it a priority. That truth can be very empowering.

What Is a Front End Developer?

Laurence Bradford:

At this point, after looking through multiple job descriptions, I am totally confused.

My goodness. There were so many times in this article that I wondered if I was even a front end dev. It seems that every company has their own requirements of what that job should be, and some are just completely insane. Laurence does a great job of breaking it down to the basics, and then covering where the front end developer should be expanding their knowledge.

Like Laurence, the area I need to improve is Javascript.

Publishing To Jekyll From iOS

I figured out how to publish to The Bold Report from iOS!

Disclaimer: This method will only work if you have an external build process. If you host your Jekyll site on Github pages, for example, you’re good to go. If you’d like to learn how to setup your site to deploy and build on something like Heroku, I wrote about that.


The workhorse here is actually Editorial. If like me, you’ve heard about this app, but didn’t pay much attention to it, here’s a great review. In short, its quite amazing.

Editorial Workflows

The power of Editorial workflows make this all possible. I found a blog post that links to this workflow. It’ll create a post with the right YAML Front Matter. Once youve installed the workflow from inside Editorial, you can make edits so that the Front Matter matches what you need for your site.

Next, we want to create the publishing workflow. Go to the upper right hand corner, tap on the wrench icon, then tap on the plus icon. Add a new action, and choose “Run Python Script.” Then, paste the script below. Pay attention to the comments, so you add the necessary information.

# Script from Josiah Wiebe (https://gist.github.com/josiahwiebe)
#coding: utf-8
import keychain
import console
import editor

import time
import re

import requests
import json
import base64

SITE_BRANCH = 'gh-pages' # either master or gh-pages

# Fill this out with your Github info.
COMMITTER = {'name': '$github_username', 'email': '$github_email'}

username = '$github_username'

# You can create a token specific for this workflow
# at https://github.com/settings/tokens
token = '$github_token'
repo = '$github_repo' # Just as it says on the tin. For me it was 'theboldreport.net'

######## No need to edit past this point
post_text = editor.get_text()

post_sections = post_text.split('---')
if len(post_sections) > 1:
  yaml_header = post_sections[1].splitlines()

  # Find the title in the YAML
  post_title = None
  date = None
  for line in yaml_header:
    if line[:6] == 'title:':
      post_title = line[6:].strip()
    elif line[:5] == 'date:':
      date = line[5:].strip()[:10]

  if post_title:
    safe_title = re.sub('[^a-zA-Z0-9\s]', '', post_title).replace(' ', '-')
    safe_title.replace('--', '-')
    if not date:
      date = time.strftime('%Y-%m-%d', time.gmtime())

    post_filename = '_posts/%s-%s.markdown' % (date, safe_title)

    URL = 'https://api.github.com/repos/%s/%s/contents/%s' % (username, repo, post_filename)

    header = {
      'Authorization': 'token %s' % token,
      'User-Agent': username
    }

    get_data = {
      'path': post_filename,
      'ref': SITE_BRANCH
    }

    response = requests.get(URL, headers=header, params=get_data)
    response_json = response.json()

    if response.status_code == 404:     # File doesn't exist, create it.
      data = {
        'path': post_filename,
        'content': base64.b64encode(post_text),
        'message': 'Blog Post - %s' % post_title,
        'branch': SITE_BRANCH,
        'committer': COMMITTER
      }

      response = requests.put(URL, headers=header, data=json.dumps(data))

      if response.status_code == 201:
        console.hud_alert("Blog post created successfully.", 'success', 2)
      else:
        console.alert("Commit failed.")
    elif response.status_code == 200:   # File exists, update it.
      data = {
        'path': post_filename,
        'content': base64.b64encode(post_text),
        'message': 'Blog Post - %s' % post_title,
        'branch': SITE_BRANCH,
        'committer': COMMITTER,
        'sha': response_json['sha']
      }

      response = requests.put(URL, headers=header, data=json.dumps(data))

      if response.status_code == 200:
        console.hud_alert("Blog post updated successfully.", 'success', 2)
      else:
        console.alert("Commit failed.")
    else:                        # Something went wrong!
      console.alert("There was a problem with the server.")

  else:
    console.alert("Couldn't find a title.\n\nAction Halted.")

else:
  console.alert("No YAML header found.\n\nAction Halted.")

And that’s it! Create a new post with the first workflow, and publish it with the second one. If you have any issues or have questions, I’m @ttimsmith on Twitter.

Happy blogging!


Btdubs… this post was written completely on my iPad, and I loved every minute of it.

Stephen Hackett’s Mac Wishlist

Stephen on wanting a Retina Display:

Despite the technical hurdles in driving such a display over a cable, I really hope 2016 is the year that Apple’s lonely Thunderbolt Display is updated with a Retina screen. Such a screen will require the DisplayPort 1.3 specification to be implemented with Thunderbolt 3, so this may still be a little way off, but I hope that by the time I need to replace my Mid 2015 MacBook Pro, I can buy a 5K display to use with it.

Boy would I love a Retina Thunderbolt Display. I mean, as it is, I love my Thunderbolt Displays, but just thinking of all those amazing extra pixels? Freaking heaven. Anyway, on to Stephen’s other great wish:

OS X has been around a long time. Over the course of its life, Apple’s been speeding up its release cycles. Starting several years ago, a new version of the operating system has dropped each fall, alongside iOS.

I’m all for that, but it comes with a cost. Any release cycle comes with a round of potential headaches for consumers, IT professionals and developers. If there was a way to add new features in mid-stream — like the company did with Photos.app in OS X Yosemite 10.10.3 — customers may be more at ease, and more likely to enjoy such improvements, as the barrier to entry would be lower.

I agree with this big time. The yearly cycle of Mac OS X has caused distrust in users to upgrade, and the root of that issue, being that OS X releases have become rampant with bugs.

Like Stephen, I don’t see this happening, but I think the usability benefits would be worth it.

Clean Up Your Metadata

Jeremy Keith on all the meta elements you need for nice previews on Twitter and Facebook:

Okay, I’ll attempt to dial down my sarcasm, but I find this wastage annoying. It adds unnecessary complexity, which in turn, I suspect, puts a lot of people off even trying to implement this stuff.

Jeremy writes about a solution that’s just so obvious, I found myself wondering why we didn’t think of this sooner.

Switching to Redcarpet

I’ve always hated the way Jekyll uses liquid tags to highlight code snippets. I found a way to do this, which until today, I never knew existed.

Redcarpet is the answer here. Here’s what I wanted to do:

```scss
.element {
  color: $red;
}
```

Basically like the way you do code snippets on Github. Now, you might be thinking, “Kramdown has Github-Flavored-Markdown support!” But, after trying to get it to work for an hour or so, I was left frustrated. The fenced code block was technically working, but no syntax highlighting.

So I changed a few lines of code:

# _config.yml
markdown: redcarpet
markdown_ext:  markdown,mkdown,mkdn,mkd,md

redcarpet:
  extensions: ["tables", "autolink", "strikethrough", "space_after_headers", "with_toc_data", "fenced_code_blocks", "no_intra_emphasis", "footnotes", "smart"]

Voilá! The fenced_code_blocks extension is the important one here, but personally, footnotes, and smart are crucial extensions for me too.1

That’s it! With a few lines of code, I improved my whole writing experience ten fold.


Update on November 15, 2016: I’ve switched back to Kramdown because it was way easier and removed a dependency.

  1. The footnotes extension lets me write these. And the smart extension frees me up from having to manually type the right quotes. If you don’t know what I mean by this, Jason Santa Maria wrote about it

For The Record: Beauty Is in the Imperfection

Paul Armstrong was in a business partnership back in 1998, which ended in him being sued. Soon after, he went through debt, the birth of his first baby, his parents divorcing, and his mother being diagnosed with dementia. He talks about life, marriage, kids, and how they’ve influenced his work.

Sponsored by:

  • Harvest - Simple online time tracking software. Use the coupon code TOWER and save 50% off your first month.
  • Listeners Like You! - Please consider supporting Tower on Patreon.