DEV Community

Cover image for I spent a week offline here is how I stayed productive
Bhupesh Varshney ๐Ÿ‘พ
Bhupesh Varshney ๐Ÿ‘พ

Posted on • Updated on • Originally published at bhupesh.codes

I spent a week offline here is how I stayed productive

Hi there, its been a long time since I have written something here.
I hope all of you are in good health ๐Ÿ’ช.

This post was originally written here

Backstory

My Internet was affected recently due to some unforseen reasons, this means that I was completely offline (i.e no texting, no memes & no git push ๐Ÿ˜ญ).

I was afraid this will hinder my work & stop my learning but as it turns out, my past decisions somehow saved me.
I actually have this habit of downloading & saving useful PDFs (Books to be specific) & never read them again ๐Ÿ™ˆ, so I had started organising them under proper categories.

I started looking for these "PDFs" on my PC & after 15 mins of searching here is how the goldmine of info. looks like

PDF-Learning
โ”œโ”€โ”€ Algorithms & Data Structures
โ”‚ย ย  โ”œโ”€โ”€ Algorithms for dummies.pdf
โ”‚ย ย  โ”œโ”€โ”€ AlgorithmsNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ CLRS.pdf
โ”‚ย ย  โ””โ”€โ”€ Competitive Programming.pdf
โ”œโ”€โ”€ C++
โ”‚ย ย  โ”œโ”€โ”€ Accelerated C++.pdf
โ”‚ย ย  โ”œโ”€โ”€ A Tour of C++ - Bjarne Stroustrup (Addison-Wesley, 2018).pdf
โ”‚ย ย  โ”œโ”€โ”€ C-- 11.pdf
โ”‚ย ย  โ”œโ”€โ”€ C++14 syntax reference.pdf
โ”‚ย ย  โ”œโ”€โ”€ C++ Game Development Book.pdf
โ”‚ย ย  โ”œโ”€โ”€ C++ GUI Programming with QT4, Second Edition.pdf
โ”‚ย ย  โ”œโ”€โ”€ C++ Interview Questions.pdf
โ”‚ย ย  โ”œโ”€โ”€ C++ NotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ cpp-best-practices.pdf
โ”‚ย ย  โ”œโ”€โ”€ cpplambda_preview_25th_march_2019.pdf
โ”‚ย ย  โ”œโ”€โ”€ C++ standard library reference.pdf
โ”‚ย ย  โ”œโ”€โ”€ C++ STL_ReferenceManual.pdf
โ”‚ย ย  โ””โ”€โ”€ History_of_C++.pdf
โ”œโ”€โ”€ Computer Vision
โ”‚ย ย  โ”œโ”€โ”€ OpenCV_Computer_Vision_with_Python_-eBook-.pdf
โ”‚ย ย  โ””โ”€โ”€ opencv-python-tutroals.pdf
โ”œโ”€โ”€ dotNET
โ”‚ย ย  โ”œโ”€โ”€ complete-reference-vb_net.pdf
โ”‚ย ย  โ”œโ”€โ”€ DotNETFrameworkNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ Intro to VB.NET.pdf
โ”‚ย ย  โ”œโ”€โ”€ vb.net_tutorial.pdf
โ”‚ย ย  โ””โ”€โ”€ VisualBasic_NETNotesForProfessionals.pdf
โ”œโ”€โ”€ GNU Octave
โ”‚ย ย  โ”œโ”€โ”€ Jesper Schmidt Hansen - GNU Octave for Beginners.pdf
โ”‚ย ย  โ”œโ”€โ”€ octave.pdf
โ”‚ย ย  โ”œโ”€โ”€ octave_tutorial_coursera.pdf
โ”‚ย ย  โ””โ”€โ”€ rob2-03-octave.pdf
โ”œโ”€โ”€ HTML5 & CSS
โ”‚ย ย  โ”œโ”€โ”€ book.pdf
โ”‚ย ย  โ”œโ”€โ”€ Bootstrap
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Bootstrap-Programming-Cookbook.pdf
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ bootstrap_tutorial.pdf
โ”‚ย ย  โ”œโ”€โ”€ CSS 3.pdf
โ”‚ย ย  โ”œโ”€โ”€ cssanimation-101.pdf
โ”‚ย ย  โ”œโ”€โ”€ CSSNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ css_tutorial.pdf
โ”‚ย ย  โ”œโ”€โ”€ cssvisualdictionary2ND.pdf
โ”‚ย ย  โ”œโ”€โ”€ cssvisualdictionary.pdf
โ”‚ย ย  โ”œโ”€โ”€ HTML5NotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ html5_tutorial.pdf
โ”‚ย ย  โ””โ”€โ”€ wsu-css-cheat-sheet.pdf
โ”œโ”€โ”€ JS
โ”‚ย ย  โ”œโ”€โ”€ AJAX
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Ajax.pdf
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ ajax_tutorial.pdf
โ”‚ย ย  โ”œโ”€โ”€ Angular JS
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ AngularJSNotesForProfessionals.pdf
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ angularjs_tutorial.pdf
โ”‚ย ย  โ”œโ”€โ”€ javascriptgrammar-dark.pdf
โ”‚ย ย  โ”œโ”€โ”€ javascriptgrammar-II.pdf
โ”‚ย ย  โ”œโ”€โ”€ javascript-handbook.pdf
โ”‚ย ย  โ”œโ”€โ”€ Javascript JSON and Ajax v2.pdf
โ”‚ย ย  โ”œโ”€โ”€ JavaScriptNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ Javascript.pdf
โ”‚ย ย  โ”œโ”€โ”€ javascript_tutorial.pdf
โ”‚ย ย  โ”œโ”€โ”€ jQuery
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ jQueryNotesForProfessionals.pdf
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ jQuery.pdf
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ jquery_tutorial.pdf
โ”‚ย ย  โ”œโ”€โ”€ Node JS
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Learning Node.pdf
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ NodeJSNotesForProfessionals.pdf
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Node js.pdf
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ nodejs_tutorial.pdf
โ”‚ย ย  โ”œโ”€โ”€ react-in-action.pdf
โ”‚ย ย  โ”œโ”€โ”€ ReactJSNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ ReactNativeNotesForProfessionals.pdf
โ”‚ย ย  โ””โ”€โ”€ You Don t Know JS by Kyle Simpson.pdf
โ”œโ”€โ”€ Linux
โ”‚ย ย  โ”œโ”€โ”€ BashNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ Kali Linux Revealed.pdf
โ”‚ย ย  โ”œโ”€โ”€ Linux Command line.pdf
โ”‚ย ย  โ””โ”€โ”€ LinuxNotesForProfessionals.pdf
โ”œโ”€โ”€ Machine Learning & Deep Learning
โ”‚ย ย  โ”œโ”€โ”€ A Beginners Guide to the Mathematics of Neural Networks.pdf
โ”‚ย ย  โ”œโ”€โ”€ An Introduction to Machine Learning.pdf
โ”‚ย ย  โ”œโ”€โ”€ Chapman_ _Hall_Crc_Machine_Learning.pdf
โ”‚ย ย  โ”œโ”€โ”€ Deep Learning for NLP.pdf
โ”‚ย ย  โ”œโ”€โ”€ [Harrington_P.]_Machine_learning_in_action(BookZZ.org).pdf
โ”‚ย ย  โ”œโ”€โ”€ Introduction to ml+time series.pdf
โ”‚ย ย  โ”œโ”€โ”€ Logistic Regression.pdf
โ”‚ย ย  โ”œโ”€โ”€ Machine Learning For Dummies.pdf
โ”‚ย ย  โ”œโ”€โ”€ master_machine_learning_algorithms.pdf
โ”‚ย ย  โ”œโ”€โ”€ Mathematics for ML.pdf
โ”‚ย ย  โ”œโ”€โ”€ MLND+2-Term+Syllabus.pdf
โ”‚ย ย  โ”œโ”€โ”€ Ng_MLY01_13.pdf
โ”‚ย ย  โ”œโ”€โ”€ PYTHON_DEEP_LEARNING.pdf
โ”‚ย ย  โ””โ”€โ”€ SLR_Leastsquares.pdf
โ”œโ”€โ”€ Python
โ”‚ย ย  โ”œโ”€โ”€ Django
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Aratyn T. - Building Django 2.0 Web Applications - 2018.pdf
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ djangoapibook.pdf
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ djangobook.pdf
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ django_cheatsheet.pdf
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ django-intro.pdf
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Django Projects Blueprint.pdf
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ Leanpub.Tango.With.Django.pdf
โ”‚ย ย  โ”œโ”€โ”€ LPTHW.pdf
โ”‚ย ย  โ”œโ”€โ”€ Modern Python Cookbook.pdf
โ”‚ย ย  โ”œโ”€โ”€ Python for Informatics.pdf
โ”‚ย ย  โ”œโ”€โ”€ PythonNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ Python Web Scraping
โ”‚ย ย  โ”‚ย ย  โ”œโ”€โ”€ Python Web Scraping - Second Edition [eBook].pdf
โ”‚ย ย  โ”‚ย ย  โ””โ”€โ”€ scrapy_tutorial.pdf
โ”‚ย ย  โ””โ”€โ”€ Violent Python.pdf
โ”œโ”€โ”€ Special
โ”‚ย ย  โ”œโ”€โ”€ AndroidNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ AN INTENSIVE\012INTRODUCTION TO\012CRYPTOGRAPHY.pdf
โ”‚ย ย  โ”œโ”€โ”€ Computer Networking.pdf
โ”‚ย ย  โ”œโ”€โ”€ Getting_Started_with_Go_for_Data_Structures_and_Algorithms.pdf
โ”‚ย ย  โ”œโ”€โ”€ GitNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ good_concepts.pdf
โ”‚ย ย  โ”œโ”€โ”€ HackerRank_Checklist-for-Screening-Back-End-Developers.pdf
โ”‚ย ย  โ”œโ”€โ”€ HackerRank_Checklist-for-Screening-DevOps.pdf
โ”‚ย ย  โ”œโ”€โ”€ HackerRank_Checklist-for-Screening-Front-End-Developers.pdf
โ”‚ย ย  โ”œโ”€โ”€ HackerRank_Checklist_Screening-Full-Stack.pdf
โ”‚ย ย  โ”œโ”€โ”€ HackerRank-Junior-Senior-Developer-Hiring-Checklist.pdf
โ”‚ย ย  โ”œโ”€โ”€ Hackers Underground.pdf
โ”‚ย ย  โ”œโ”€โ”€ How_to_earn_10_000_while_learning_to_code_-_3rd_Edition.pdf
โ”‚ย ย  โ”œโ”€โ”€ iOSNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ Matters Computational.pdf
โ”‚ย ย  โ”œโ”€โ”€ MongoDBNotesForProfessionals.pdf
โ”‚ย ย  โ”œโ”€โ”€ PowerShellNotesForProfessionals.pdf
โ”‚ย ย  โ””โ”€โ”€ Rest API.pdf
โ””โ”€โ”€ Unclassified Programming Languages
    โ”œโ”€โ”€ CSharpNotesForProfessionals.pdf
    โ”œโ”€โ”€ HaskellNotesForProfessionals.pdf
    โ”œโ”€โ”€ JavaNotesForProfessionals.pdf
    โ”œโ”€โ”€ KotlinNotesForProfessionals.pdf
    โ”œโ”€โ”€ ObjectiveCNotesForProfessionals.pdf
    โ”œโ”€โ”€ php_tutorial.pdf
    โ”œโ”€โ”€ RubyOnRailsNotesForProfessionals.pdf
    โ””โ”€โ”€ SwiftNotesForProfessionals.pdf

