Building a Patatap Clone using Paper.js and Howler.js

Screenshot via dargacode.com. Taking a screenshot of this project is difficult.

Finished a new project as part of the Udemy course The Web Developer Bootcamp by Colt Steele. Project is in Javascript with Paper.js for producing shapes and Howler.js for audio playback. The Neural-Synchrony library is for the sound clips.

Project code available on GitHub and you can play around with the site live. Click on any alphabetic key (A-Z) on your keyboard to use the project. Be sure to enable sound!

Building a ToDo List App

screenshot of the project. click to load program

Continuing with my Udemy course on learning web development, the next project I completed is a ToDo List app. This project is with jQuery in addition to JavaScript, CSS, and HTML. Click the image at the top of the post to view the project live on GitHub pages and click here to load the GitHub project files.

Google should just pay students to learn at coding bootcamps

The Googleplex courtesy of rjshade on Flickr. via a Creative Commons license.

Google recently committed to give $1 billion to nonprofits to help train American workers for high tech jobs. Given the glut of of tech coding bootcamps, wouldn’t it be easier for Google to just give the money directly to the coder bootcamps? Heck, give them money directly to the students themselves!

There’s many different bootcamps (of obviously varying quality), but let’s assume that the top few are as good at teaching coding as they say they are. Instead of a student paying $18,000 for three months at Hack Reactor, companies like Google should just give the money directly to the students as a grant for tuition. Many of these bootcamp already have rigorous admissions standards, so Google wouldn’t have to determine if the students are worthy of the grant. Google could even provide a housing stipend for students to relocate to San Francisco for the program for three months. Throw in another $10-15k for housing + food on top of it.

Basic Income is already popular in the startup community and Google could consider this an experiment in if Basic Income works. Would students with their tuition paid for them be more motivated to learn or less? Would they be more likely to slack off since they don’t have any skin in the game or would they feel obligated to work harder to prove they deserve the grant? Students would still have to work hard to graduate from the program and get a job after.

It could also help determine if getting into a huge amount of debt for four years of college is not needed for many students. If students of the future are paid to learn in a shorter course like Hack Reactor, would they learn more and be more productive than going the traditional college route. Obviously, nothing beats a four year CS degree, but it’s not the best route for every student.

The tech industry needs more workers and companies like Google, Apple, Facebook, Amazon, and Microsoft are doing well and sitting on piles of cash. Why not put it back into the community for people that want to learn the skills needed to work in the industry? Even if they take the grant money and take a job at a different company, they’re still contributing to the industry. Plus, they may just use their new skills to found their own startup which later gets acquired by Google. If this were to become successful enough  it could be rolled out across to many other cities, particularly non-tech hubs in cities that have been hard-hit by economic downturn.

[Edit: After submitting to Hacker News, I received the excellent comment from user ‘taylodl’ included below]:

“Why would Google, Apple, Facebook, Amazon, and Microsoft, all of whom can command the best programming talent in the world, want to invest in a coding bootcamp? Their interests would be better served by sponsoring Masters and Doctoral candidates who’ve already demonstrated exceptional coding abilities during their internships and show the ability to do oh so much more if only they could afford to go to graduate school. You would then commit to your sponsor for 3-5 years afterward. THAT would be a big boon to the “Big Five” development shops. And because you’re providing the best of the best with the opportunity to excel and create amazing tools and technologies, it’ll help the industry as well.”

[My thoughts on the comment] I actually think that this is an even better idea than what I had originally wrote above! The Big Five could just start paying the tuition of Computer Science majors (undergrads, grad students, and PhDs). Why not? I could see that being a huge boost to the industry. This is why I submit to HN – In spite of my initial fear to submit the article to HN, that the community will think I’m crazy. It turns out I’m not crazy enough! Love it!

100 Books Finished Since 2014


Towards the end of 2013 I got into the habit of reading books on a regular basis. Since January 1st, 2014 until today (Oct. 11, 2017) I have now read 100 books to completion!

Reading books on a regular basis is probably the best life hack I’ve found. Almost anything that anyone has ever gone through in life has already been experienced and documented by someone else. Books are a great place to learn about how to deal with life and also to learn about the world outside of ourselves. It’s great diving into a new book about a completely different culture outside of our own.

Special thanks to the Houston Public Library for being awesome as well as the University of Houston’s Anderson Library for being open and free to alumni!

Book Recommendations From The 100 (in alphabetical order):

Between The World And Me – Ta-Nehisi Coates – A short book on Civil Rights and what it’s like being black in modern day America. Coates writes this book as a letter to his son.

Founders At Work – Jessica Livingston – The Y Combinator co-founder talks with numerous founders about startup life and entrepreneurship.

Mastery – by Robert Green – In my top 5 all-time. A must read for any ambitious person who wants to be an expert in their field, or in multiple fields.

The Interior Circuit – Francisco Goldman – Life in modern day Mexico City. Read before traveling to the DF for the first time, eventually falling in love with the city.

The Lean Startup – Eric Reis – The bible for all tech startups. A must-read for anyone in business school and anyone interested in how software is developed.

The Leopard – Giuseppe di Lampedusa – A beautiful story about Sicily after the Risorgimento (post-unification Italy) and what it means for some of the royal families who had lost power. Also about how the choices we make early in life continue to reverberate throughout our lives.

The Master Switch – Tim Wu – An excellent book on explaining why free-markets aren’t naturally efficient and can lead to monopolies if strong rules and regulations aren’t used to ensure fair competition. Also on how competition benefits consumers more than monopolies.

