DhirenGala / programming-resources

A curated collection of programming and computation resources

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Programming Resources

A collection of programming resources that help me manage my imposter syndrome being paid to program (I have a chemical engineering background).

These are my personal notes - you will often find my notes and summaries alongside links to articles.

Fundamentals Course

Hidden inside these notes are teaching materials:

I also maintain similar collections on reinforcement learning and machine learning.

Music to Program To

Project Audio for GitHub - tracks events happening across GitHub and converts them to music.

Listen to Wikipedia - real-time visualization and sonification of Wikipedia activity.

musicForProgramming

What Every Programmer Should Know

Memory - HN discussion

What every computer science major should know

Articles

The Yoda of Silicon Valley

Overlooked No More: Alan Turing, Condemned Code Breaker and Computer Visionary

The Friendship That Made Google Huge - Jeff Dean and Sanjay Ghemawat

How Data (and Some Breathtaking Soccer) Brought Liverpool to the Cusp of Glory

A Unicorn Lost in the Valley, Evernote Blows Up the ‘Fail Fast’ Gospel

Why Google+ Failed

When Larry Met Sergey

Cities: Skylines is Turing Complete

How Notion pulled itself back from the brink of failure

Blogs

localghost

rachelbythebay

https://www.netmeister.org

Matt Might

Hillel Wayne

Proper Fixation

Haki Benita

Cat on Mat

dwmkerr.com

The Clean Code Blog - Robert C. Martin (Uncle Bob)

Code by Kate Rose Morley

Justin Meiners

koaning.io - Vincent D. Warmerdam

The Digital Cat

Random Cool Stuff

RosettaGit - solutions to the same task in as many different programming languages.

Screenshots from developers & Unix people (2002)

Screenshots from developers: 2002 vs. 2015

At what time of day do famous programmers work?

The challenges of teaching software engineering

Linus Torvalds on C++

The Honeypot documentaries on Ember.js, Vue.js & GraphQL.

List of software development philosophies - Wikipedia, including Rubber duck debugging.

dwmkerr/hacker-laws - Laws, Theories, Principles and Patterns that developers will find useful.

Richard Hamming - You and Your Research Lecture

The Architecture of Open Source Applications - Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's successes.

Do call yourself a programmer, and other career advice

Don't Call Yourself A Programmer, And Other Career Advice

Software Development Waste - Hacker News discussion

Building the wrong product

  • product that does not address user business needs
  • not doing research on users or businesses
  • ignoring feedback, low user value features

Mismanaging backlog

  • duplicating work, low value features, delaying bug fixes
  • working on too many features simultaneously, imbalance of feature work and bug fixing, delaying testing or critical bug fixing

Rework

  • altering delivered work that should have been done correctly
  • no clear definition of done

Unnecessarily complex solutions

  • a more complicated solution than necessary
  • a missed opportunity to simplify features, user interface, or code
  • unnecessary feature complexity from the user’s perspective
  • unnecessary technical complexity
  • duplicating code, lack of interaction design reuse, overly complex technical design created up-front

Extraneous cognitive load

  • the costs of unneeded expenditure of mental energy
  • suffering from technical debt,
  • inefficient tools and problematic APIs, libraries, and frameworks
  • unnecessary context switching
  • inefficient development flow
  • poorly organized code

Psychological distress

  • burdening the team with unhelpful stress
  • low team morale
  • rush mode
  • interpersonal or team conflict

Waiting/multitasking

  • cost of idle time, often hidden by multi-tasking
  • slow tests or unreliable tests
  • unreliable acceptance environment
  • missing information, people, or equipment
  • context switching from delayed feedback

Knowledge loss

  • cost of re-acquiring information that the team once knew
  • team churn
  • knowledge silos

Ineffective communication

  • incomplete, incorrect, misleading, inefficient, or absent communication
  • team size too large
  • asynchronous communication - distributed teams/stakeholders, opaque processes outside team
  • imbalance - dominating the conversation; not listening
  • Inefficient meetings (lack of focus; skipping retros; not discussing blockers each day; meetings running over (e.g. long stand-ups))

History of programming

The A-Z of Programming Languages

History of Infra as Code - talk about history of cloud services, Docker etc

History of Programming Language Conference

An opinionated history of programming languages

Is It Time to Rewrite the Operating System in Rust? - Bryan Cantrill - 2018

Why Isn't Functional Programming the Norm? – Richard Feldman - 2019

Why does "=" mean assignment? - Hillel Wayne

Courses

Open Source Society University - Computer Science

The Good Research Code Handbook

Developer Roadmaps - Python, React, backend, frontend.

6.005 Software Construction - course homepage - notes - introduces fundamental principles and techniques of software development - how to write software that is safe from bugs, easy to understand, and ready for change.

Systematic Program Design - video lectures.

calmcode.io - video tutorials for modern ideas and open source tools (mostly Python)

ines/course-starter-python - course framework for spaCy

./missing-semester - gain proficiency with computing systems (shell, editor, version control) - notes - lecture videos

Introduction to Computer Science and Programming in Python - lecture videos - course home page

Teach Yourself Computer Science

Computer Science from the Bottom Up

CS360 -- Systems Programming, and the module on Memory.

Code Challenges

codewars

coderbyte

HackerRank

Books

A Mind at Play: How Claude Shannon Invented the Information Age

Hello, Startup: A Programmer's Guide to Building Products, Technologies, and Teams - Yevgeniy Brikman

The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World (2015 book) - Pedro Domingos

Algorithms to Live By: The Computer Science of Human Decisions - Christian & Griffiths

Textbooks

Clean Architecture: A Craftsman's Guide to Software Structure and Design - Robert C. Martin

Introduction to High-Performance Scientific Computing - Victor Eijkhout

Podcasts

Lex Fridman Podcast

Talk Python To Me

Presentable - how we design and build the products that are shaping our digital future

Humor

After being in a data science/ developer role for the better part of a decade, here is how companies REALLY develop software and AI/ML applications

About

A curated collection of programming and computation resources


Languages

Language:Python 86.6%Language:Assembly 4.7%Language:Makefile 3.9%Language:C 2.4%Language:Shell 2.3%