19 directories, 120 files

Enter fullscreen mode Exit fullscreen mode

Well ofc I utilised this off-time to start reading some of them.
In this post I share some of the interesting things I got to know through these, This post is going to be quiet long ๐Ÿ™ƒ, so if you are not that patient you can jump to conclusion which suggests my 3 Takeaways from this post.

Otherwise, sit back pick up some โ˜•
Below is a day-wise journal of some interesting things I learned & did over these 7 days.

Day 0 : Linux is ๐Ÿ’›

  • Well we all know that cat command right ? it is used to display contents of any file, fine ! But do you know, we also have a tac command which is also used to display contents of a file but in reverse order.
$ cat butwhy.sh 
This is first line.
And
This is second line.
And you know what
This is the 3rd line.

$ tac butwhy.sh  
This is the 3rd line.
And you know what
This is second line.
And
This is first line.
Enter fullscreen mode Exit fullscreen mode
but why ?
  • pwd, seems familiar prints the current working directory. but it has a sister command called pwdx. It is used to print current working directory of a currently running process.
$ sudo pwdx 997 # process id
[sudo] password for bhupesh: 
997: /
# this is the root prcess
Enter fullscreen mode Exit fullscreen mode
  • Do you guys are sometimes confused with the Linux file system hierarchy ๐Ÿค” looking online for what a folder contains is NOT a solution. Go to your termial and type