The Savage Detectives: A Novel – Roberto Bolaño – An incredible novel with multiple stories set in Mexico City and across Mexico woven together, from the late Chilean author.

The Hoods – Harry Grey – A former gangster writes this 1952 autobiography under an assumed name. Describes life in early 1900’s New York City growing up as a petty thief in the tenements to being a well connected criminal. Book seems out of print but I found a used copy on Amazon. Book was the basis for Sergio Leone’s “Once Upon a Time in America”.

Building an RGB Color Picker

Image courtesy of Wikipedia via a Creative Commons license

After completing the UpskillCourses.com program, I started another course on learning web development called “The Web Developer Bootcamp” by Colt Steele on Udemy. One of the projects the course has us build is an RGB color picker. The course only had us build the project locally, but I decided to take it the next step and upload to GitHub.

GitHub is a great tool and I want to keep the knowledge of how to use it fresh in my mind. I uploaded the project here and also added it to GitHub pages so you can view the site live. I added an “About” page to the project which isn’t part of the course, and it needs a bit of improvement to the CSS, but it’s still enough to get online. It was good playing around with GitHub again and I even downloaded the Mac app to have another option other than the terminal.

I’m enjoying the course so far and still have a bit to go. I will keep updating the blog as I progress!

Learning Computer Programming via UpskillCourses.com

I’ve started and failed many times to learn computer programming over the years. Upskill is the first course I’ve ever stuck with until completion and I’m now in a good position to continue my learning!

False Starts

I’ve wanted to learn computer programming for many years. I’ve tried learning via many different resources and I always ended up giving up when either I got in too far over my head or lacked the discipline to continue. Often I would learn things and not know how to apply to it. Codecademy, for example, is a great resource to learn some basic syntax of HTML, CSS, Ruby, Git, etc. but it doesn’t show the user how to actually take and apply that syntax to a new project. I finished the CSS course but still had no idea how to start a CSS file from scratch! Which led to me going back to square one trying to figure it all out.

FreeCodeCamp and The Odin Project are also excellent resources but the former quickly went in way too deep beyond my comprehension level and the latter is a collection of free resources so it’s easy to lose focus switching between programs within the course. I was having a hard time with each of those programs and didn’t have the knowledge and discipline to finish until completion.

In spite of my initial frustrations and how many times I’ve quit, something deep inside of me kept burning with a hunger to learn how to write code. In spite of not fully believing in myself, I knew that plenty of people from non-traditional tech backgrounds were learning to code and becoming employed programmers. Tech is one of the few, true meritocratic fields where a diploma isn’t required and all that matters is your portfolio. Over the years I’ve spent a lot of time doing research on how people to learn to program and, after many false starts, finally found a resource that worked for me.

Enter Upskill

As a frequent reader of the r/LearnProgramming subreddit, about six months ago I came across this post from a programming instructor named Rob Dey who posted about his new free web development bootcamp called Upskill. Rob was telling the LearnProgramming community that he was giving away his new course for free. The post quickly shot up to the top post all-time in the subreddit where it remains the most upvoted post of all time.

What hooked me into Upskill is the entire course is videos of Rob Dey coding up a fictional web app startup called DevMatch from scratch. You don’t have to do anything other than write your code exactly the same way Rob is doing. The key here is to never copy+paste your code but to instead type it out by hand. Typing the code out by hand will help build the muscle memory of writing code.

Even though I feel like I don’t understand 90% of what he was doing in the videos, I have a much better high-level understanding of how all of the pieces of a webapp fit together after completing the course. Some of the most talented developers I know tell me they still look up basic HTML & CSS properties from time to time in order to remember how to do things.

The Upskill course is primarily focused on Ruby on Rails with a mix of HTML, CSS, SASS, JavaScript, jQuery, Bootstrap, and the Stripe API. All the code is written in the Cloud 9 online IDE and later, once merged to the main GitHub branch, uploaded to Heroku. Mailgun is used for email.

Before starting the course I had previously done a little bit of work with GitHub and the command line, but I no idea how GitHub branching worked or how to handle working on a project in increments. Upskill taught me these things and I’ve even learned how to delete a GitHub branch when I’ve completely screwed it up so I can start over (move fast, break things!).

Drawbacks

I emailed Rob twice for help during Upskill when I ran into a few Rails database errors, but never heard anything back. Luckily, this forced me to rely on Google, Stack Overflow, r/LearnProgramming, and r/Rails to search for answers and to also ask questions. Knowing how to properly search for the answer to a question you have and to properly ask for help are extremely important if you want to work as an engineer and/or with engineers. Even though I never heard back from Rob, I was able to search and ask for help elsewhere and move on.

The Upskill videos also spend a lot of time mentioning specific resources and telling users to simply Google them to read through the documentation. This doesn’t bother me, as I’m just trying to learn basics and I don’t expect a free course to provide me with the same level of depth as a $20k bootcamp, but it may bother other users. Just something to keep in mind!

Upskill, in my opinion, also doesn’t go into enough depth where the student will be able to finish the course and immediately get a junior dev job. But, it was a very good next step after finishing Codecademy. It also seems like it would be a very good resource to do before joining a formal bootcamp program (like HackReactor) or a more in-depth online course.

Sign Up for DevMatch!

