Skip to content

Instantly share code, notes, and snippets.

@alirezaarzehgar
Last active April 7, 2023 07:06
Show Gist options
  • Select an option

  • Save alirezaarzehgar/ef406b1ca8350f0355c4abfe34e3f77a to your computer and use it in GitHub Desktop.

Select an option

Save alirezaarzehgar/ef406b1ca8350f0355c4abfe34e3f77a to your computer and use it in GitHub Desktop.
My interest links

Don't start from details

If you have some topics or tools to learn, You should learn them step by step and little by little. TODO:

  • List every term and tool that you need to learn
  • Just search and learn this terms (in less that 5 minutes)
  • Start reading overview of their documentions (in less that 20 minutes)
  • Playing with "Quick start" or "Getting started"
  • Run examples and do exercise
  • Sinking on deep of each tool (Reading long manpage or manuals or even book)
  • Improve your skills and experience

Coding TODO List

Following TODO list will be commot tasks of your projects.

Before coding

  • Read a book or complete documention for your project topic (USE GOOGLE BOOK SEARCH)
  • Provide a good editor for your project. (with autocompletion, easy to use and accessible)
  • Provide a good linter formatter and style code checker
  • Look at style guide of project
  • Look for debug tools and mechanism

Analyze codebase

  • Check for source code documentions
  • First of all check build system configuration of project
  • Check source tree and directories
  • Build source code
  • Run all tests
  • Analyze all of needed source files

Design

  • List what you need
  • Draw a simple flowchart using Dia or even a paper
  • Foresight for your problems
  • Look at your tests and design a test system

Coding

  • First design a build system based on your project
  • Implement tests of your project and improve it during coding
  • Implement project source tree
  • Implement debug system during you develop the system
  • Verbose warning and errors every times
  • Think for each line of code that you write
  • Write codes and design your system based on TDD
  • At the end start debuging

Refactoring

  • Use rubber duck technique for finding bad smells
  • Improve your tests
  • Refactor your shit codes
  • Ask people about your code on IRC channels, codereview.stachexchange.com and other communities

Cheers!

Change pager configuration for your git repository

When using git diff or other commands that make pagination for output, you can change pager. For my case I have problem for my tab sizes in default pager. My project follows tabs with 4 spaces, but my pager assume tabs to 8 spaces. This conflict make diff harder to read.

$ git config --global --replace-all core.pager "less --tabs 4"

What I should learn ?

Tools

  • GNU & BSD Make
  • bats
  • expect (Tcl)
  • GDB
  • GNU Autotools
  • CMake
  • LFS
  • Yocto
  • KVM
  • Buildroot
  • Uboot
  • CGroups
  • Docker
  • Jenkins
  • GitLab CI

OS

  • GNU/Linux
  • FreeBSD
  • OpenBSD

Language

  • C
  • Assembly
  • python
  • bash
  • Tcl

Books

  • Advanced Programming in the UNIX Environment
  • Clean Code
  • Clean Architect
  • The linux programming interface
  • Linux Device Drivers, 3rd Edition
  • UNIX network programming
  • Building Embedded Linux Systems
  • How to Develop Embedded Software Using The QEMU Machine Emulator
  • Embedded Linux System with the Yocto Project
  • Exploring Expect

Web books

Videos

Documentions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment