Updating Packages/Dependencies in a PHP Project: A Hacktoberfest Story

One of the repos I’m contributing Pull Requests to is Daniel Werner‘s PHP Quality Tools.

It’s been a few years since I worked with PHP and I’d just started to learn about this world of “Composer” but this shouldn’t be too difficult — the Issue is simply to confirm the latest version and update them in composer.json. This sounds so easy to me that I know something is going to come up and make this take 8 hours (at least) instead of 8 minutes max. Perfect topic for a blog post, right?

Using GitHub Actions

One of the things I’m excited about regarding Hacktoberfest this year is so many issues involve GitHub Actions — something I want to master and with a quickness. My first Google search for finding the latest versions brought up this article (and recent, too!): A GitHub workflow to check the compatibility of your PHP package with a range of dependency versions (Last updated: 2022-08-17)

Using Composer

I won’t use this method for this project (because I’m not on my usual laptop — it’s new and has nothing installed) but am definitely returning to this blog post later: Get the list of available updates for PHP dependencies using Composer by Arman Ahmadi published Mar 7, 2021.

Using Google

Simplest in my book for this task.

  • friendsofphp/php-cs-fixer moving from 3.1 to 3.11
  • phpmd/phpmd from 2.10 to 2.13
  • phpstan/phpstan from 0.12.99 to 1.8.8
  • squizlabs/php_codesniffer from 3.6 to 3.7.1

Today I Learned

I kept getting the error: “fatal: ‘branch’ is not a commit and a branch ‘updateDepend’ cannot be created from it“.

Solved it with:

git branch -m a-new-name

Design Patterns

Repository

Encapsulates operations performed on a database by decoupling the infrastructure used to access databases from the domain model layer. It separates the user from the database.

Also separates, clearly and in one direction, the dependency between the parts of the app that are user-facing from the parts that are database-facing.

Singleton

Restricts instantiation of a class to one, single instance.

Makes accessing that sole instance easy.

Controls/Restricts the number of instances.

Accesses a global variable.

Factory

In the Factory pattern, objects are created without exposing the logic to the client.

The client uses the same UI to create each new type of object that is loosely coupled with the class hierarchy.

Uses a static method that creates and returns instances, hiding the details of the class from the user.

The Http Life Cycle

File Under: Studying for Revature Comprehensive Exam covering first four weeks.

HTTP communication between a client (you or, specifically, the browser) and the server involves requests and responses.

Step 1: Request

A request begins with, in this example, a user typing in a URL or clicking a link.

Let’s examine the following URL or Uniform Resource Locator:

Each section — yes, there are sections — of what may look like gibberish has it’s own name and purpose.

In the example above, “http” or, specifically, “https” (the “s” is for “secure“) is the protocol the browser uses to communicate — to send and receive data.

HyperText Transfer Protocol

The host or Domain Name: Amazon.com which is the public-facing nickname for the IP address of a computer somewhere.

The domain name includes “.com” which is a Top-Level Domain. You also see:

.org

.net

.io

.me

and country codes including:

.ru

..es

.ie

.au

you may then see a slash “/” followed by other words and slashes — the resource path — which usually represent folders on that server such as:

/about/leadership/vision

Everything after the question mark “?” is a query string containing one or more keys and values such as name=Autumn, city=Detroit, and so on.

This is part of what’s known as an “HTTP request”.

3 Parts of an HTTP request:

The Start Line made up of a method (a verb such as POST, PUT, GET, DELETE) and target — the database or other resource containing data the user/client wants.

The Body or payload — especially for PUT and POST.

The Header containing information about the request itself.

Step 1b: Local Processing

The client computer’s browser looks through it’s history or cache of recent URLs, the OS cache, your router’s cache, and your DNS cache.

I can feel your panic setting in already. You didn’t clear the porn from all of them, did you?

That request then goes to your local (but outside your house) DNS Server taking your IP address with it the person/computer you’re requesting information from knows where to send the response.

It travels through other servers until it finds the authoritative nameserver.

When the request finds it’s destination, it uses TCP or Transport Layer Protocol and a “three-way handshake” to send itself all the way.

The destination computer processes the request — that means just processing or reading and parsing the request itself — looks for what you want and, if it has what you want AND you’re allowed to have it, sends an HTTP response.

3 Parts of an HTTP response:

A Start Line containing the status code. You’ve likely seen 404 a lot. More below.