Head on over to my version of the DevMatch webapp and play around with it yourself! You can even create an account to see the inside of product as a user. Feel free to create a free account or a pro account. The billing for the pro accounts is handled via the Stripe API, so be sure not to use your real credit card info unless you want to be charged! If you need a test credit card, use the digits “4111 1111 1111 1111” with any expiry and CVC. You can also view my code on GitHub here and the official GitHub repository here.

The New Economy

Tweet from @pmarca quoting a NYTimes article

Marc Andreessen put many entrenched industries on notice a few years ago when he said that software is eating the world:

…many people in the U.S. and around the world lack the education and skills required to participate in the great new companies coming out of the software revolution. This is a tragedy since every company I work with is absolutely starved for talent. Qualified software engineers, managers, marketers and salespeople in Silicon Valley can rack up dozens of high-paying, high-upside job offers any time they want, while national unemployment and underemployment is sky high. This problem is even worse than it looks because many workers in existing industries will be stranded on the wrong side of software-based disruption and may never be able to work in their fields again. There’s no way through this problem other than education, and we have a long way to go.

Reading and writing code is often discussed as the new literacy of the future. Regardless of whether you believe the techno-optimists and futurologists, it’s true that technology is and will continue to be automating many jobs out of existence from blue collar jobs like truck drivers to cushy office jobs like stockbrokers. Almost every industry in the world will look completely different once the internet revolution is completed. This will change society as much, if not more than the shift from an agricultural-based economy to factories and the shift from manufacturing to a service economy. We’re still in the very early stages of the internet revolution and the changes will continue to reverberate throughout the economy.

We can sit and argue about specifics or timelines of when these changes will take place, but the truth is that the ability to think through a logical sequence of steps and to truly provide and follow clear instructions will be increasingly valuable in the new economy. More and more jobs will require technical expertise and those who aren’t equipped to work in this environment may soon be out of a job in the coming decades.

Discipline

I can’t tell you how long the Upskill course took me to complete, though looking at the original Reddit post announcing the course, it’s timestamped as being posted six months ago. My focus was more on writing code every single day and submitting it to GitHub. Even if I only had time for about a 5-10 minute lesson and one commit, by coding every single day, even on days I was extremely tired and needing sleep, I’d still do a quick lesson.

By forcing myself to stay disciplined and code every single day I was able to push through and complete the course, even if on many days I didn’t have the confidence that I could do it. I’ve posted before about the Non-Zero Day method I use and it’s helped me make more progress towards my goals in life than any other method. Motivation comes and goes, but discipline means putting in work even when you don’t want to. Front loading a little pain and discomfort can pay off exponentially in the long run. And it doesn’t mean to literally never take a day off – It just means put in work even when you don’t want to, even if it’s just a little bit every single day.

What’s Next for Me

Upskill was an excellent course to build on my understanding of basic syntax (via Codecademy) and to see how things fit together at a high-level, but as I mentioned above, I’m nowhere near ready enough to work as a developer full-time. It was good enough to wet my appetite and now I’m ready to continue my learning.

Next, I’m going to be looking at continuing my learning through additional resources such as Harvard’s CS 50 course, the aforementioned FreeCodeCamp and Odin Project, as well as an Udemy course called The Web Developer Bootcamp which has a heavy JavaScript focus (keep an eye out for the price to drop; I found it marked down to $10 total for the whole course!). I’ll also likely take a look at some different books as well. Keep an eye on this blog and I’ll post updates as they happen!

Why Work at a Startup?

With the Streak.com team at our 2017 company offsite in San Diego

It’s been a little over one year since I started working at my second Silicon Valley-based startup, Streak.com. I thought now would be a good time to write about what it’s like to work at a startup in case there are people out there interested in potentially joining a startup one day. Like many of you, I was once on the outside looking in at the startup community. Thanks to the many different startup founders, investors, and employees who have written blog posts about their experiences over the years, I was able to learn a lot about the industry before joining. This is my chance to pay it forward by sharing what I’ve learned. I’ll discuss in this article to discuss some thoughts I have about the differences between startups and larger companies, what it’s like working at a startup, and why one might join one.

What Is a Startup?

There’s seemingly almost as many definitions of the term “startup” as there are actual startups, but there are a few things that startups have in common. In my opinion, a startup is a company that is privately held, hasn’t yet had an IPO, and likely hasn’t yet reached product-market fit for their product. Steve Blank says, “A startup is an organization formed to search for a repeatable and scalable business model.”

My own definition of what defines a company as a startup is by using what I call the “Sam Altman Startup Test”. Before Sam took over as President of Y Combinator for Paul Graham, Sam founded a startup in Mountain View called Loopt. When I first moved to Silicon Valley in 2011 and was looking for a job, I interviewed with Loopt. Sam came up to me during my interview to introduce himself and wish me luck during the interview. I didn’t get the job, but that brief chat with Sam left a big impression on me. Here was someone I looked up to and he took time out of his day to shake hands with me and chat for a few minutes. I now use that as a rule of thumb when interviewing for startup jobs: If you can, at a minimum, meet the CEO of the company you’re interviewing with during the interview process, there’s a good chance you’re interviewing with a startup. There’s always exceptions: Maybe the company is too big for the CEO to interview candidates but maybe you can still chat with the CEO on a frequent basis. At the end of the day, it’s up to you to get a feel for if the company still feels like a startup or not. When in doubt, feel free to use the Sam Altman Startup Test.

How To Make a Big Impact

