Relative URLs in Jekyll

Found this great resource that explains how to create dynamic paths when linking your images in your layouts:

The layouts were in _layout directory but the images are in images directory. Since the pages using the layout are also organized in different directories, the   path would change based on where the .html was located. Because of this, the images were breaking because the path to the file kept changing depending on where in our project directory the .html existed.

To prevent this issue, using {{site.github.url}} loads the images correctly.


Installing Python and Pip

If you are using MacOS and have Homebrew installed, you can first check if Python is installed already:

For Python 2: $ python -V

For Python 3: $ python3 -V

Python 2 and 3 have some big differences. I would recommend using the latest version for your projects if you are starting clean.

If you DON’T have Python already installed on your Mac, use Homebrew to install it:

brew install python

Python has their own package manager called pip. To install pip,

sudo easy_install pip

Now you can install dependencies for your project like the Requests module for making HTTP requests.

Checking In

It’s been a while since I’ve written and I feel the need to check in as I am at another turning point. The first turning point being my deep dive into learning how to code and convincing someone to pay me to be a junior web developer.

The second turning point is now the transition from junior web developer to mid-level. I’ve worked as a web developer for 2 years now and still feel like a newbie. I still feel like I don’t know enough. How do you keep leveling up? How do you know what new technology you should learn?

I’ve been mainly doing web development and as a junior, I realized my main goal was to learn the fundaments. Learn the technologies people need right now. I learned how to use PHP. I learned how to use HTML, CSS, JavaScript and why you use them.

As a mid-level, I feel like the language shouldn’t matter. You should be able to use the fundamentals you’ve learned and apply them to any language. Languages and tools are there to make your life easier. To really appreciate and understand what problems these tools solve, you have to learn how things work.

I’ve realized I have no idea how the web works. How requests work. How the internet itself works. I also feel like I lack a lot of the Computer Science and theory knowledge to tackle complex coding challenges. So for the next stage in my journey, I will be learning about Networking, Servers, Databases, Search Algorithms, Sorting Algorithms, Big O Notation.

I’ve currently signed up and am almost finished with the first Unit of Stanford’s Networking course:

It’s a great intro to how data gets sent from one server to another. I’ve learned a lot from this course. It goes a bit fast and there’s a lot of terms I had to search on my own, but overall, a great experience so far. Beginner friendly.

This course is another one I will be starting after I finish the Networking one:

I’ve only watched the course lectures on YouTube but now I want to try and challenge myself to complete the course curriculum.

And of course I will continue to complete the coding challenges on Codewars. Just found some more practice sites (recommended by Facebook): Pramp and LeetCode

Beautify your Terminal

Install oh my zsh for cool templates

For MAC, open Terminal and run this command to install:
$ sh -c "$(curl -fsSL"

Find templates here:

There’s more! Fans have built some more themes here:

To change the theme for your Terminal on Mac:
1. Open .zshrc file. It’s usually in your User directory:
$ cd ~
2. Then open the .zshrc file in the Terminal editor nano:
$ sudo nano .zshrc
3. Find the line that says:
# ZSH_THEME="robbyrussell"
And change the theme name to any name in the Themes list

To use the External Themes, you’ll have to download the .zsh-theme file to be able to use it. Go to the External Themes link above and click the repository where the theme lives. In the repo file list, copy the file with the extension .zsh-theme and store it in your ~/.oh-my-zsh/themes/ folder. Then you can go into ./zshrc and change the theme name to that.

oh my zsh and iTerm2 are great ways to enhance your Terminal. It’s like having a Terminal on steroids!

Practice Technical Interview

Just came across this site today:

I haven’t tried it yet but it sounds interesting.

Practice interviews with engineers from top companies, anonymously.

Become awesome at interviews, get fast-tracked at amazing companies, and land your next job, all in one place.

They also say that they are free and will always be free.

It’s always hard to know how to prepare for a technical interview when you are trying to get your foot in the door. Different companies also handle their interviews differently. Different positions will also require different questions based on the technologies they use. It can be overwhelming! If this site is all they say they are, then it’s an awesome place to practice and get comfortable answering technical questions.

When signing up, I get this message, so maybe they are limiting their users:

Thank you! We’re in private beta for now, but we’ll email you when you’re up!

In the meantime, if you haven’t done many technical interviews in the wild and aren’t sure what to expect, we recommend practicing on Interview Cake.There, you can work on algorithmic problems at your own pace and get nice hints as you go.

To give you an idea about what to expect on, so far our platform focuses on CS fundamentals, data structures, and algorithms, similar to the kinds of topics you might see in a real technical interview at a top company for a backend or full-stack role.