man hier
Enter fullscreen mode Exit fullscreen mode

This will print a description of the filesystem hierarchy
Also a similar command to print a less verbose version of FS hierarchy is

man file-hierarchy
Enter fullscreen mode Exit fullscreen mode
  • I know this might kinda feel dumb, but i didn't know we had a simple version control in Linux built-in, running the diff command prints the difference between 2 files.

  • tr, lets you translate squeeze, and/or delete characters from standard input & write them to standard output.
> ls | tr a-z A-Z
ALGORITHMS & DATA STRUCTURES
C++
COMPUTER VISION
DOTNET
GNU OCTAVE
HTML5 & CSS
JS
LINUX
MACHINE LEARNING & DEEP LEARNING
PYTHON
SPECIAL
UNCLASSIFIED PROGRAMMING LANGUAGE
Enter fullscreen mode Exit fullscreen mode

The above command just translates all lowercase file names to uppercase, note that filenames are not changed.

Day 1 : Javascript is nice ๐Ÿ‘Œ

This day I started reading javascriptgrammar, some of the interesting things i didn't know (mind you I am not a JS programmer, but I write it sometimes)

  • Symbol() The Symbol provides a way to define a completely unique key. It doesnโ€™t have a constructor and cannot be initialized using new keyword. An assignment to Symbol will create a new symbol with a unique ID.
