I’ve been having a lot of fun with doing coding challenges on https://exercism.io/ again. Man, have they improved the whole experience! AND they have a mentor track!

I’ve been doing the JavaScript and Typescript tracks through the mentoring program, and then Python on the practice track so I can just submit my solutions once I get my unit tests passing.

It was taking so long to get a response on the JavaScript track that I decided to join as a mentor too. It’s been really great helping others troubleshoot their solutions and the two-way feedback has been so rewarding.

It takes some time to set up and install on your local machine, but they have really good documentation for all the OS platforms. I highly recommend checking them out and doing coding exercises to practice for those technical interviews. It’s also great for learning a new language!

Wargames: Security Fun!

This site was shared with me today where you can practice your security chops and learn about web vulnerabilities: http://overthewire.org/wargames/natas/

I’ve got to natas3 so far and it’s super fun!! You don’t need anything except a browser and internet access to complete the challenges. No need to SSH. Try it out and see how far you can get. They have an IRC channel for questions/comments when working through the challenges.

Good luck!

Laptop Setup

I just recently changed companies and am trying to set up my laptop as I had it before. Unfortunately, I didn’t write down anything I had previously installed. This is a list of what I have had to install on my new work computer for future reference.

On a Macbook Pro laptop:

On Android mobile:

  • Authy – for 2 factor auth
  • Evernote
  • Slack
  • Zoom
  • Jira

To Be Continued….

Relative URLs in Jekyll

Found this great resource that explains how to create dynamic paths when linking your images in your layouts: https://travis.media/how-to-add-images-in-jekyll-posts-with-relative-links

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: https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/info

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 https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

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 interviewing.io, 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 Computer Science fresh graduate can make $70,000-80,000 per year. A mid-level can make $75,000-100,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. Look on Glassdoor and search for the company you are interested in to see what their average salary is for an Engineer. 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.

Things you can negotiate: Salary, Bonus, Vacation days (avg for entry level is 10 days aka 2 weeks. Always aim for 3).

If a company doesn’t offer 401k match, then ask for a higher salary. If a company has high insurance rates, low vacation days, ask for a higher salary.

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!