Worth checking out!

CSS: Text-Transform

If you are creating a form and want to have only uppercase characters shown to the user, you can apply the style ‘text-transform: uppercase‘ to the input field.

For example:

< input class="form-input" style="text-transform: uppercase;" name="Zip" type="text" placeholder="Zip Code" />

BEWARE: This will not save the form input as uppercase.

To save the input field as uppercase, in your JavaScript, you will need to apply .toUpperCase() to the input string.

Other text-transform values can be found here.

Screen Shot 2017-08-14 at 4.07.35 PM


Great Tips When Applying for Jobs

I saw this question answer on Quora today and I think it’s the most accurate summary of things to know when you are looking for a job.

So many junior developers don’t know the market in their region and ask for low salaries because they are afraid if they ask for more no one will hire them.

The average salary for a junior level, with no development experience in Atlanta is $55-65,000/year. A mid-level can make $75,000-90,000/year. Don’t ask for less! Don’t undervalue yourself. Believe in your talents and be confident you can contribute to a team.

Talk with recruiters and ask them the average salary for a junior developer. Search for junior developer jobs on Indeed and see what the average salary is for your city. Add $5-10,000 onto that average and this the salary you should ask for. Allow for negotiations. Ask what benefits you get with your position. Ask if there are bonuses and company supported conferences or courses you can take.

Apply for anything and everything no matter the technologies listed or experience needed. You’d be surprised how flexible companies are.

Anyway, I’ll let you read the well written response for yourself:

What are the biggest career mistakes to avoid?

Dandan Zhu, Top Billing Headhunter, Career Coach, CEO and Founder, Dandan Global
Written just now

As a headhunter helping countless professionals from CEO to analyst level make and negotiate their next position, here are the most common career mistakes I’ve seen candidates fall victim to:

#1. Aiming too low.
Whether it’s salary, title, or type of company, people are too intimidated by interviewers, scared of asking for too much, and suffer from imposter syndrome. This is a direct result of decades of indoctrination by authoritative educational, parental, and societal institutions that tend to demolish your self-confidence in an effort to control you. This persistent lack of confidence is the #1 issue candidates when it comes to selling yourself effectively.

#2. Saying no to yourself.
Because you feel that you lack the “qualifications” the job description asks for, you end up not going for the opportunity. This continued lack of self-confidence through self-discrimination combined with the obsession of fulfilling requirements down to the last drop handicaps good professionals from achieving career greatness. Although job descriptions don’t matter, many candidates still try to play by the rules. They don’t understand that job search is like war. The victor obtains the spoils. It’s every man and woman for themselves.

There are no rules in job search! This is why often psychopaths and liars sometimes get the BEST jobs and offers. They understand manipulation.

Too often, the most accomplished candidates lose because they don’t know the song and dance that is job search.

#3. Not understanding the modern job search ecosystem and process.
There are 4 major hiring entities that you need to know how to manipulate, maneuver around, and negotiate with. The HR person, hiring manager, headhunter, and internal recruiter. Each person has a slightly difference incentive, process, and interaction protocol. You should behave accordingly.

The process to job search is no longer: look on the web for listings, apply to jobs that you like, wait for feedback, go interview. The new process is: create your marketing documents, master LinkedIn networking, leverage 4 hiring entities, utilize volume of interviews to your advantage, negotiate all throughout.

#4. Becoming a jack of all trades.
The most dangerous problem candidates run into that seriously limits their market value and future career options is becoming a generalist. Corporations no longer value soldiers. They want professionals, experts, and true masters of the industry and job vertical. No longer is being eager and willing to work for a firm for the next 25 years a valuable candidate trait. Firms want true market leaders. That means, specialization and experience within a niche skill is not only a good to have, but CRUCIAL to remain a relevant and desirable professional.

Lastly, #5. Having no financial plan nor power.
Most professionals forget that they work largely to make a living. Since most people accumulate worse spending habits every year, people rely on their jobs more and more to fuel their lifestyle. This dependent relationship to a job quickly spirals out of control once the house of cards experiences even the smallest tremor. Because of your deep reliance on your paycheck, your emotions run amuck when experiencing any type of career turbulence.

Since your financial woes are so heavy and over-leveraged, you can’t see straight, let alone find a career you enjoy!

In most of these cases, professionals tend to work simply to chase the dollar, losing all meaning and passion for what they’re working towards outside of living the highlife. They become money-mongers. Greed takes precedence.