The Header.

The Body.

There are different types or categories of HTTP response Status Code:

1xx – informational

2xx – Success

3xx – Redirectional … you may have noticed some webpages stating “if you’re not redirected automatically …” Many times you won’t see anything at all as you’re forwarded to a new address.

4xx – Client-Side Error. Why is this client side? Because whomever sent you this status assumes you typed it incorrectly.

5xx – Server-Side Error

“The only part of that that made any sense was three-way.” – Sensei Johnny Lawrence

Troubleshooting SQL Import Using PHPmyAdmin

You might think downloading and uploading database files would be as easy as any other files. Nope. Apparently this happens a lot — and not just to me:

Importing a saved SQL archive into a new site using phpMyAdmin

Like countless before me, I did much googling and as you might have spotted even without the red circle, that maximum file size is 105MB. Mine — compressed — was 315 MB. So the first thing we’ll do is change this and a few other PHP parameters.

Books of the Year 2020

There aren’t any teach books really this year. You can scroll down to read the reasons if you like but I didn’t want to bury the books part of this post. Links to previous years (some books are on multiple lists) are also below.

Having said all of that … [urgent + important]

Employers are increasingly looking for people who have both technical skills AND soft skills. In many cases, I would say it is easier to teach tech skills than soft skills so these books for 2020 and beyond might just be more important than how you learn/gain your coding technique and which languages you know.

The more I learn about myself and these soft/interpersonal/social skills, the more I realize how little I know about myself and these … languages.

Resources Influencing my 2020 and Probably 2021

  • Crucial Conversations by Al Switzler, Joseph Grenny, and Ron McMillan
    This is a life-changer. A game-changer every time I read it. This might be my #1 Book of the Year.
  • Strengths Finder 2.0 by Tom Rath. This one also comes with an assessment (see Emotional Intelligence below) and I recommend spending the extra few bucks to get the 34-strengths exam and report rather than just the top six. I was blessed with a friend of my boss being a certified Strengths Finder coach and that was also mind-blowingly awesome.
  • 2 books by Felicia Day
    • Embrace Your Weird: Face Your Fears and Unleash Creativity
    • You’re Never Weird On the Internet (Almost)
  • Master Class – In particular, Steve Martin Teaches Comedy and Penn & Teller Teach Magic in particular. If you think neither of those apply to interpersonal skills and business acumen, you need to think again.
    Master Class is both a web site and a streaming app. I highly recommend the above classes both are filled with valuable and wonderful concepts applicable to anyone in any career or position.
    When I signed up, they gave two accounts for free so you get a license for the friend, family, or colleague of your choice.
  • Emotional Intelligence by Travis Bradberry & Jean Greaves. Do this in three steps: Buy the book, take the assessment (with a code that comes with the book), read the entire report, and read the book a small chunk at a time, really working on what your report (based on the assessment results) says to work on.

I also took a PI assessment and a DiSC assessment (the latter came with three workshops) and I recommend those as well. I recommend anything that can help you understand yourself, others, and relationships better.

Why No Coding?

I haven’t done any coding in 2020. I mean, I did a little but nothing that came to anything. Here is my GitHub timeline as of September 26, 2019.

GitHub contribution timeline. Most squares are various shades of green until three weeks ago.

Here it is as of today, right now:

GitHub timeline with very few contributions.

I’ve found a direct correlation to whether or not I’m taking anti-depressants. The images above represent without (taking) and with (taking), respectively. Of course, it could also be that I now take anti-depressants and anti-anxiety meds because of circumstances that caused the above total absence of motivation. The need for meds are probably another symptom, not the cause.

It isn’t just that I didn’t push anything to GitHub. I could barely get started on anything. I paid in advance for two years of server storage but haven’t done anything with it.

Also, I got sort of promoted, too (for real, not like the title change and raise the year before which was called a “promotion” but really wasn’t), which took away a lot of the time I used to have.

Previous Books of the Year

  • 2019 – It looks like when the coding stopped, I also didn’t finish this post
  • 2018
  • 2017
  • 2016
  • 2015

Custom Ringtones in Android on a Galaxy Phone

This isn’t really a “hack” but it’s one of the little things in life that make it so much happier. It took me forever to figure out how to do this on my Galaxy s8. It was easy and intuitive on my Droid X years ago and I didn’t even need to search for instructions.