If you have a goal to work in a job where you can make a big impact on the future of the company you work for, then joining a startup might be for you. There’s always reversals to the rule, but generally speaking the smaller the company the better if you want to have a big impact in your workplace. Yes, there’s a huge amount of innovation happening at large companies, but bigger companies have a lot of built-in inertia and it’s harder to pivot the direction of a luxury cruise ship as opposed to a swift and nimble cigar boat. At a small startup, one person can make a much bigger positive impact on the trajectory of the company.

Joining a team with less than ten or twenty employees means you can also potentially position yourself to be in a high-level position if that startup grows to several hundred employees or more. You’d have a much harder time moving up from entry-level to a VP or C-Level role in a company that already has several thousand employees than getting in early in a smaller company and being there as it grows.

The smaller the company, the more likely you will be able to talk on a frequent basis members of the entire company, especially with people working in different areas of the business. Someone who works with customers, like me, will be more likely to socialize or go to lunch with engineers and designers when we all work for a smaller company. The more time you spend with people working in different areas helps with company communication and learning about the different challenges each group faces. Support and sales can give the engineers interesting user feedback and engineering can discuss product roadmaps and future products in the pipeline.

When a customer writes in with a new idea to our support team at Streak, or if I think of a new idea, I can immediately send the feedback to an internal Google Group we have explaining the idea to our entire team. This group also serves as a direct line of communication with our founders who give immediate feedback on ideas or ask us to gather more data or context from the users. You can join a big 20,000 employee software company but the chances you’ll be able to have frequent conversations directly with the CEO are slim to none unless you’re already a high-level executive.

Lean Product Development

As Eric Ries so excellently describes in his game-changing book, The Lean Startup, there’s been a huge movement in software towards the concept of lean product development.

The older method of product development meant spending 12 months building out a new product feature with dozens of different permutations and preparing for dozens of different use cases. The problem is founders would spend so much time in development, by the time they actually talked with customers, what the market wanted was often different than what the founders assumed it was, and thus the founders were often to start over from scratch.

Lean product development is the method of building a very small, limited feature version of a new product in as short as time as possible… then getting that “lean” version into your customers’ hands. By quickly building and releasing the lean version of a new feature or product, a company can get immediate feedback on the new product from users. You can do the best QA testing in the world, but customers will always find broken things that the dev team missed. Customers are also not shy about requesting new features so they’re a crucial part of the early development process of a new product.

Developing lean will either confirm that your assumptions are valid and that it’s worth further developing the product, it’ll prove the opposite that nobody would actually use the product, or even force the product in a different direction due to unforeseen usage and/or feature requests.

One of the coolest things about working in a startup is how fast small companies can crank out updates to existing products and release brand new products to the market. Larger software companies take months just to discuss ideas, going through a maze of middle managers who have to debate and sign-off on every major decision. It isn’t necessarily bad that large companies take more time to make decisions because there’s often much more at stake (thousands of employees and billions of dollars in revenue that can be affected). A small startup can make a product change in a flash and with only a very small number of people that need to be included in discussions on the merits of the change.

One thing to note about joining a small company is the product is likely not going to be anywhere near complete. You’re likely going to notice that the product is only a fraction of it’s potential and where it needs to be. It’s going to be frustrating at times that the product doesn’t have all of the features it needs or things frequently break, but that’s the nature of startups and part of the fun of the journey. Working on the customer side, one spends a lot of time communicating to users that the product is in its very early stages and that the company greatly appreciates all feedback. If ambiguity, uncertainty, and occasional product bugs concern you, go join a larger company that has already “crossed the chasm”.

Startups exist in the “Early Market”. Established companies are further to the right. Diagram via Innolution.com

Focus On Learning and Personal Growth. Take Risks.

One of the best aspects of startups is that they tend to have a lack of formality and have little or no hierarchies so employees can touch many different aspects of the business. Experience in many different areas of the startup’s business will likely pay dividends in the future. If you want to spend all of your workdays doing a very narrow task and not learning much outside of that small window, join a larger company. If you’re comfortable wearing many different hats, dealing with ambiguity, and want to get your hands on as much as the business as possible, a startup is probably what you’re looking for.

When you’re young, you’re in a much better position to take risks. There’s a lot of new college graduates who are only focused on joining whichever company offers them the most money. While I agree with making the most money possible, I strongly disagree with the notion that taking the highest paying job is always the best course of action for one’s career trajectory and to build the most wealth over one’s career.

When you’re just graduating college, you’re likely to not be married and probably don’t have any kids. Unless you’ve been living with your parents, you’ve probably been living a rather spartan college lifestyle in a small apartment or dorm room… possibly with roommates. You probably don’t have the nicest car and your overall spending habits are somewhere between checking under couch cushions for beer money and buying ramen noodles and Sriracha in bulk. This is good! Having very frugal spending habits means you have a low personal burn rate which means you don’t need a lot to live on.

A low personal burn rate is the perfect time to make some bold career and life decisions. You can afford to screw up and make mistakes because you don’t have to worry about feeding any mouths other than your own and you don’t have a mortgage. There’s always couches to crash on at friends’ apartments if shit hits the fan and a couch wouldn’t be a huge step down in your standard of living. One of the bold risks is to turn down higher-paying jobs to work at a small startup. The money will come but you’re not always going to be young, unmarried, without children or a mortgage, and living with a low burn rate. Take advantage of that opportunity while you can.

One of the biggest misconceptions about startups is equity. If you get equity, it’s great, but consider it as likely to give you a great monetary return as a lottery ticket. You don’t join someone else’s startup to get rich, you do it to learn. Keep this in mind when weighing different job offers and discussing salaries.

How To Get Hired