In conclusion Career problems don’t arise solely out of your job’s stressors. Your personal, financial, and professional problems, weaknesses, and vices will all meld together to gang up on you if you let your guard down. Stay ahead of the game by learning, networking, and speaking with career experts, colleagues, mentors, and influencers that have the RIGHT advice to guide you.

Extra tip: Parents, while well-intentioned, are from a previous generation with very difference market dynamics and understanding of what it takes to succeed in the next 30 years. Take what they say with a massive grain of salt. If I listened to my old-school Chinese immigrant parents on what to do on my career, I would not have retired from corporate life at age 28, that’s for sure!

2 Bootcamps Shutting Down

Two well-known bootcamps are closing their doors. Could this be a sign that the bootcamps have over-saturated the market? Are the number of jobs in tech still on the rise or are they plateauing?

Kaplan had acquired Dev Bootcamp in 2014 and is shutting down all the campuses by December of this year:

Iron Yard is closing all 13 of their campuses after the summer cohorts finish this year:

Installing Raspbian on Raspberry Pi

**These directions were done using Linux Mint. They can be done in Windows and Mac but will need to research equivalent commands.

  1. Make sure current SD card is clean and current partitions deleted. Format it using Gparted or command line if needed.
  2. Download latest Raspbian OS .zip file from
  3. Transfer the image onto your SD card.

You will need to extract the files from the .zip file you downloaded and then use Etcher SD Card Image Utility to burn the image onto your SD card.

Go to and follow the instructions.

A summary of the link above:

$ chmod a+x Etcher-linux-x64.AppImage
  • Execute:
$ ./Etcher-linux-x64.AppImage

Etcher will automatically set the boot to Desktop.

Windows has an equivalent called Win32DiskImager. See here for Windows instructions:

  1. Remove SD card and insert into Raspberry Pi. Connect a monitor to the Pi and then plug in the power to turn it on. You will need to connect the keyboard as well. If the keyboard is on when you plug in the power, you may need to turn it off and then on to get it to work.
  1. The Raspbian OS install will take some time. Once it finishes, it will take you to the OS desktop. Open the terminal from the top panel.
  1. Open Raspbian Configuration using Terminal
$ sudo raspi-config

To navigate, use the up/down arrow keys. When finished, use the left/right arrow keys. To select, press ENTER.

  • Press ENTER when Expand Filesystem is highlighted.

Ensures that all of the SD card storage is available to the OS.
Need to reboot for changes to take effect.

  • Change User Password

This will apply to default user ‘pi’

  • Internationalisation Options

Change Timezone

Change Keyboard

Change Language

    • Advanced Options

6.1 Overscan (will allow you to expand the screen to encompass monitor size. Only needed if you see black bars top, right, bottom, and/or left).

You can also set the overscan from the terminal by typing:

$ sudo nano /boot/config.txt

nano is the name of the terminal text editor

Information on how to use nano can be found here:

6.2 Change Hostname

6.3 SSH (enable)

  • Use right arrow to navigate to Finish and hit ENTER

Description of some of the menu items can be found here:

  1. Make sure Raspbian is updated with latest drivers:
$ sudo apt-get update
$ sudo apt-get upgrade
  1. Set up wireless connection to your Wi-Fi network
  • Open wpa_supplicant.conf file to add the username and password information if not already there:
$ sudo nano /etc/wpa-supplicant/wpa_supplicant.conf
  • Type in your necessary network information.

Press F3 to save your changes.

Press ENTER to save the changes to current file.

Press CTRL-x to exit from nano editor.

  • Reboot to have changes take effect:
$ sudo reboot

Instructions here:

  • Check that changes were saved:
$ sudo ifconfig

Look for wlan0. This is the wireless network information. If there is an IP address listed, then it worked. Write down the IP address to set up SSH in step 9 (if needed).

  1. How to remote into the Pi from your personal computer.

SSH should be enabled from step 6.3. If not, follow steps in step 6 to enable it.

  • On personal computer, open terminal and type:
$ ssh pi@

format is: $ ssh username@ip_address

It will prompt you for password to username ‘pi’

  1. Disable screen-saver.

Install xscreensaver.

 $ sudo apt-get install xscreensaver
 $ sudo reboot

Navigate to the ‘Start’ menu and click Preferences > Screensaver.

In the drop down, you can select ‘Disable Screensaver’.

  1. Install Raspbian version of Firefox called Iceweasel
$ sudo apt-get install iceweasel
  1. Open Firefox from ‘Start’ menu > Internet
  • Navigate to the website you want to display
  • Bookmark and set as home page

More info here:

  1. Make browser full-screen