This doesn’t involve any code but I’m sure you’ll be glad you found the post.

Get the desired song on your phone

You can just drag files from your computer into your phone.

Mac OS X

02

Windows 10

02_

Use an Audio Player

You may be able to download them using an audio player like Amazon Music.

02a
Swipe up on the Home screen and find the app.

02b
In my case, I tap Amazon Music.

02c
In Amazon Music, I filter by Offline Music and Artists to shorten the list.

02d-Nikki.png
Find the desired song, click the three dots menu thingy (for the song) to open a list of options.

02d-Ex.png
 Tap Download

 

Open the desired contact

Find your Contacts in your phone.

03
Contacts in Android on my Galaxy s8

Tap Contacts to open it.

04
Scroll to the desired contact.

My wife hates me posting pix of her online, so I just found a pic of some random girl who looks just like her to respect her privacy.

05-Nikki
Tap the Edit button in the bottom center (that I forgot to circle — sorry).

06-Nikki

In Edit mode (above), scroll down until you see View More (below).

07-Nikki

Almost at the very bottom (see below), tap Ringtone.

08-Nikki
“Default ringtone” is the current ringtone.

This opens a list of available ringtones and indicates the current ringtone (again, “Default ringtone” in this case).

09
Tap the Plus sign in the upper-right that I forgot to circle. Again. I’m sorry. Again. 

Note: The instructions I found that were closest to reality still had a couple things that didn’t match my device. Those instructions said, instead of plus sign, I should tap “Allow Storage permission > ALLOW” — all that to say your experience may vary.

In my experience, this opens a list of every music file on my phone regardless of it’s origin or location.

10
Default seems to always be Tracks (above), so I tap Artists (below) to shorten the list. You may also try Albums if you have a lot of albums containing lots of “various artists.”

11a
Scroll to the desired artist (or album).

11b
Tap The Brady Bunch or whomever.

This opens a list of their albums or tracks.

12-Nikki
Tap the song your wife is always singing. Or whatever. Maybe it’s your psychotic ex and you choose “Chop, Chop, Chop” by Alice Cooper as pictured in a previous screenshot.

If memory serves, you’ll return to your list of ringtones with your newly chosen ringtone selected.

13-Chuck

Tap the Back button and return to the Contact‘s Details where you’ll also see your newly chosen Ringtone displayed.

14-Chuck

Click Save in the bottom right (above), maybe scroll up if needed, and see that Contact‘s ringtone listed on their main Details page.

15-Nikki

2019 Courses of the Year for Teaching Yourself Coding

I’ve decided to separate my Books of the Year posts because I’d started to added other resources and those lists grew over time as well. So, in addition to 2019 Books of the Year for Teaching Yourself Coding, I also have this post and 2019 Tutorials of the Year for Teaching Yourself Coding.

These courses aren’t just for eager young coders, developers, and programmers but — since I am full-stack all the way and create my own graphics and videos — motion graphics artists and video editors.

Free Code Camp

Udacity

Udemy

Lynda.com (now known as LinkedIn Learning or something)

  • Learning Cinema 4D R20 by Andy Needham

Tutorials of the Year

I’ve decided to separate my Books of the Year posts because I’d started to added other resources and those lists grew over time as well. So, in addition to 2019 Books of the Year for Teaching Yourself Coding, I also have this post and 2019 Courses of the Year for Teaching Yourself Coding.

These tutorials aren’t just for eager young coders, developers, and programmers but — since I am full-stack all the way from concept to completion, so I create my own graphics and videos — motion graphics artists and video editors.

  • YouTube

2019 Books of the Year for Teaching Yourself Programming

I’ve decided to split up my Books of the Year posts because I’d started to added other resources as well and those lists grew over time as well. So, in addition to this post, I’ve also written 2019 Courses of the Year for Teaching Yourself Coding, and 2019 Tutorials of the Year for Teaching Yourself Coding.

These books aren’t just for eager young coders, developers, and programmers but — since I am full-stack all the way from concept to completion, so I create my own graphics and videos — motion graphics artists and video editors.

  • Rebel Without A Crew by Robert Rodriguez
  • Interactive Data Visualizations Murray 2nd Edition
  • D3 Tips and Tricks
  • Duckett Javascript and jQuery