Now that you’ve decided a startup is the right place for your next job, the next steps are to figure out how to get hired. If you’re not an engineer, consider becoming one or at least start learning some of the basics. The smaller the startup you work for, the higher the likelihood technical skills can be brought into non-traditional technical roles (such as sales, marketing, and support) and have a huge impact. An aptitude to learn different skill sets, get out of your comfort zone, and get one’s hands dirty will take you far in your career.

If you’re still a few years away from having good hacking skills, even good enough to apply to a non-technical role, consider looking for a startup that needs helps on the customer side, in sales or support. Support (where I work) is good if you want to get used to working very close with engineers and also if you want to learn how to communicate better with them. Knowing how to articulate customer-speak to programmers, and vice-versa is a very valuable skill in the tech industry. If you want to eventually become a developer, being able to clearly articulate yourself to other engineers will help you tremendously in your career.

Also, and everyone will have a different opinion on this, but consider moving to Silicon Valley to be at ground zero of the startup community. The Bay Area is incredibly expensive so it’s good to have a decent emergency fund saved up. Don’t be afraid to network like crazy and go to meetups and chat with locals. Tell everyone you meet that you’re looking to join a startup. Be as what Paul Graham calls “relentlessly resourceful” and an “animal.” Taking an animalistic, hustler mentality (without being an asshole or being annoying) will leave any good founders impressed. This is what I did to join my first startup, isocket, back in 2011.

Startups have a “get shit done” mentality which means the smaller the company, the more they need to hire for people who can accomplish tasks with very little direction or oversight. Big companies tend to hire people to accomplish one thing and nothing else outside of the job description. Startups are just trying to survive and anything you can do to push the company forward is needed.

Startups will often post job openings on sites Angel List, WeWorkRemotely.com (remote only), and the Hacker News jobs section for Y Combinator-specific companies. Keep in mind that many openings don’t get posted and this is where networking comes in handy. It also might be okay to email employees at different startups and introduce yourself and see if they have any openings not listed on their careers page. Even if they say no, thank them for their time. You may end up making a good connection with them and, considering how fast startups change, they may have an opening in just another few months.

Conclusion and Resources

Now that you’ve finished reading this post, hopefully you know a little more about why someone would join a startup and what it’s like to work for one. Your mileage may vary, of course, so don’t take my word for it: Keep reading and learning as much as possible and decide for yourself.

Some good resources are Hacker News and Paul Graham’s Essays. Also, be sure to check out Paul’s book “Hackers and Painters“, Jessica Livingston’s “Founders At Work“, the aforementioned book “The Lean Startup“, Ben Horowitz’s “The Hard Things About Hard Things“, and Alexis Ohanian’s “Without Their Permission.” Good luck out there! (PS: Stay in touch on Twitter!)

Training at the Wichita Falls Athletic Club

via the WFAC Facebook page

Using the Non-Zero Day method to continue to stay disciplined and work towards my goals this year, I decided to seek out some help from experts in weight lifting and strength training to help me progress. This led me to the mecca of strength training, the Wichita Falls Athletic Club in Wichita Falls, Texas.

Starting Strength

The WFAC is owned by the godfather of modern strength training, Mark Rippetoe. “Coach Rip” has tons of great articles and videos online on his website, StartingStrength.com, for those looking to increase their strength levels and learn about basic weight training. Coach Rip and his staff developed the best beginner strength training program in the country, known as Starting Strength, which is used by hardcore lifters and athletes down to the average desk jockey, and even many seniors who want to lessen the effects of old age. He and his staff also do seminars on his program all over the country, but primarily they use Rippetoe’s gym in Wichita Falls as their home base for training.

I’ve previously done Starting Strength for a long time so I can attest to how well it works. I saw incredible strength gains in both my deadlift and squat numbers in only a six-twelve month period. If you’re looking to make some solid progress in basic weightlifting and strength training, Starting Strength is an excellent starting method. I encourage you to purchase the namesake book on Amazon.com and read it for yourself. In addition to learning the Starting Strength programming, there’s tons of excellent knowledge about how to correctly perform all of the major powerlifting lifts: Deadlifts, squats, bench press, press, and power cleans. Even if you don’t have goals of being a powerlifter, those are some of the most important exercises any amateur should incorporate into their workouts if they want to build muscle mass and avoid being a weakling when you get older.

Moving Towards Mastery

Fitness and strength training has been a part of my life for over a decade and I’ve spent thousands of hours devouring countless articles, books, and Reddit posts on the subjects of fitness, bodybuilding, weight training, and nutrition. In spite of all of that time I’ve spent learning about fitness, I’m always amazed at how much I still have to learn. No matter what subject you’re working towards mastering (fitness, sports, a foreign language, a musical instrument, etc.) never be afraid to sit down with a coach or an expert to improve your skillset and to get feedback. Even the best athletes in the world, from LeBron James to JJ Watt to Phil Heath, all spend countless hours seeking out additional coaching and feedback from experts in their field.

Having family north of Wichita Falls and knowing I was going to be in the area this past MLK weekend I decided to call up the WFAC and see if I could schedule a workout session. I scheduled a session with coach Nick Delgadillo and coach-in-training Joey Gaona and a few days later I headed to downtown Wichita Falls for my workout session. Both Nick and Joey were extremely helpful in helping me tweak and improve my form for all of the major Starting Strength lifts: Deadlifts, Squats, Press, and Bench Press. Unfortunately, coach Rippetoe wasn’t in, but I still got in an awesome workout and learned a lot in my coaching session.

