Coder Social home page Coder Social logo

Software Engineering Toolkit

Languages:

Python when possible. Often performance limitations can be handled via good algorithm selection, and careful use of the standard library/other libraries that use C under the hood. If not possible to reach needed performance via Python, look at Mojo, which may become the default choice.

Python:

  • poetry to install dependencies and handle virtual environments.
  • pyenv to manage different versions of python, and avoid using the system python.
  • pipx to install and run standalone python cli applications.

Python Libraries:

  • ruff for python linting, auto-formatting.
  • Django for full-featured backends.
  • FastAPI for standalone/simple APIs.
  • Pydantic for data validation.
  • HTTPX for making HTTP requests.
  • Pytest for testing.
  • htmx for reactive web UIs without javascript single-page apps.
  • Hypothesis for property-based testing/fuzzing.
  • Boto3 for interacting with AWS.
  • Polars for data analysis/manipulation.
  • Numpy for scientific computing.
  • tqdm for displaying progress bars.
  • matplotlib for plotting.
  • Dash for data visualization via web apps.
  • Datasette for data exploration/publishing.
  • Scrapy for web crawling/scraping.
  • BeautifulSoup for HTML parsing.
  • Pillow for image manipulation.
  • Pygame for 2d games.
  • Rich for rich text formatting in terminals.
  • Textual for TUIs (text-based user interfaces).
  • Ortools for combinatorial optimization algorithms.
  • ScikitLearn for machine learning.
  • PyTorch for deep learning.

Data:

  • PostgreSQL as default option.
  • sqlite for simpler projects.
  • redis as cache layer if needed.
  • JSON as interchange format.

Tools:

  • neovim as primary editor.
  • Pycharm for graphical debugging.
  • git for source control.
  • unix tools combined with pipes (|) to process text generally (awk, sed, wc, grep, tr, diff, uniq, sort, cut, cat, head, tail)
  • ripgrep as an improvement to grep.
  • fd as an improvement to find.
  • jq to parse and process JSON.
  • parallel for parallel execution on a single machine.
  • iterm terminal emulator.
  • zsh shell.
  • Excalidraw for diagram creation.

Problem Solving:

  • Chunk functionality together, as our working memories can handle roughly seven items.
  • Solve a related, but simpler problem.
  • State the problem clearly, and then develop incrementally.
  • Repeat tasks manually until patterns emerge and functions discover themselves.
  • Build classes independently and let inheritance discover itself.
  • Consider data structures programming as a graph-traversal problem, traveling from one "island" to another to use appropriate functionality. (strings -> lists -> dictionaries etc.)
  • Separate ETL (extract-transform-load) from analysis. Separate analysis from presentation.
  • Verify type and size of the data. View and test a subset of the data.
  • Humans should never gaze upon unsorted data.

Adapted from The Mental Game of Python Talk given by Raymond Hettinger at PyBay2019

Anand Chandran's Projects

Anand Chandran doesnโ€™t have any public repositories yet.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.