// Simple symbol
const newSymbol = Symbol();
typeof newSymbol === 'symbol' // true
// A symbol with a label
const anotherSymbol = Symbol("label");
// Each symbol is unique
const yetAnotherSymbol = Symbol("label");
yetAnotherSymbol === anotherSymbol; // false

Enter fullscreen mode Exit fullscreen mode

One of the use case of symbol that it can be used to create private object properties

  • console.time() & console.timeEnd() This is not related to JS directly but the console API lets you time how long a piece of code executes.

  • File API You can read files in Javascript by using the FileReader()
<input type="file" id="upload">

<script type="text/javascript">
document.getElementById('upload').addEventListener('change', readFileAsString)
function readFileAsString() {
    var files = this.files;
    if (files.length === 0) {
        console.log('No file is selected');
    return;
    }
    var reader = new FileReader();
    reader.onload = function(event) {
        console.log('File content:', event.target.result);
    };
    reader.readAsText(files[0]);
}
</script>
Enter fullscreen mode Exit fullscreen mode

I also learned these 2 cool tricks in linux.

  • Builtin debugger for shell scripts (well kinda) You can see execution of each statement in a shell script by using the -x flag while invoking the script via bash
bash -x hello.sh
Enter fullscreen mode Exit fullscreen mode
  • To print your PC Hardware info in a nice readable format you can pass the -html flag in lshw (list hardware) command
sudo lshw -html > myhardware.html
Enter fullscreen mode Exit fullscreen mode

Day 2 : HTML5 is ๐Ÿ˜ฎ

This day I had a look in HTML5 Notes For Professionals and damn I don't know HTML now.

  • You can tell the browser to prefetch a URL so that it can be loaded more quickly.
<link rel="prefetch" href="">
Enter fullscreen mode Exit fullscreen mode
  • You can validate user input by using patterns within HTML (kinda looks like regex)
<input pattern="\d*" title="Only Numbers">
Enter fullscreen mode Exit fullscreen mode

  • We can sandbox (isolate) an iframe and restrict things an iframe is allowed to execute by using the sandbox attribute. Using this, the contents of the iframe are treated as being from a unique origin and features including scripts, plugins, forms and popups will be disabled.