Non-Zero Days At The Gym!

I’ve previously discussed how I use the Non-Zero Day method to stay disciplined and on track to reach my goals. One of my goals is to continue to build strength and stay in shape via strength training and cardio. In the original post, I discuss how one should never have any days where you don’t do anything towards your goals. With fitness and strength training that becomes a little difficult as one needs sufficient rest days to allow the body to recover, the amount of rest days depending on the specific training program. Bodybuilders may train 5-6 days per week and powerlifters may lift only 3 or 4 days per week, taking every other day off to rest. With the Non-Zero Day method, I don’t mean you should get your calendar and hit the gym 7 days per week or 30 days per month. That’ll quickly lead to burnout! Instead, if your goal is to do a program like Starting Strength that has you train three days per week (ex: Monday, Wednesday, Friday) then use the Non-Zero Day method to make sure you train every Monday, Wednesday, and Friday! You can use a calendar or spreadsheet to track your workouts, just make sure you have no zero days on the days you’re scheduled to hit the gym!

My Training Regiment

While I swear by Starting Strength’s program, today my goals and daily schedule are slightly different. I’m now doing a PPL routine (Push, Pull, Legs) which hits one of the major lifts every session (splitting deadlifts and squats on different days) and I shoot for six days a week at the gym with one day of rest. I have no plans to compete, so I’m not as worried about my numbers in my lifts and am more focused on lifting as consistently as I can but also releasing stress and gaining endorphins. I prefer a six-day schedule as opposed to three, but your mileage may vary. I still do the big three lifts twice a week.

Come With Me If You Want To Lift!

Now that you know all about Starting Strength don’t take my word for it! Go purchase the book and get started on the path towards success and remember Coach Rippetoe’s wise words as you continue along your journey:

“Stronger people are harder to kill than weak people and are more useful in general”

Now go pump some iron!

The Power of Non-Zero Days: The Best Productivity Method I’ve Ever Used

image made by Redditor u/aryeo

We’re nearly halfway through first month of the new year and New Year’s Resolutions posts are slowly starting to fade away on social media. Eventually many of the grand plans and goals people have set for themselves will slowly start to wither away and another year will be wasted. It doesn’t have to be this way; often many people who’ve failed to reach their goals in years past simply need a better system.

I myself was in the same boat a few years ago, having large goals but never really accomplishing anything. Or, I’d have random bursts of productivity but ultimately nothing consistent enough to really accomplish the lofty goals I had set for myself.

All of this changed three years ago reading a comment on a Reddit post and my entire life has changed. I’m far more productive and I’ve made far more progress towards my goals than I’d ever previously thought possible.

Rule #1: No More Zero Days!

The system I learned reading that Reddit post three years ago is called the “Non-Zero Day” system. What the heck is a “Non-Zero Day”? I’M SO GLAD YOU ASKED! A zero day is when you don’t do anything that day towards accomplishing the goals you have for yourself. A Non-Zero Day is where you do something, anything towards your goal. Want to learn guitar? Then practice every single day. Even ten minutes of practice is better than zero. Want to learn a foreign language? Do at least one lesson on Duolingo or Memrise every day, even if you’re just reviewing stuff you’ve already learned. Why? Because that repetition will add it to your memory. That one lesson worked on each day is better than zero and much better than infrequent, sporadic bursts of practice.

By working towards your goal every single day you’ll build the habit and you’ll start to progress towards your goal. It is said that it takes 21 days to build a habit, so string 21 consecutive days of working towards your goals and eventually the habit will be formed and you won’t want to break it. Okay, so the 21-day-habit theory might not be based 100% in science, but the point still remains the same: Consistent actions breeds habit, regardless whether it takes 21 days or not.

Some days you may only have time for ten minutes of guitar practice, and others you may spend a few hours: The key is to be consistent and practice every single day! Maintaining the habit is far more important than doing it ‘properly’ or focusing on how long you practice the habit for. You’ll make far more progress towards your goals by making small, incremental progress every day as opposed to random, infrequent bursts of productivity.

Pro Tip: The Seinfeld Calendar Method

Jerry Seinfeld wrote that when he was an aspiring comedian he would force himself to write one joke every single day. He would mark on a calendar every day he did something towards his goal. Eventually, he had so many days marked off as completed it would serve as motivation because he didn’t want to break the chain. That daily action builds the habit of practice and improvement.

I made myself a simple Google Sheet with a list of everything I want to accomplish every day: Hit the gym, practice Spanish, and learn some code. Stringing together enough non-zeros and I want to keep the chain from breaking! You could also buy a calendar or print one off online and stick it on the wall if you think you’d forget to check the Google Sheet. It’s really cool having the progress chart to look back at all of the work you’ve put in along your journey towards success!

Rule #2 – The Three Yous

There are three yous: Past Self, Present Self, and Future Self. First, you have to be grateful for your Past Self and everything you’ve done up until this point. Spent every day last month working on your jumpshot and today you hit the game-winning basket? Thank you Past Self for working hard every day at practice! Studied a little bit every single day all semester long and then you were able to ace the final exam? Thank you Past Self for planning ahead so I could good night’s sleep the night before finals instead of pulling an all-nighter like everyone else!

Then, you have to train your Present Self that all actions you do today affect your Future Self. Tired after work and want to sit on your butt and watch Netflix and not do those Spanish grammar lessons? Screw you present self! I’m going to bust out some lessons today in my Spanish textbook so next time I’m visiting Mexico I can speak to the locals in their native language. That alarm clock is going off way too early, but my Present Self is going to have to drag myself to the gym instead of hitting snooze because Future Me wants to be in awesome shape when I get older! Future Me will greatly appreciate the work I’m doing today to prepare set myself up for an awesome future.

