It’s time for cool news at CodersRank ✨

During the last few weeks, we’ve buckled down to solve two critical pain points for our developer community:

  1. Making it as easy as possible to include code from your private repositories into your CodersRank score
  2. Enabling seamless, developer-friendly communication with recruiters via CodersRank

Without further ado, here is what we’ve delivered 👇

Jump to your favorite feature:

Repo Info Extractor 2.0

By default, your CodersRank score is calculated based on your code from public repositories. Via our Repo Info Extractor, you can let us access and evaluate your private repo contributions, so they can be tallied to your score.

We’ve received a lot of feedback about the first version of our Repo Extractor. The Python implementation was slow and difficult to use, especially without prior experience in this language.

In the old implementation, we relied a lot on file operations. In order to analyze all the committed code we did the following:

  1. First, we made a copy of the repository to a temporary directory.
  2. Started to iterate through all the commits in all the branches to get the commit stats (number of lines changed, author, commit date, is it a merge commit).
  3. For the next step, we had to find the commits for the given authors’ emails. To do this we had to iterate through on all the commits again.
  4. Check out the given version of the code for all commits of the author 
  5. Read each file from the disk that was changed in the commit to detect the used libraries.

As you can see it requires a bunch of disk operations. Especially the check-out part (git checkout commit_hash).

What did we do to improve the performance?

1. We used Go. Analyzing the repo is very CPU intensive. Go is much faster than Python. Except working with regexes which are also part of the repo_info_extractor but overall it is still faster to use Go.

2. We realized in order to get the content of the file in a given version we don’t have to check out. Git is like a database and with a simple command git show commit_hash filename we can get any version of the file. So it is not required to make a temporary copy and check out the commits. The new script does 0 write operations in order to analyze the code.

3. Previously we analyzed all the commits in all the branches. Of course, there are a lot of duplicated commits in the branches we had to detect, and merge commits needed to be ignored. Git has a simple command to do exactly the same: git log --all --no-merges.

4. The Python script relied on the GitPython library which had significant overhead. In the new implementation, we use the git CLI and parse the output.

Benchmark

Let’s see how these optimizations improved the speed 👇

Repo nameOld script ⏲️New script ⏲️
github.com/microsoft/vscode1586 sec28 sec
github.com/expand/eXpand515 sec8 sec
github.com/vuejs/vue201 sec6 sec
Total time (all repos)2032 sec42 sec

Speed improvements in the new script vs the old one

Moreover, now you can just download the repo extractor file and use it right away, without having to install all the dependencies. It will remain open-source so you can look under the hood and understand how it works.

What about data security? Private repos are private for a good reason. We access strictly the number of inserted and deleted lines in each commit. All other information such as URLs, file names, emails, etc. is hashed. So, for instance, we know if the two commits belong to the same file but we won’t know the file name.

Moreover, the extractor’s output is saved to your machine so you can check what data is extracted and decide whether you want to share it with us. 

Have an idea or question about the Repo Info Extractor 2.0? Reach out to us via the CodersRank Slack Community or our forum.

Run into an issue with our Repo Extractor? Report it via GitHub.

In-app Messaging

As a developer on CodersRank, you’ll now receive messages directly from recruiters in your inbox on our platform.

On CodersRank, recruiters provide all the information about the job upfront, including company name, job title, location, and required tech stack. This way, you can avoid fluff messages and generic introductions.

You can indicate your interest or reject a message in just one-click.

Accept and reject job offers in one-click

Why it’s done this way: According to our 2021 Developer Job Search Preference Survey, 82% of developers want to see a direct proposal about a position in their inbox. Our messaging system is built exactly with that in mind.

Got a job offer that ticks all the boxes? You can continue your conversation with the recruiter via CodersRank. All accepted messages are stored in the ‘Interested’ tab in your inbox. Keep checking your inbox for the latest job offers from awesome new employers who’re joining CodersRank each week!

If you’ve rejected the offer, we ask for a few lines of feedback in order to improve the quality of your future offers.

Share your feedback about job offers you receive

After the rejection, the message thread will automatically expire in 14 days. Recruiters will not be able to message you after the thread has expired. As a developer, you have full control and can re-open the thread at any time.

As a developer, you can re-engage with recruiter anytime


Are you receiving too many or too few messages on CodersRank? Here are some easy fixes:

  • Get fewer messages. Change your job interest status to ‘Inactive’
  • Get more messages. Set your job interest status to ‘Active’ and use suggestions from our Profile Completion Wizard to complete your profile. The closer you get to 100% completion rate, the higher are your chances to get more visibility with recruiters.
Get more messages on CodersRank by using suggestions from our Profile Completion Wizard

More Useful Resources for You


I hope you’ll enjoy our new features and reap all the benefits to showcase the real you and find your dream dev job 👇

Author

CTO & founder of @CodersRank, the very same website you are looking at. Back-end developer, father, sports man, author of an e-book and audiobook, creator of an online interview platform. Avid gamer when time allows. | CodersRank: Our goal is supporting CODERS growth by their always up to date, professional CodersRank profile.

Write A Comment