<iframe sandbox src="http://example.com/"></iframe>

<!-- To allow the page to run scripts & form submission -->
<iframe sandbox="allow-scripts allow-forms" src="http://example.com/"></iframe>
Enter fullscreen mode Exit fullscreen mode

Day 3 : Python is ๐Ÿ”ฅ

This day I explored Python Notes For Professionals

this day I have also started writing the 1st draft of this post.

Some interesting things that I learned this day:

  • The heapq library lets you find n largest or smallest numbers in an iteratable.

>>> import heapq
>>> mylist = [120, -34, 0, 56, 444, 78]
>>> heapq.nlargest(2, mylist)
[444, 120]
# notice the order
>>> heapq.nsmallest(3, mylist)
[-34, 0, 56]
>>> 

Enter fullscreen mode Exit fullscreen mode

This can be very useful for those who for say do competitive programming in python ๐Ÿ™ƒ

  • Python's Default JSON Pretty Printer, You can invoke the json.tool from command line to pretty print a json file
python -m json.tool journal.json

# sample output :)
{
    "journal": [
        {
            "day0-activity": "I slept"
        },
        {
            "day1-activity": "I slept"
        },
        {
            "day2-activity": "I watched Avengers Endgame"
        }
    ]
}

Enter fullscreen mode Exit fullscreen mode

Tip ๐Ÿšฉ

You can also use the pprint package to prettify things on console.

  • Want to input sensitive info. at command line, don't worry Python's default library has something for you. The getpass module lets you take input from user without echo'ing it to the terminal/screen.
>>> from getpass import getpass
>>> pass_in = getpass()
Password: 
>>> pass_in
'iwonttellu'
>>> 
Enter fullscreen mode Exit fullscreen mode

Day 4 : Turn the PC off

I didn't use my PC this day, but I read this book called CodeComplete 2

Again, a previous decision saved me

I read some Software Design Characteristics, here are a few which I understood.

  • Minimize Complexity Creating easy to understand designs is the key. Using designs which are not easily understood defeats the whole purpose of creating and applying Software Design Concepts.

I recently read somewhere that Netflix's Architecture is so complex that no one person can explain/describe it completely.

Source: A random YouTube video

  • Reusability/Extensibilty

    Make sure to write code in dedicated classes/modules/packages so that someone (or you) can easily extend them sometime in future.

    The best example of this is how the FOSS community has grown over these years by creating things which use reusable components or are extended from each other. Most (i bet 80%) of the popular technologies you use are somehow using OpenSource software thus enabling reusability.

  • Loose Coupling

    Coupling means how different programs/classes are connected together. Coupling should be minimum because it minimizes work during intergration, testing & maintenance.

Soo far trying to do this, I think it is atleast a bit hard for beginners,

  • Portability It means what it spells, a system should be designed (& developed) so that it can be ported to a different environment easily.

For e.g you can start simply by structuring your code well, developing in Virtual Environments or use more fancier alternatives like docker.

Day 5 : The execution ๐Ÿ‘ท day

  • You remember the tac command we learned on Day 0 ? here is a simple implementation of the same in python
#!/usr/bin/env python3

"""Simple implementation of tac"""
import sys


def main():
    if sys.argv[1] is not None:
        with open(sys.argv[1], "r") as fp:
            file = fp.readlines()
        file.reverse()
        for line in file:
            print(line, end='')


if __name__ == '__main__':
    main()

Enter fullscreen mode Exit fullscreen mode

A sample run

> python3 tac.py hello.sh
expr 2 + 2
echo "Hello World"
> tac hello.sh           
expr 2 + 2
echo "Hello World"
>
Enter fullscreen mode Exit fullscreen mode
  • Do you remember that we discovered the FileReaderAPI in Javascript on Day 1 ? I thought this is the time I need to create a pretty basic version of a Simple Notepad Here it is, and the source (i know it looks ugly)

Tip ๐Ÿšฉ

If you are on a Debian or Ubuntu based system, you can run the browse command to open files and URLs.
For ex browse https://bhupesh.codes will open my website in your default web-browser.

Day 6 : Functional Programming