Guilty Pleasure Books of the Year

  • Me, Inc. by Gene Simmons
  • You Are A Badass by
  • Magic of Witchcraft by
  • The Magic of Not Giving A Fuck by
  • The Secret by

2018 Books of the Year

  • Data Visualization with Python and Javascript: Scrape, Clean, Explore & Transform Your Data by Kyran Dale
  • Web Scraping with Python: Collecting More Data from the Modern Web 2nd Edition by Ryan E. Mitchell
    2nd edition bigger and even better than the first and the first one was really freaking awesome!
  • LPIC-1 Linux Professional Institute Certification Study Guide: Exam 101-400 and Exam 102-400 by Christine Bresnahan
    How I wish I’d read this book before many other Linux books!
  • Interactive Data Visualization for the Web: An Introduction to Designing with D3
    2nd Edition by Scott Murray
    The more good D3 resources I find, the more mixed my feelings are about this book but it is so packed with awesome stuff I feel morally obligated to keep it on the list.
  • Data Driven Documents: D3.JS Tips and Tricks v4.x by Malcolm Maclean
    Perhaps the best part about this book is he wrote it as he learned so he is sure to keep the learning-person/student in mind as he explains things and offers insights (such as potential mistakes and confusing concepts).
  • Building Progressive Web Apps: Bringing the Power of Native to the Browser by Tal Ater
    I grabbed it at the library because the library is free so there would be no consequences if my low expectations were met. I recommend this book by itself and as a pre-requisite to Archibald’s course below. 
  • Data Journalism Handbook 2 (just released!) from the European Journalism Centre and Google News Initiative

Not Books But Amazing Resources I Was Elbow Deep In Throughout the Year

  • Any video, course, or documentation by Jake Archibald including but not limited to:
  • Udacity — not only did I earn a Mobile Web Specialist nanodegree I actually learned a ton! I won’t link to it, however, because they have autoplay media on the page and I can’t condone or support that.
  • FreeCodeCamp — resumed my coursework there after finishing the above nanodegree and it is better than ever! In particular …
    • Their Data Visualization content rocks my world — I’m not taking anything away from Murray‘s book but FCC certainly explains the foundations much more clearly and concisely so I recommend going through it first even if you don’t move on the projects phase.

RoxorRescue for Disaster Search & Rescue

Graduating from the Mobile Web Specialist nanodegree program gave me the confidence to enter my first hackathon. The IBM Call for Code hackathon started at least two months before I heard about it so I’m only going to get a few evenings and weekend chunks of time in the now two weeks before the deadline but … I’m loving the project I’m working on.

Idea #1 would have required months of research and whatnot but it’s possible I could finish this (to some extent) in time to submit it.

RoxorRescue is an offline-first progressive web app using PouchDB and CouchDB. Submissions have to use IBM Cloud tools so I’ll be using Cloudant (for the CouchDB bit) among other products.

Here’s a concept for the GUI I made in Photoshop along with the current state of affairs.

Woo.png

It’s meant to be used on a mobile device and when I tested it there I was elated that the photo bit finally worked but …

notWoo.jpg

… a couple things stuck out … not the least of which was the inaccessible “Take Photo” button.

Post-hackathon, I’ll be welcoming any and all contributors during Hacktoberfest and beyond.

2017 Books of the Year

These are the books that were indispensable this year as I continued learning and developing the apps that constitute my portfolio.

  • CentOS 7 Linux Server Cookbook by Oliver Pelz and Jonathan Hobson
  • Mastering CentOS 7 Linux Server by Mohamed Alibi
  • Building Android Apps with HTML, CSS, and JavaScript by Jonathan Stark
  • Learn HTML5 and JavaScript for iOS: Web Standards-based Apps for iPhone, iPad, and iPod touch by Scott Preston
  • Learning PHP, MySQL, JavaScript, CSS & HTML5 by Robin Nixon
  • Plug-In PHP: 100 Power Solutions by Robin Nixon

Honorable Mention (awesome books I used a lot but weren’t as indispensable)

  • The Linux Command Line by William E. Shotts, Jr. from the ever-awesome No Starch Press

Were Briefly Under Consideration (Great books but not used a lot)

  • Eloquent JavaScript by Marijn Haverbeke
  • In the Eye of the SCORM by Claude Ostyn
  • Data Driven Documents: D3.js Tips and Tricks by Malcolm Maclean

Sprint at the End Reappearance from Last Year

  • Interactive Data Visualization for the Web by Scott Murray