Rule #3 – Forgive Yourself When You Slip Up

By now you’ve working hard at stringing together a string of consecutive Non-Zero Days and you’re using the Seinfeld Calendar method to keep track of your progress. But oops, you slipped up and forgot to run 6 miles today to train for that 10K you want to run. Forgive yourself and move on!

It’s so easy to get sucked into the trap of thinking, “Man, I’ve wasted all of this time not doing xyz. If only I had gotten started ten years earlier I’d be so far along today!” You’re probably right, but you have to forgive yourself and convince your Present Self to get started today! Future you will greatly appreciate that you forgave your Past Self and focused on accomplishing your goals instead of negatively dwelling on the past.

Rule #4 – Books!

Ryans01 says (more on him in a sec):

As for books, almost every fucking thing we’ve all ever thought of, or felt, or gone through, or wanted, or wanted to know how to do, or whatever, has been figured out by someone else. Get some books Max. Post to reddit about not caring about yourself? Good first step! (nonzero day, thanks younger me for typing it out) You know what else you could do? Read “7 habits of highly successful people”. Read “emotional intelligence”. Read “From good to great”. Read “thinking fast and slow”. Read books that will help you understand. Read the bodyweight fitness reddit and incorporate it into your workouts. (how’s them pullups coming?) Reading is the fucking warp whistle from Super Mario 3. It gets you to the next level that much faster.

I like that analogy a lot. Humans have been on this planet thousands of years and we’ve been writing printed books since the invention of the printing press by Johannes Gutenberg in 1440. Mankind has been good about documenting dang near everything these past 577 years, so why not learn from people who’ve gone through the same situations that you’re going through? Books are the bee’s knees. Can’t afford to buy lots of books? Public libraries are excellent resources: I love using the Houston Public Library system and, as an alumnus, I frequently check out books from the Anderson Library at the University of Houston.

I’ve always been an occasional reader but in 2013 I started really getting into reading. To stay motivated I created a simple Google Sheet to keep track of every book I’ve already read and every book I want to read. Some people use GoodReads for this purpose as well. In 2016 I read 35 books and wish I had time to read so many more because I now have several hundred books on my Google Sheet that I want to read. Quality is certainly more important than quantity, but I like to keep track of my progress to make sure I’m consistent in my reading. r/books is a great place where fellow bookworms to congregate and discuss the love of reading.

35 books may sound like a lot, but break it down into smaller increments: An average book is 300 pages which would take you 300 days to read at the pace of 1 page per day. If you can read 10 pages per day, you’re on track to read 1 book every thirty days or about 12 books per year. You can handle that!

Recap

Motivation is fickle, something that comes and goes. The Non-Zero Day technique is about cultivating discipline regardless of whether you’re motivated or not. Motivation is all about how you feel; discipline is about ignoring how you feel and doing it anyway. Forgive your Past Self for any mistakes while being grateful to your Past Self for everything you’ve accomplished. Then, tell your Present Self you’re going to front-load a little pain in order to become the best version of your Future Self that you can possibly be. If you need help tracking your progress, check out the Seinfeld Calendar Method and don’t be afraid to read as many books as you can.

Origins

I’d love to take credit for the Non-Zero Day method, but I got the idea from a comment made by a Redditor under the username Ryans01 three years ago in the r/GetDisciplined subReddit. If you liked my blog post above, please read his original comment here.

In this next section I’m to share how I apply the Non-Zero technique to different areas of my life to learn different things.

Learning a Foreign Language

Want to speak a foreign language? Duolingo is a great, free resource to start! My goal is to be completely fluent in the Spanish language so I started doing Duolingo a few years ago. I completed the Spanish course in 2015 so I started doing the reverse course: I switched the app’s language to Spanish and started learning English through Spanish. Fun stuff! It challenged me to read through the Spanish language then translate to English. After finishing that course I decided it would be fun to pick up some other languages on the side so I then added the Italian, German, and French courses to my Duolingo profile, all while keeping the app in Spanish. Learning another foreign language through Spanish forces me to test myself to see how strong my Spanish is and the best part is I can’t use English as a crutch to fall back on. I’m actually learning some new words through this method and increasing my vocabulary. It’s also fun seeing the similarities between languages.

Duolingo is fun because it keeps a streak of how many consecutive days I’ve been using the app. That streak keeps me motivated to do my language lessons every day and not to give up. It also motivates me in other areas of my life, keeping me focused and motivated, much like the Seinfeld calendar method. In addition to Duolingo, I also use the Practice Makes Perfect book series to improve my vocab and other fun stuff like verb conjugations, etc. I also use Memrise from time to time and I really like it a lot as well.

Be sure to check out the r/LanguageLearning subreddit as well as r/Duolingo and other, language-specific subreddits like r/LearnSpanish and r/Spanish.

Computer Programming

One of my biggest goals is to teach myself front end web development and computer programming. Luckily some awesome people developed the internet and there’s tons of free resources online.

To learn some of the basics, Codecademy has been a super valuable tool to understand some of the basic syntax. I’ve done their courses on HTML & CSS, Javascript, and Ruby on Rails and all of those courses are great starting points. After finishing Codecademy be sure to check out The Odin Project, Free Code Camp, and Upskill – All free resources on taking your coding skills to the next level. I’ve done a bit from all three resources but haven’t finished any of them yet, so I’m not going to recommend one here… just check them all out and pick one and get started!

