Skip to content

Instantly share code, notes, and snippets.

View sohang3112's full-sized avatar
:octocat:

Sohang Chopra sohang3112

:octocat:
View GitHub Profile
@sohang3112
sohang3112 / default_dict_implementation.py
Last active February 25, 2025 21:50
Re-implementing DefaultDict (from Python standard library) using __missing__ dunder method
"""Using dict __missing__() to implement DefaultDict."""
from typing import Any, Callable
class DefaultDict(dict):
"""Implementing typing.DefaultDict.
A dict that returns a default value (instead of raising KeyError) when a key is missing.
>>> d = DefaultDict(list, {'a': 1, 'b': 2})
>>> d['a']
@sohang3112
sohang3112 / indian_population_estimate_regression.ipynb
Created December 4, 2024 03:45
Regression (assuming exponential population growth) Indian population size as of 2021 (since last census was in 2011)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@sohang3112
sohang3112 / github_push_hanged.md
Created October 11, 2024 02:49
Bugfix: Github push (ssh) hanged

Problem

git push and git pull hanged (using SSH url).

Investigation

  • Enable tracing in git to check what's wrong:
$ GIT_TRACE=1 git push
trace: built-in: git push
trace: run_command: unset GIT_PREFIX; ssh [email protected] 'git-receive-pack '\''sohang3112/machine-learning-practice.git'\'''
trace: start_command: /usr/bin/ssh [email protected] 'git-receive-pack '\''username/repo.git'\'''
@sohang3112
sohang3112 / intset.py
Last active August 22, 2024 07:02
Efficient set of integers, maintained using bit shift operations on an integer.
from __future__ import annotations
from typing import Iterable
class IntSet:
"""
Efficiently store integers in a set - internally uses bit shift operations.
NOTE: len() isn't supported - instead cast to list first: len(list(intset))
>>> IntSet(0b10011) # Set of all the bits which are set to 1 (using 1-based bit indexing)
@sohang3112
sohang3112 / html_attributes.hs
Created August 22, 2024 05:59
Simple Haskell function to handle HTML attributes that may or may not have a value specified.
-- Simple function to handle HTML attributes that may or may not have a value specified.
import qualified Data.Map as Map
import Data.Map (Map)
-- HTML Property Key | Value
type Prop k v = Either k v
key = Left
val = Right
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@sohang3112
sohang3112 / pandas_time_series_notes.ipynb
Created August 16, 2024 15:19
Example of working with Time Series in Pandas
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@sohang3112
sohang3112 / wordcloud.py
Last active July 26, 2024 09:13
Draw wordcloud in Python
from collections import Counter
from io import BytesIO
import os
# Optional: If you already downloaded NLTK resources at a non-standard location
# Espcially useful in case of AWS Lambda - you can put already downloaded nltk resources in layer and use in AWS Lambda
# Here path = /opt because that's where AWS Lambda puts all Layer contents
# ALREADY_DOWNLOADED_NLTK_PATH = '/opt'
ALREADY_DOWNLOADED_NLTK_PATH = None # nltk resources not already downloaded, to download

Zeromq example in Haskell

Zeromq client & server example in Haskell using zeromq4-haskell package (a Haskell wrapper over libzmq).

NOTE: In 2023 my PR was merged that added this Haskell example to zeromq.org website. But it doesn't show yet on zeromq.org website because the site owner hasn't yet updated the site according to the latest changes in its Github repo. You can also see the below example client & server in the Zeromq Github repository.

Server

@sohang3112
sohang3112 / onedrive_linux_sync.md
Last active June 29, 2024 05:50
OneDrive sync in Linux

Sync OneDrive in Linux

Using the official OneDrive Linux client:

$ sudo dnf install -y onedrive               # or "apt install", etc. - depends on distro
$ onedrive                                   # gives a link, open it in browser to login to OneDrive
$ onedrive --synchronize                     # sync files to ~/OneDrive ; downloading files first time takes some time
$ systemctl enable onedrive@<username>.service --now        # sync automatically in background

Check more on its usage in the docs.