Once again, I checked out this book and renewed it as many times as I could. My boss gave me a Barnes & Noble gift card for Christmas and I just used it to order my very own copy of the 2nd edition which is twice as thick!

Not books, but dang they helped me a TON 

2016 Books of the Year

As with last year, these aren’t necessarily new books released in 2016. These are the books I discovered that most contributed to my learning and advancement in 2016. New books face a disadvantage in their hopes to be so honored — I prefer free books or library books. Having said that, free online books are at a disadvantage because I don’t own a tablet (and, if I did, it would be WiFi only limiting where I could read these online books) and my screen-space is taken up with the apps I use to do my coding and testing (books belong on my literal, not my pixel, desktop). I do have a Kindle eReader, but free eBooks are at a disadvantage because they almost always suck.

MY BIG, FAT, RAGE QUESTION: What ever happened to “Print-Friendly”? It would be so great if articles and books I found could be printed in an easily-read manner that didn’t waste paper. Is there a snippet of code that consciously, purposely prints a final page with just a couple lines on it? That’s not so bad when it’s the page’s footer — I can opt not to print (or throw away) that one — but, when it’s the last half of the last paragraph, that really sucks. Even if I don’t need that last paragraph, the OCD in me rises up and I must still print and keep it.

See Also: 2015 Books of the Year

There aren’t many. The number of sites I’d recommend for learning grew much more this year than my list of books. For the most part, these are in no particular order.

Learning PHP, MySQL, JavaScript, CSS & HTML5 by Robin Nixon

Best thing about this is Nixon doesn’t isolate writing functions, or forms, or databases … you learn like you’d want to — in context, in practical, real-world ways. Nixon is also a very good writer. O’Reilly means you won’t get frustrated by poor editing, poor proofing, or crappy code and/or directions that don’t work. Picked up an old edition at the library just based on the PHP/MySQL content and kept it as long as I could. I still need to go back and get it again. It’s frequently checked out and often has holds. New it’s almost $40. Used it’s under $10.

The Modern Web: Multi-Device Web Development with HTML5, CSS3, and JavaScript by Peter Gasston

If, like me, you want to know what stuff is and does and why — as opposed to what code to write for X to work so you can finish the project — Modern Web is delightful. Terms, technologies, and tools I’d scanned or glossed over and those I’d never heard of are explained in understandable (1 point) and interesting (2 points!) ways.

From my March 30 post: “You should probably already be in love with No Starch Press. I kept passing by The Modern Web by Peter Gasston but it might just be my new favorite book from them. I was hooked instantly once I gave it a chance and although I’m only on page 21, I’ve been educated and enlightened. Not just informative but entertaining and stimulating. Yay for my library having a copy. I would never consider picking up a book on CSS but, based on this experience, I’m going to check out his Book of CSS3.”

My entire post from April 15: “I stopped reading The Modern Web by Peter Gasston for a bit because I thought, ‘Okay, the rest won’t be this good … it’s slowing down’ but picked it back up on a whim and then, wham, it started being so great again. I can’t believe how awesome this book is. I wish I’d found it months ago.”

Learn HTML5 and JavaScript for iOS by Scott Preston

I thought this would be creating mobile apps using HTML5 and JavaScript. I hoped so. Isn’t learning all this JavaScript (including libraries and frameworks), PHP, MySQL, and Python enough? I have to learn Java and Swift, too? Once I realized this book covered “merely” making mobile-friendly (read: screen-size) web apps, I was disappointed. But, like Modern Web (though not to that extent), I was pleasantly surprised. Preston explained things in enlightening ways that actually made me angry at the nameless clowns who wrote the crap I’d read on those topics before. Preston inspired many of those “Why didn’t they just say that?!” moments about which I’ve ranted many times before. And, there are enough things I didn’t know (and things I didn’t know about things I did) that I’m working through the books samples and exercises. Preston is a good author … who should punch his proofreader and editor in the face (this specifically applies to the 2012 edition I got from the library).

Plug-In PHP: 100 Power Solutions by Robin Nixon