Then head on over to subreddits like r/LearnProgramming and r/WebDev and check out the posts from those awesome communities. Bring your questions, they love to help! Also, Stack Overflow is a great resource to look up and/or ask questions.

Writing

I created a blog on my favorite football team two years ago, and using the Non-Zero Day technique I managed to write over 700 blog posts during that time period. I didn’t write every single day, but some days I managed to write multiple times per day. Pro-Tip: Once you feel like you’re making some solid progress with the Non-Zero Day technique, you can take some time off here and there because you’re so focused on the end results it won’t stop you from accomplishing your goals.

By both increasing the amount of books I’ve been reading and then writing a lot about a passion of mine I became a better writer. No, I’m not going to go toe-to-toe with Tolstoy any time soon, nor is my grammar and punctuation 100% perfect, but I can much more clearly express my thoughts through writing then before I got started. Ironically, before hitting publish on this blog post, I realized I had written about this same topic three years ago. You can see how much my writing has improved since then!

Get Your Swole On!

Want to get in shape for 2017? Great! A good trick I use to keep myself motivated is I made myself a Google Sheet to keep track of my progress at the gym, but a simple old school notebook will do the trick if you prefer pen to paper. After taking some months off, I got back into a consistent workout schedule in 2016. Due to a huge amount of people who like to go to the gym after work, I prefer to go to the gym in the mornings before work or on my lunch break. I’m not always the happiest person at 5am waking up to go lift and do my cardio, and some days I’m not at a 100% performance level, but I’ve never had a day where I leave the gym and regret going. Motivation is futile; discipline is everything.

One of the big things for me last year in 2016 was getting my nutrition game on point, and even though I don’t have plans to compete, I decided to follow the same diets as bodybuilders. Bodybuilders work hard to have a the most amount of muscle with the least amount of body fat, so I try to imitate them as much as possible. So I don’t get lazy, I cook a bunch of food in advance. I’ll bake some chicken, cook up some rice and veggies, all so I have food ready and don’t have to think about it when I’m hungry. r/MealPrepSunday and r/FitMeals are great resources!

r/Fitness is a great resource for general fitness info, and be sure to check out r/bodybuilding and r/weightroom for more advanced knowledge. Want to lose weight? r/nutrition has tons of great info and the communities at r/LoseIt and r/ProgressPics are super motivating and supportive as well.

And no, I’m not suggesting you have true Non-Zero Days with the gym. You need to schedule some rest days because your body needs to recover so your muscles have time to grow! Also, you may be working on a specific program like Starting Strength that has you doing strength training three days per week. The key is to not have any Non-Zero Days on your training schedule: If your training plan has you training three times per week then you better not have any zeros on those three days!

The End!

You’re tired when you get home from work. I completely understand, I am too. But if you have any sort of goals for yourself in life that doesn’t involve hitting old age, wondering where the hell your life went and wishing you could have your youth back so you could accomplish something, I encourage you to take a look at the Non-Zero Day method and and see if it helps you. Of course, there’s several excellent subreddits for Getting Motivated, Getting Disciplined, and of course Non-Zero Days! If you find any better methods, please leave a comment!

I don’t write this post to brag and impress anyone. Frankly, I’m too busy trying to maximize every single moment of my life than to worry about what others think. I don’t compare myself to others because everyday I face the toughest competition possible: My Past Self.

New project: Building the Google homepage in HTML and CSS

A screenshot of my Google homepage project.

In my quest to learn front end web development I’ve been bouncing around some different free courses online. The Odin Project seems to be a very good, free collection of resources to learn web development.

I had previously gone through a bit of their HTML & CSS resources as well as some of their JavaScript and jQuery resources. As part of Odin, the course has students build some different projects. I had previously skipped the HTML/CSS project around building a copy of the Google.com homepage as I’ve already been using HTML for ten years. Big mistake. When I finally decided a few weeks ago that I should build the project, I had a mild “oh shit” moment looking at the blank page in my text editor, Sublime Text. Apparently just going through courses online, via Codecademy and others, is a lot easier than actually building a project from scratch. I had no idea how to actually start a CSS file! Some furious Googling and a lot of humility later, I managed to figure it out!

I got the project completely finished, but as soon as I resized my browser window, all of the elements on the page moved out of order and generally looked terrible. Dang it! I spent hours trying many different methods to get the elements to stay in place and to move together in unison when resizing the browser window, all to no avail. I eventually went to StackOverflow to ask for help and submitted my code to JS Fiddle. I got some decent answers, but eventually couldn’t get it to work perfectly.

I ended up realizing I should completely scrap my code and start over. Let me rephrase that: I did a very good job using comments in my HTML to explain the different sections of code, which made it easier for me to find which code referenced the specific sections that weren’t working correctly. I didn’t truly throw out my old code: I simply made a new file and only copied over the parts that weren’t working. By isolating the problem code in a new file, I could play around with it and try different methods to get it to work. Once I got it working I was able to copy over the working sections to the new file.

In addition to learning CSS and learning how to build a CSS file from scratch and one that’s connected to an HTML file, I learned some more GitHub basics. I had learned some a few months ago, but I forgot a lot of what I had learned. After finally getting my project to work, I uploaded to my personal GitHub, then pushed the code public via GitHub Pages. Check out my Google homepage project here or click the image at the top of this blog post!