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:
- Making it as easy as possible to include code from your private repositories into your CodersRank score
- 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:
- First, we made a copy of the repository to a temporary directory.
- 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).
- 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.
- Check out the given version of the code for all commits of the author
- 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.
Let’s see how these optimizations improved the speed 👇
|Repo name||Old script ⏲️||New script ⏲️|
|github.com/microsoft/vscode||1586 sec||28 sec|
|github.com/expand/eXpand||515 sec||8 sec|
|github.com/vuejs/vue||201 sec||6 sec|
|Total time (all repos)||2032 sec||42 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.
Run into an issue with our Repo Extractor? Report it via GitHub.
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.
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.
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.
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.
More Useful Resources for You
- CV Generator
- CodersRank Widgets
- Article: The Ultimate Question Developers Should Ask at an Interview
- Article: How to Create a STUNNING Developer Website in Unders 60 Mins for FREE
I hope you’ll enjoy our new features and reap all the benefits to showcase the real you and find your dream dev job 👇