Currently ripping through this. I thought the author’s name sounded familiar but didn’t make the connection until this morning. If I’d noticed the word “Plug-In” in the title, I probably wouldn’t have checked out this book. The good news, as I see it, is I would actually have called the book 100 Awesome Task-Based PHP Snippets Explained In-Depth and Extremely Well. I love that Nixon is a true hacker-geek who proudly admits to using PHP to download and store all of Wikipedia locally in case he wants to look something up offline. I’m quite fond of authors who take the time to say, “If X doesn’t work, it’s either because you screwed up Y or there’s a Z-factor, in which case you should …”

Learn Python the Hard Way by Zed A. Shaw

Hard, PDF download, or read free online. The introduction is called, “The Hard Way Is Easier” and I agree. Shaw is also very strict about adhering to the hard way. He frequently asks, “Something doesn’t work?” followed by “Did you use something I told you not to or do it in a way I didn’t tell you?” then with “I told you so. Now go back and do it how I told you.” I love it. Obviously, this isn’t one of those “Learn language X using … some thing you’ll probably never really use and, even if you did, this method won’t help you learn language X in and of itself” resources. He’s also got Hard Way books on Ruby, C, SQL, JavaScript, and … ooh … just noticed Regex which I desperately want and need.

Honorable Mention (Holdovers from Last Year)

  • JavaScript and jQuery: Interactive Front-End Web Development by Jon Duckett

2015 Books of the Year

There are so many worthless eBooks (real eBooks as well as PDFs) out there. There are many books overflowing with facts and knowledge that I didn’t find quite useful (for me). Several Data Science books from which I learned a lot but couldn’t yet put that knowledge to good use. They pointed me in good directions but, there’s just such a wealth of really great Data Science resources out there it’s almost silly to just pick one or two.

These are the books that had a significant, positive impact on my learning and productivity this year.

  • JavaScript & jQuery; Interactive Front-End Web Development by Jon Duckett—see my glowing, gushy, and concise review. Most beautiful book since 1997’s Web Sites That Work.
  • Interactive Data Visualization for the Web by Scott Murray has been an almost constant companion the last few months.
  • Free Software Free Society is a collection of essays by Richard M. Stallman. I constantly see potential employers say they look at potential employees’ participation in open source projects. I didn’t really get that until I read this book. Both of Stallman’s books are available all over the web–free, of course.
  • 10 Keys to Great Landing Pages from iThemes.com was surprisingly useful in getting me to focus and, if for no other reason, it introduced me to Dieter Ram‘s 10 Principles for Good Design.
  • The Ghost in the Wires by Kevin Mitnick is just plain inspiring.
  • ENIAC: The Triumphs and Tragedies of the World’s First Computer by Scott McCartney was educational and inspiring.

Update: Honorable Mention

Web Sites That Work by Roger Black has never ceased to influence my thinking and my work. People who say it is outdated are not just incorrect but wrong. Here’s a condensed version but the entire, beautiful 237-page book is only 1¢ on Amazon.

Another Update: Last Minute Worthy Addition

As I said, tons of Data Science books, articles, sites … but only the one DataViz book (Murray’s) until I’d finished writing this post and started reading Data Visualization with Javascript by Stephen A. Thomas. I picked it up from the library about a week ago but didn’t start it in earnest until Jan 30. It’s been in my hot little hands almost constantly since then. Like Murray and Duckett’s books, I’m going to renew it until the library police raid my home.

I want to say it’s not as beautiful as Duckett’s or Black’s books (but a close second) but that’s not really accurate. Those books are, visually, like Aphrodite–a goddess. Thomas’ book is like Helen–a mere mortal, but the most beautiful of mere mortals.

What makes the difference? The Aphrodite books use paper of a far heavier weight and almost every page bleeds full-page background color. Thomas’ Helen book is much lighter paper and, while the book is in finely-detailed, wonderfully-used, lovingly-formatted full-color, all the backgrounds are white. And it’s worth mentioning that the illustrations in Thomas’ book are far superior to those in Murray’s book.

And … Oh. My. Gosh. Just look at the ridiculously elegant design of his website. I enjoy just sitting and staring at it like I’m at a museum. I haven’t even clicked anything yet. They don’t like it when you touch the paintings.

What To Do When You Don’t Fit In

Written a couple weeks ago … July 25, I think. I couldn’t stop editing it.

If TL;DR … The Moral of the Story

Sometimes you don’t fit in and it’s not a bad thing but you should leave. Sometimes, you don’t fit in and it’s a good thing so you should leave.

Sometimes you don’t fit it in and that’s a good thing so you should stay. You don’t fit in, but if you resist taking the easy way out and you lift them up you’re a good fit.

If you want to read, BEGIN HERE

The other day, I sat in my boss’ office while he and a co-worker repeatedly told me, among other things, how unprofessional and uncooperative I was. Finally, my boss just stopped and, asking me to be honest, said, “Do you really think you’re a good fit here?”

His implication that I don’t fit in is certainly accurate and I’ve been going out of my mind trying to figure out the reason.

INSERT: Picture of me looking lovingly into a mirror

If you ask me, I’m ridiculously brilliant, obscenely talented, hard-working, charismatic, and not to mention really, really good-looking. All things being equal, I should be a total rock star. Unfortunately, my rock star status has been more Tony Martin than Ozzy Osbourne.

Looking back over the last four months and, more importantly, over the last 25 years, I was able to identify what I was doing when I succeeded and what I was doing when I failed. I’ve had more than my fair share of both. It all has to do with how I responded when I didn’t fit in.

Whether you’re late in your career, just starting a career, retired, or it will be years until your first job, I think and I hope these lessons will work for you.

dear-abby

This isn’t a new issue for me—when I was in 8th grade, my well-meaning Mom bought me How to Be Popular by “Dear” Abby Philips-Van Buren—. You might think, “But I’m in 8th grade, too—I don’t have any control over anything!” That’s incorrect. If what I’ve said resonates with you, I’m quite confident you’ll think of something—just don’t let anyone tell you it won’t work.

This riveting graph represents my career trajectory—the ups and downs—from 1990 until now, mid-2015. The line is starting to head upward again, but the star represents my current struggle with not fitting in.

career_01b

In the interest of full disclosure, the lines weren’t quite that smooth. That first ten years would really look something like this.

career_02a

Before you get too bored, I’d like to emphasize to young and old the difference between what I consider success and how much money I was making—just in case you stop reading before I get to my main point.

career_02b

Notice how my income continued to rise even as my happiness, fulfillment, stimulation, pride in my work, growth, etc. rapidly plummeted to levels far below where I was before I even started my career. Also note that my income rose and fell rapidly and repeatedly while I gained momentum in the beginning. At one point, I was even losing money but I can’t emphasize enough how worth it those times were.

And, lastly, note that my salary took a dive when the red success line started trending upward with the optimism and potential of my new gig. Again, more than worth it.

So, how have I dealt with not fitting in? Not being a good fit? Usually, I left but this post is about two times that I stayed and how I handled it.

career_02d

For the first twenty years, every time I didn’t fit in, every time a job no longer had anything to offer me, every time, every time we didn’t have the same values or standards, every time I hit a ceiling, I left. I went on to bigger and better things. Sometimes that was my decision and sometimes it wasn’t. I wrestle with whether or not I have regrets but, regardless, it was always time to leave and the trajectory always continued upward. Every time I didn’t fit, I left—except twice.

career_03

This part is really important. There are two times I stayed where I didn’t fit in and with drastically different results. I handled those two situations very, very differently. In the first case, the result was extremely positive. In the second, my career took a fatal nosedive.

As long as I mentioned money, it’s probably also beneficial to look at my marriage.

career_02c

I got married about the same time my career was skyrocketing. Since we were both perfect, the marriage was perfect and we never fought or had any problems or fights which is why the line is so straight. Just in case you’re naïve or stupid enough to believe that line of bullshit, I’m joking. What isn’t a joke is that, based on my strategy at that second crossroads, my personal and professional life spiraled downward together. Eventually I lost my long-suffering wife as well as my miserable job. All the while, my income rose. My salary and hourly rate at its peak might not seem like much to some of you but it was a heck of a lot to me.

So, to the point—what did I do right and wrong that affected my career so severely in each case?

In each case, I did not fit in. It could be said I wasn’t a good fit. For the record, I consider those two different things. At present, I do not fit in with my team or department but it’s quite possible I am a good fit. You’ll see what I mean.

What I Did Wrong (the second time):

