Tech notes
Programming and CS Concepts
Data:
Models of computation:
- State machine
Abstraction.
- Levels of abstraction
- Abstracting complexity behind simple interfaces.
Clean Code. Coding Principles. Conventions
- Intro
- Meaningful Names
- Functions
- Comments
- Formatting
- Objects and Data structures
- Error Handling. Exceptions
- Boundaries
- Unit tests
- Classes
- Systems
- Emergence
- Concurrency
- Successive Refinement
- Refactoring SerialDate
- Smells and Heuristics
- General
- broken windows: They used the metaphor of broken windows.3 A building with broken windows looks like nobody cares about it. So other people stop caring. They allow more windows to become broken. Eventually they actively break them. They despoil the facade with graffiti and allow garbage to collect. One broken window starts the process toward decay.
- The Boy Scout Rule: Leave the campground cleaner than
you found it.
- If we all checked-in our code a little cleaner than when we checked it out, the code simply could not rot. The cleanup doesn’t have to be something big. Change one variable name for the better, break up one function that’s a little too large, eliminate one small bit of duplication, clean up one composite if statement.
- G5: Duplication. Don't repeat yourself (DRY)
- G23: Prefer Polymorphism to If/Else or Switch/Case (Question for self: how to do it? Needs a concrete example.)
- G25: Replace magic numbers with named constants
- General
- https://gist.github.com/cedrickchee/55ecfbaac643bf0c24da6874bf4feb08
- https://gist.github.com/wojteklu/73c6914cc446146b8b533c0988cf8d29
Coding Principles:
- Coding principles
- DRY
- KISS
- Single Responsibility Principle (SRP)
- Open Closed Principle (OCP)
Takes time but saves more than it takes
Architecture
Web:
- REST
- Microservices
Design patterns
Creational:
- Singleton
- Factory
- Builder -
Structural:
- Adapter
- Facade
Behavioral:
- Strategy
C# Language and the .NET Framework
Prerequisites:
Set up on Linux:
C# Language Features:
- Classes
- Polymorphism
- Generics
- Clean code: Class organization in C#
- Automatically implemented properties
- Exceptions
C# Language and the .NET Framework:
Types and Collections:
- Value Types
- enum
- struct
- tuple
- Reference types
- array
- string
- class
- interface
- Collections
- IEnumerable
- List
- Dictionary
- HashSet
- NameValueCollection
- Queue
- Stack
- Anonymous Objects. Anonymous Types
- Dates and time: Datetime
Data:
- LINQ
- Working with JSON. Serialization and Deserialization
- Entity Framework
Unit testing:
Unit testing concrete items:
Networking:
- URIs, URLs...
- HttpClient *
- HttpClient and Dependency Injection (DI)
- HttpClientHandler
- Requests
- Responses. JSON Deserialization
Security: https://learn.microsoft.com/en-us/dotnet/standard/security/
Web Apps and ASP.NET
- WebApplicationBuilder
- Dependency Injection (design pattern, programming technique)
- Logging & Audit
- (Security) Authentication, authorization, claims
- Configuration
- Routing
JavaScript
- Javascript
- TypeScript
- Node.js
- React
- Next.js
- ESLint
Web: HTML, CSS
Other programming languages
Python
To do: ...
C
To do: ...
Java
Environment and set up on arch linux
IDEs, code editors, etc
Databases
Linux and Windows:
- MariaDb (MySql)
- Sqlite
Windows only:
Other:
Containers
Running sonarqube analysis for a local project from docker.
Web servers
A web server serves HTML web pages and other files via HTTP to clients like web browsers. The major web servers can be interfaced with programs to serve dynamic content (web applications). [1]
Linux:
- nginx
- apache
Windows:
Other:
- Reverse proxy
- Load Balancing
Linux Desktop
- X Window System environment
- Tiling window manager: i3
- Status bar: i3blocks
- Program launchers: rofi, morc_menu
- Lock Screen: blurlock
- Display settings. Monitors. Manage multi-monitor setups
- Fonts
- Audio: PulseAudio
- dotfiles
Music:
- Ardour
- MuseScore
Office Suite: Libreoffice
Linux System
Commands:
Filesystem. Users and Permissions:
- Users
- chmod 744
Networking:
Locale, Language, Keyboard Layout:
System Management:
- systemd systemctl: Used for managing systemd services and the system itself (starting, stopping, and checking the status of services).
System Logs and Monitoring:
journalctl: A command for querying and displaying messages from the journal, which is the logging system used by systemd.
Disk and Filesystem Management
Finding out information:
- About commands: man, info
- Hardware Information
Linux Directory Structure (organisation):
- Location of the executable files Where to place executables
- /tmp
- Best practices for Linux file naming
Other:
- sha256sum, checking the hash.
sha256sum 2018-06-27-raspbian-stretch.zipshould match the one on the website - Archived and Compressed files
Multimedia:
- ffmpeg - multimedia conversion and processing tool
Shell:
turn on/off mode that prints contents of the dir when cd-ing into it alias function
run app that accepts torrent magnet links until i press ctrl-c
Terminal:
- ST terminal
- find a normal terminal, for example Alacritty
Terminal Multiplexer:
Command Line Tools and Scripting
Where to place what scripts:
- alias: 1 command, no arguments
- zfunctions: 1 command, with arguments
- Scripts: > 1 command
Scripting:
shell scripting
- xargs
- printf
General
git
- basics
- log, cherry-pick, reset, rebase
- branching strategies
rsync
scp
Editing files:
- vim
- Exit vim. Save file.
- Navigation:
- normal mode:
ctrl+oto go to previous location - normal mode:
gfgo to file under cursor
- normal mode:
- Normal mode hotkeys
- Insertion Mode hotkeys. (Edit Mode)
- Switching from Normal Mode to Insertion Mode. Quick Movements.
- Copying and pasting
- undo, redo
- Commands
- Buffers (think of tabs/windows):
- click on it
:bnto go to next buffer:bpto go to previous buffer:db,:db1: close buffer
- Splitting
viewport
- reposition the edit window while keeping the cursor on
the same line (make current line be in the middle of the
screen):
zz
- reposition the edit window while keeping the cursor on
the same line (make current line be in the middle of the
screen):
- Plugins
- tutorial, lessons, etc
Searching files, directories:
Documents:
Linux Distributions
Arch / Manjaro
Administration:
- Package Manager: pacman
- Updating the system and applications
Raspberry Pi OS
Initial:
Administration:
- Package Manager: APT (Advanced Package Tool). Raspberry Pi OS (Debian-based)
- Enabling SSH
Server Administration
Remote login:
- SSH - SSH suite is provided by OpenSSH
- Log onto a server with SSH
- SSH Keys
- SSH agent
- SSH config file
- SSH directory and file permissions
known_hostsfile- How to check if SSH is enabled on my linux machine?
git server
Windows System
- Event Viewer
- Remote Desktop Connection
- Manage certificates. certmgr
- MS SQL Server
- installation
- IIS
- installation
- Windows Powershell ISE
- Chocolatey (package manager for Windows)
- Initial system install script
- linux subsystem installation
- docker installation
- Environment Variables. Windows
- Active Directory
- to do...
Scripting
Security. Cryptography. Encryption. Decryption. Digital Signatures. Certificates. Secure Communications.
Cryptography Fundamentals:
- Symmetric-key cryptography
- Symmetric key ciphers are implemented as either:
block ciphers- Data Encryption Standard (DES)
- Advanced Encryption Standard (AES) (Rijndael)
stream ciphers
- cryptographic hash functions
- MD4
- MD5
- SHA-1
- SHA-2
- SHA-256
- Message authentication codes (MACs)
- Symmetric key ciphers are implemented as either:
- Asymmetric
Cryptography (public-key cryptography)
- Public Key
- Private Key
- Public Key
Certificate
- X.509 is an International Telecommunication Union (ITU) standard defining the format of public key certificates
- Certificate Authority (CA)
- Certificate Management on Windows
- Filename extensions:
.pem,.cer
- Asymmetric Cryptography in JWT
Protocols:
Encryption Standards:
- OpenPGP (RFC 4880)
- Implementation: GnuPG (GPG)
Encryption Algorithms:
- RSA
- DSA
- ElGamal
Computer Networking
Application Layer Protocols:
- HTTP protocol
- Methods
- Headers
- Bearer
- Status Codes
- HTTPS
- Authentication /
Authorization - JWT Token
- Implementation using javascript
- SSH Protocol
- DNS
- FTP
- SMTP, IMAP, POP
- BitTorrent
- IRC
Transport Layer Protocols:
- TCP
- UDP
Internet layer:
Routing and hosting:
Other:
- Stream
- Sockets
- Firewall
- Client - Server (architecture?)
- hosting
- proxy
- JWT (JSON Web Token)
Financial Services
Messaging platform:
International Standards
Data representation and formatting standards, which help with data exchange and communication. Which include ISO standards, etc.
Examples:
- Character Encoding. ASCII, UTF-8
- Date Standards. ISO 8601, UTC, Unix Timestamp
- Country Codes. ISO 3166
- Language Codes. ISO 639, IETF BCP 47
- Currency Codes. ISO 4217
- Measurement Standards. ISO 80000. Quantities and units.
Financial Services (banking, finance, etc):
- Identifying banks and financial institutions. Bank Identifier Code (BIC). SWIFT Code. ISO 9362
- Identify Individual Bank Accounts. ISO 13616 IBAN
- Financial Information. ISO 20022
Other
Glossary
General:
- metadata
- command line options or flags
- Shell, Command Line Tools and Scripting
Unit testing: