TIL: Python Collections, Git Commands, and Node.js Process

TIL 2020-08-01 Python collections.defaultdict - Takes a type not a value. It will initialize based on the default value for that type. Git Last Commit ID - git log --format="%H" -n 1 | cat outputs the last commit ID. Node.js Command Line Arguments - Node.js uses the process object to access command line arguments.

August 1, 2020 · 1 min

TIL: Python Collections, Git Commands, Juju, and EC2

Python Programming Collections Module - defaultdict collections.defaultdict takes a type not a value It will initialize based on the default value for that type Common mistake: passing a value instead of a callable type Example: defaultdict(list) not defaultdict([]) Cleaner than manually checking if keys exist before accessing Version Control Git Commands and Tricks git log --format="%H" -n 1 | cat outputs the last commit ID Useful for scripting and automation The cat ensures the output is properly formatted %H format specifier gives the full commit hash -n 1 limits to the most recent commit Cloud Infrastructure and DevOps AWS EC2 Free Tier EC2 has a Free tier! I can request a bunch of machines here Great for learning and experimenting with cloud infrastructure Limited resources but sufficient for development and testing Good entry point for understanding cloud computing concepts Juju - Multi-Cloud Orchestration Juju is a tool that helps manage server providers, whether they are GCP, AWS, your own servers or Azure, among others Gives you one way to start, setup and run your servers across different cloud providers Abstracts away cloud provider differences Enables consistent deployment across hybrid and multi-cloud environments Juju Configuration System Juju’s configurations are called charms These are written in Python Charms define how services should be deployed and configured Reusable deployment patterns for common software stacks Community-maintained charm store with pre-built configurations

August 1, 2020 · 2 min

TIL: Docker Networking Deep Dive, Julia Evans' Systems Knowledge, and Kubernetes from the Ground Up

Today I learned about Docker graph drivers and container networking, Julia Evans' excellent systems programming explanations, and comprehensive Kubernetes architecture through Kamal Marhubi's ground-up approach.

July 30, 2020 · 9 min

TIL: Linux Productivity Tools and Rust Ownership Concepts

Today I learned about Linux productivity enhancements including volume control in xmonad, mouse gestures with Fusuma, and fundamental Rust ownership principles.

July 28, 2020 · 8 min

TIL: Programming Challenges, System Tools, and Learning Resources

Today I learned about Advent of Code programming challenges, GPU hash tables, Python gotchas, Rust concurrent data structures, and various development tools and learning resources.

July 27, 2020 · 15 min

TIL: Python Collections Optimization and Linux Display Management

Today I learned about Python collections.defaultdict performance benefits, the sorted function's reverse parameter, and using arandr as a frontend for xrandr in tiling window managers.

July 26, 2020 · 14 min

TIL: Dash Application Testing and Pi-hole DNS Architecture

Today I learned about testing Dash applications with pytest and selenium, implementing Flask-Dash integration patterns, and understanding Pi-hole's FTL engine based on dnsmasq.

July 24, 2020 · 22 min

TIL: Dash Memoization, Flask-Dash Integration, and Testing

TIL 2020-07-23 Memoizing Dash Callback Responses with Flask-Caching - It’s possible to cache dash callback responses for better performance using flask-caching. Configurable Dash Registration - Always ensure that dash registration in a Flask-Dash app is configurable. You might want to skip loading dash when testing backend-only functionality. pytest-dash Status - pytest-dash has been abandoned since the official dash repository now supports Selenium testing via pytest directly.

July 23, 2020 · 1 min

TIL: Dash Testing, Docker Compose, and Python Mocking

Web Development and Testing Dash Framework Testing It is possible to memoize dash callback responses with flask-caching Dash supports response caching to improve performance Flask-caching integration allows for sophisticated caching strategies Important for optimizing callback-heavy Dash applications Flask-Dash Integration Best Practices Always ensure that dash registration in a Flask-Dash app is configurable Might want to not load dash when testing backend only Separation of concerns between backend API and frontend visualization Enables more targeted testing strategies Testing and Mocking Python Mock Module Best Practices When mocking python functions in a flask test, ensure you reference the module where the function is called, not where it originates from Common pitfall: mocking at the wrong import level Mock at the point of use, not the point of definition Critical for effective unit testing in complex applications Infrastructure and Networking Docker Compose Development Insights docker-compose has no docstrings Interesting observation about code documentation practices Even popular tools can have documentation gaps Reminder of the importance of good code documentation DNS and Network Tools Pi-hole Architecture pihole’s Faster than light engine is a fork of dnsmasq Built on proven DNS server technology Optimized for ad-blocking and DNS filtering Demonstrates how open source projects build on each other Command Line Tools argparse does support sub-commands Python’s built-in argument parsing library is more capable than often realized Enables building complex CLI interfaces with nested commands Alternative to third-party libraries like Click for simpler use cases

July 23, 2020 · 2 min

TIL: Optimizing Rust Compile Times

Today I learned about techniques to improve Rust compilation performance, including dependency management, feature flags, incremental compilation, and toolchain optimization strategies.

July 22, 2020 · 13 min