In 2009, a talented and brilliant “chef” (Instructional Designer) we’ll call Jack moved from Detroit, a city known around the world as beyond rich in culinary delights, to a town where the only “restaurant” was “McDonalds” (or, McEducation or Fast Food eLearning). To be clear, there is nothing wrong with McDonald’s. They only want to make junk food and for decades that business plan worked for them because their customers only want to buy junk food. The real McDonald’s boasted on their signs they’d sold “billions and billions” of junk food things. Much like my former employer, the real-life counterpart to this metaphorical McDonald’s, boasted they were the “world leader” in what they do. Giving customers what they want and growing rich doing it is fine. But if making and selling junk food isn’t your thing, you shouldn’t be there. You’re not going to change them—they’re achieving their goals, why would they change? You’ll only make yourself miserable. Or worse. Believe me, it can be much worse.

I couldn’t change them and trying just made the job go from totally boring to totally sucking. I decided it was time for me to be “responsible.” To just do my time and take my annual raises. The pay was good and the benefits were great. Who did I think I was anyway? I tried to take everyone’s advice and go with the flow. Go along, get along and so forth. Things got worse. My ideas, standards, and expectations got me labeled a troublemaker. People hired long after me got promoted above me. I was told in no uncertain terms a promotion for me just wasn’t going to happen.

I kept trying to have a better attitude and so on but when you clean stables for a living, no amount of positive thinking is going to change horse manure into a Nobel prize. Unless you can take pride in how high you can shovel a pile of horse manure, you need to move on. I didn’t move on and, eventually, my personal and professional life imploded in a black hole of, well, major suckage.

What I Did Right (the first time):

My beloved school Hillsdale College stopped taking the GI Bill while I was there because Congress voted to place conditions on the schools accepting it and Hillsdale was having none of that. I began my senior year at a brand new school among brand new people with whom I did not fit. Regarding this new student body in general, there were a few factors contributing to my misfit status but when it came to the student newspaper, it boiled down to the fact that the staff had been a team for four years. You could call it a clique but, honestly, that would be unfair–they had a legitimate history and a bond.

Despite years of experience as a student and professional writer including scholarships and internships, I could not an assignment (or, really, a column because, you know, I’m so awesome) I felt was worth writing. Again, there was nothing wrong with the leadership or management of the student paper–they’d earned the right to make decisions about content and style.

Readers consistently complained about the lack of sports coverage and I wanted to round out my portfolio and have experience covering sports for more opportunities to make money. When I asked if I could cover sports, I was told no, they had a sports editor and that was his job even if he was always too busy to write anything.

I decided to start a little “paper” called The Sports Page using the Mac and printer in the computer lab. I made appointments with coaches saying, “Hi, I’m the editor of The Sports Page …” (see what I did there?) I gathered schedules for all the teams, attended games, interviewed players, and took pictures.

While I assembled all of this in the lab, the editor of the “real” school paper stopped and stood behind me. He asked in a very perplexed sounding voice, “Is that … for us?”

“You’re not an asshole, Mark [Zuckerberg]. You’re just trying so hard to be.” – The Social Network

I said no and told him he already had a sports editor and it wasn’t me (I am not always a gentleman, as graceful, or as classy as I should be). He asked if they could use the content since, you know, I’d already written it and I did, in fact, work for the student paper.

I proposed that either I released The Sports Page with comprehensive coverage of all student athletics the same day as his next issue of the official school paper (with no sports coverage) which would really infuriate the already irritated student sports fans … or … I’m the new Sports Editor and I bring all my current material as well as the work ethic and passion that caused it.

As much of a prick as I was being at the moment, stealing a job or shaming them into making me Sports Editor wasn’t my original intent. My intent was to leave because I felt they were keeping or bringing me down. Instead, I stayed and learned something invaluable because, as a result, I lifted them up. Or, rather, I helped the paper lift itself up by being a good influence and making a significant contribution or maybe I unintentionally led by example and I’m just lucky they decided to follow. Regardless, it worked out.

I ended up starting the school’s chapter of the Society of Collegiate Journalists and was elected President by these people that I’d felt really hated me. Don’t fall into the dangerous trap of thinking these people with whom you don’t fit are the enemy.

That’s not always possible. At McLearning, it wasn’t possible. Sometimes you just have to leave. It doesn’t necessarily mean the place you left sucks or, especially if it wasn’t your decision to leave, that you suck.

The Moral of the Story

Sometimes you don’t fit in and it’s not a bad thing but you should leave. Sometimes, you don’t fit in and it’s a good thing so you should leave.

Sometimes you don’t fit it in and that’s a good thing so you should stay. You don’t fit in, but if you resist taking the easy way out and you lift them up you’re a good fit.