Coder Social home page Coder Social logo

axioms's Introduction

Axioms

These are the axioms or rules for my own development setup.

Rationale

Axioms are postulates that are taken to be true in order to build a mathematical system. With them, one can build more complex statements. In the same spirit, the humble programmer has the need for the basic building blocks to develop new software, and these should be always true, i.e. robust and reliable.

With this repository, one should be able to have basic building blocks that could enable the eager developer to produce quality software of any kind.

Structure

Everything is orchestrated through a TOML file master-config.toml where everything I use can be browsed freely, as well as a Python parser that takes care of installing and updating everything.

All the configuration files are freely available to use under the stipulated license packaged with this repository.

Usage

Python version and environment

python 3.8 is compulsory as the new walrus operator is employed.

Handling dependencies and poetry

To be able to use this repository, poetry must be installed in your system. Once that is done, you can clone this repository like such

git clone --depth 1 https://github.com/edwinb-ai/axioms.git

in the directory of your choice.

After cloning, the dependencies need to be installed using poetry

poetry install

and then you can install all of the configurations using

poetry run invoke git terminal editor shell programs languages

or, if you prefer a specific configuration, just call that, for example, if just the editor is needed then the following command is enough

poetry run invoke editor

and the same applies for the rest.

Target platform

For now, this only works for most of the Ubuntu-based distributions with Pop!_OS being the primary one, as it is assumed that the apt package manager is the default one. Maybe, in the future, could more package managers be supported.

End result

This is what you get with these configuration files:

terminal

editor

axioms's People

Contributors

edwinb-ai avatar

Stargazers

 avatar

Watchers

 avatar

axioms's Issues

Do not add gitconfig files

Turns out that git-specific configuration files are not really needed, so using them and including them are not really necessary.

Bootstrapping doesn't work because of conda

Seems like conda needs to be configured before it can be used. The CommandNotFounError is raised and the conda init <shell> is issued.

A workaround is to walk to the anaconda3 directory and execute source commands from there, then walk again to the necessary directories.

Error handling is cumbersome

Even if the correct programs are installed because they are in the official repositories, the URL is always used and installed. Sometimes this behavior causes issues with the format it has in the URL.

Create a mechanism for two-way synchronization

Currently, if one changes the system's files, these changes are not reflected in axioms.

For instance, with Visual Studio Code one may install different themes, extensions, change user settings and so on, and none of these changed would be visible to axioms.
This is also very archaic, as one might forget to update the files within axioms and all the day to day settings will be lost.

A potential solution to this problem is to implement a new backup task that when run does the following:

  • Register or maintain a type of database of all the directories where the useful data is located.
  • It crawls to all the necessary directories in order to collect the necessary files and copy them back to axioms.

This may not be a simple task, as point number one is hard to design efficiently, but it could be approached using a JSON file, keeping track of all the directories and files that were copied when originally installed.

Automatically install the spaceship prompt

This should be installed alongside the shell configuration such as the Oh My Zsh framework. Granted, it also need some special fonts, so something clever must be done here.

Re-write to remove cycling dependencies of Python

The installation process that is currently implemented uses at least three different Python package managers conda, pip, and poetry.
This is cumbersome, horrible design and the cyclic nature of the dependencies makes it very hard to adopt.

A solution to this problem is to stick with just one, namely poetry, and make it the de-facto package manager. This would mean that a modification to the install.sh script is needed, specifically a complete rewrite to make use of poetry.

Another, more extreme solution would be to use a language that has its own package manager like Go, Rust or even Julia.

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.