This day I explored & compared functional programming concepts in C++, JS & Python.
In all these 3 languages we have some sort of methods/functions available to do the 3 basic things that generally power functional programming i.e

  • map: do(map) some operation on a set of items
  • filter: filter/return some items which match a criteria
  • reduce: reduce the set of items to a single value.

Here is a brief overview of the 3 concepts in C++ ๐Ÿ’™.

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

void print(int n){
    std::cout << n << " ";
}
int main(){

    std::vector<int> v{20, 0, -1, 100, 5};
    std::vector<int> v2, v3;

    std::cout << ".....map.....\n";
    std::cout << "for_each() demo\n";

    // map an operation on a set of elements
    for_each(v.begin(), v.end(), print);
    transform(v.begin(), v.end(), back_inserter(v2), [](int n) { return n * 2 ;});
    std::cout << "\ntransform() demo\n";
    for_each(v2.begin(), v2.end(), print);

    std::cout << "\n\n.....reduce.....\n";
    std::cout << "accumulate() demo\n";

    // reduce the elements to a single value, by default accumulate() sums all elemets, if no other operation is specified
    int sum_vector_v2 = accumulate(v2.begin(), v2.end(), 0);
    std::cout << sum_vector_v2 << "\n";

    std::cout << "\n.....filter.....\n";
    std::cout << "copy_if() demo\n";

    // filter elements which are divisible by 5
    copy_if(v2.begin(), v2.end(), back_inserter(v3), [](int a) { return a % 5 == 0; });
    for_each(v3.begin(), v3.end(), print);

    return 0;
}
Enter fullscreen mode Exit fullscreen mode

3 Takeaways

This offline time strengthen my views on few things, I summarized some of them below.

1. Be offline for a day atleast ๐Ÿ”Œ

I am sure we all have important things to do, and developers per say are always connected to the web, its time to take a break.
I have seen people taking a break from Social Media, that's great but you know what, cut-off the internet entirely & don't do any Internet related work for a day (includes no binge watching).

Relax, Meditate, Play with your pet, Practice things that you can do offline

2. Just Read ๐Ÿ“š

You by now have already seen a ton of posts telling you that reading is a good habit, everyone should do it.

They are 100% โœ…

I know not everyone likes to read but you can atleast read a chapter in 2 days, hell our ancestors used to read to impart & share knowledge.
There is also one strong reason why you should read as an aspiring dev.
For e.g. there are professional people who have clubbed their advice, suggestions & best practices into 1 big piece of thing called a "book". This book contains valuable info. that you would probably never find on Internet.

3. Keep a small journal/blog ๐Ÿ“”

Its upto you what you want to keep in this journal, you could go ahead and create a til(today i learned) repo just like me ๐Ÿ™ƒ

Bhupesh-V/til - GitHub

This also means that you should start your own blog (if you are reading this on DEV, then you are halfway there).

There are no restrictions on your blog, it doesn't needs to be 1000 words, nobody is going to bother you in any way on what you write or share, its your personal space on internet.
No problem if you are writing once a month (unless you want to earn ๐Ÿค‘ from it), as i said your blog, your choice.

Insight ๐Ÿ’ก

Over the past year my writing has improved (I started Aug 2019) & I have gain a lot just by writing for instance I am no longer confused with my project ideas and slowly I have started enjoying this.

If you have no idea what to write here are some example scenarios that might help.

  • Something you learned today.
  • Something you made (literally anything).
  • You got a job/internship & how did you got it & what helped.
  • You solved an interesting problem.
  • You helped someone.
  • Tricky bug you fixed.
  • Contributed to FOSS (how, what & why)
  • That feature that took days to implement & how did you do it.
  • List of things/tools that make your life easier (as a dev).
  • Read/Watched an interesting thing on internet (Your reaction, views, takeaways from it)

Tip ๐Ÿšฉ

If you steal or copy something from internet, try to cite the original source.

Your blog will eventually become Journal of things you learned and wanted to share with the world.

I hope you enjoyed or probably learned something. If you guys have any feedback or want to talk feel free to comment below ๐Ÿ’š.

You can reach me directly on Twitter | Telegram | Email

Top comments (1)

Collapse
 
delta456 profile image
Swastik Baranwal

Amazing! Nice way to be productive offline! I usually do all this too.