A command line simple note taking app

Related tags

Deep Learningnote
Overview

Why yet another note taking program?

note was designed with a very specific target in mind: me, and my 2354 scraps of paper. It runs from the command line for simple note taking. See "Technical information" on how the notes are handled (TL;DR: in simple separate text files).

Installation

MS Windows

The simple way

You can use the executable available in "Releases". This is an executable, and you should never ever execute an executable from a stranger. Except from me because I am a good guy.

You need to copy note.exe to a place that is in your Path, and you can then do magical things such as

<Win Key>note q my first /oh a title/ note #france<Enter>

The more complicated way

OK, you do not trust me. Fine. ಠ╭╮ಠ

After having painstakingly analyzed the Python code for malicious content (and thanked the developer for the extended comments that helped enormously), you can rebuild the executable from scratch

cd /the/directory/with/note.py
pip3 install -r requirements.txt
pip3 install pyinstaller
pyinstaller --onefile note.py

After several cryptic lines you will find your executable in a newly created directory dist.

The alias way

I actually never used aliases in Windows, but apparently there is doskey for cmd and Set-Alias for PowerShell. I will someday update this README with relevant information but if someone could make a PR I would appreciate.

Linux

In bash you can add alias note='python3 /path/to/note.py' to your .bashrc.

Instructions for other shells will come here someday.

Usage

Important note At that stage, note is for well-behaved users that will not try to push it to its limits. Everything works per the documentation, but you may find some corner cases that were not caught yet. Please open an Issue so that I can rush to fix it.

Environment variables

NOTE_EDITOR - editor to use for notes. Defaults to notepad.exe (Windows) or vi (Linux).

NOTE_LOCATION - place where the notes are saved. Defaults to Note in the home directory.

NOTE_LOGLEVEL - default is INFO, possible values are DEBUG, INFO, WARNING, ERROR, CRITICAL

Managing notes

Notes have the following attributes:

  • a content (in files, you do not need to worry about that)
  • a serial number, which you access via $<serial number>
  • a title, that you provide as
    • /my title/ within the command line of a quick note
    • directly on the command line when creating a new note, or editing one (if you do not provide anything you will be asked for a title)

Creating notes (n)

You may want to create a note and start to edit it right away in an external editor

note n /a title if you want/

You can provide the title directly on the command line (between separators /), or you will be asked for one.

The other option ("quick notes") is to type the content of the note directly in the command line. You can add a title if you want (if you do not, you will be asked for one)

 note q some content /oh a title!/ can be anywhere" more content #atag

Edit notes (e)

In order to edit notes, you will be presented with a list of existing ones, you can choose the one you want to edit (or see) via its serial number (e.g. $3) or its title. The editor is then opened with the content of the note.

note e

Delete Notes (d)

note d

You will get a list of notes and delete the one you want to, again via its serial number (e.g. $3) or its title.

Notes are not actually deleted, they are just renamed to <filename>.bak. At some point I will have a garbage collector to remove them after some time.

Search notes (s)

You can search for keywords in titles and tags, and get a list of matching notes. You are then offered the opportunity to edit one right away.

note s cat dog

The keywords are matched with an OR (so in the example above notes with dog or cat in either the title or tags will be returned)

TODO

Below are some ideas for the short and longer term. New ideas welcome! Select "Feature request" at https://github.com/wsw70/note/issues/new/choose

short term

  • Autohotkey script
  • "dump mode" to retrieve all the notes in either one large file, or a zip
  • consider adding a configuration file instead of environment variables
  • add colors to teh table of notes, to differentiate quick ones, volatile notes (see below), etc. Maybe allow for " important tags" with a special color, or define a color by tag?
  • configure the sorting of lists (by title, serial or last modified)
  • add other typical ways to abort (Escape, Ctrl-C, ...)
  • check for identical titles (not sure yet if this is a good idea)
  • better control on unexpected situations via clever exception catching
  • searching in the content of the notes
  • short-lived notes (a #1d tag would automatically remove the note after one day) -> requires some kind of garbage collector (maybe as a collateral of some functions?)
  • maybe turn the functions into @staticmethod to visually better organize the code
  • actually delete old deleted notes (which are for now renamed to .bak)
  • process command line via doctopts or similar

longer term

  • simple and fast web app (ideally pure HTML and CSS)
  • API (not sure what for yet, but I like APIs)
  • Think about race conditions with the API or web app
  • Optional encryption

FAQ

Where are my notes?

If you did not do anything, they are in your home directory, in a directory called Note. Try to put %HOMEPATH%/Note in Windows Explorer and you should see them.

I would like my notes to be elsewhere

If you never started note, first set the environment variable NOTE_LOCATION to the place you want to have them.

If you already started note then set up the variable above, go to %HOMEPATH%/Note and copy the contents to the new location. You should see a bunch of weird files (they contain your notes) and a file db.json.

How to synchronize between computers?

The notes are just text files. You can use any synchronization program (Dropbox, OneDrive, Box, Nextcloud, Syncthing, ...)

How to synchronize with my mobile, my PS5, my Roku, my smartwatch?

Sorry, this won't work (at least easily). You can sure synchronize the files, but running note.py will be tough. Probably not impossible, but tough. Stay tuned for the web interface (but don't hold your breath either)

Technical information

Notes are stored in the Note directory in the home directory, or in teh one pointed to by the environment variable NOTE_LOCATION.

The content of a note is in a file with a generated random name (such as c5cc4de1f4044ea18b7e138f16837667).

Metadata is stored in db.json which lives in the same directory as the notes. The general structure of the file is

{
    "c5cc4de1f4044ea18b7e138f16837667": {
      "filename": "c5cc4de1f4044ea18b7e138f16837667",
      "tags": [
        "tag1",
        "tag2"
      ],
      "modified": "2021-02-22T11:11:41.252259+01:00",
      "title": "my #tag3 title",
      "serial": 1
    }
}

Donations

If you found note useful and feel that you want to donate something, please do it to a good charity. I do not need the money. If you have no idea where to donate, go to Restos Du Coeur , Médecins Sans Frontières, Secours Populaire, Emmaüs. Or anything that help others.

If you fond note so useful that you must do SOMETHING for me, drop me a note with your location (country, city - I do not want you home address!). I will ask you about good local addresses and tips should I travel in your area.

You might also like...
Automatically Build Multiple ML Models with a Single Line of Code. Created by Ram Seshadri. Collaborators Welcome. Permission Granted upon Request.
Automatically Build Multiple ML Models with a Single Line of Code. Created by Ram Seshadri. Collaborators Welcome. Permission Granted upon Request.

Auto-ViML Automatically Build Variant Interpretable ML models fast! Auto_ViML is pronounced "auto vimal" (autovimal logo created by Sanket Ghanmare) N

Joint deep network for feature line detection and description
Joint deep network for feature line detection and description

SOLD² - Self-supervised Occlusion-aware Line Description and Detection This repository contains the implementation of the paper: SOLD² : Self-supervis

Implementation for the
Implementation for the "Surface Reconstruction from 3D Line Segments" paper.

Surface Reconstruction from 3D Line Segments Surface reconstruction from 3d line segments. Langlois, P. A., Boulch, A., & Marlet, R. In 2019 Internati

The official PyTorch implementation of the paper: *Xili Dai, Xiaojun Yuan, Haigang Gong, Yi Ma.
The official PyTorch implementation of the paper: *Xili Dai, Xiaojun Yuan, Haigang Gong, Yi Ma. "Fully Convolutional Line Parsing." *.

F-Clip — Fully Convolutional Line Parsing This repository contains the official PyTorch implementation of the paper: *Xili Dai, Xiaojun Yuan, Haigang

Official Tensorflow implementation of
Official Tensorflow implementation of "M-LSD: Towards Light-weight and Real-time Line Segment Detection"

M-LSD: Towards Light-weight and Real-time Line Segment Detection Official Tensorflow implementation of "M-LSD: Towards Light-weight and Real-time Line

Pytorch implementation of
Pytorch implementation of "M-LSD: Towards Light-weight and Real-time Line Segment Detection"

M-LSD: Towards Light-weight and Real-time Line Segment Detection Pytorch implementation of "M-LSD: Towards Light-weight and Real-time Line Segment Det

General Virtual Sketching Framework for Vector Line Art (SIGGRAPH 2021)
General Virtual Sketching Framework for Vector Line Art (SIGGRAPH 2021)

General Virtual Sketching Framework for Vector Line Art - SIGGRAPH 2021 Paper | Project Page Outline Dependencies Testing with Trained Weights Trainin

Build tensorflow keras model pipelines in a single line of code. Created by Ram Seshadri. Collaborators welcome. Permission granted upon request.
Build tensorflow keras model pipelines in a single line of code. Created by Ram Seshadri. Collaborators welcome. Permission granted upon request.

deep_autoviml Build keras pipelines and models in a single line of code! Table of Contents Motivation How it works Technology Install Usage API Image

LETR: Line Segment Detection Using Transformers without Edges

LETR: Line Segment Detection Using Transformers without Edges Introduction This repository contains the official code and pretrained models for Line S

Comments
  • [BUG] MacOs Support

    [BUG] MacOs Support

    Describe the bug When I run note.py on Mac, I get:

    Traceback (most recent call last):
      File "/Users/test/src/note/note.py", line 377, in <module>
        raise NotImplemented
    TypeError: exceptions must derive from BaseException
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/Users/test/src/note/note.py", line 380, in <module>
        except NotImplemented:
    TypeError: catching classes that do not inherit from BaseException is not allowed
    

    Expected behavior On inspection of the code, you should just see if this is running on MacOS, and use the linux settings - we have vi and bash on MacOS.

    As it is, I just hardcoded in the linux options, and note.py now works fine.

    bug enhancement 
    opened by vessenes 3
Releases(2.1)
  • 2.1(Feb 26, 2021)

    NEW

    • volatile files (a specific tag such as #1d will have the note deleted after 1 day, see README for details)
    • AutoHotKey information added
    • by adding started_from_autohotkey at the end of the command, note will wait for a final Enter key before exiting (useful when note is started in a non-interactive mode such as via AutoHotKey

    CORRECTED

    • NOTE_LOGLEVEL is now correctly setting the logging level
    Source code(tar.gz)
    Source code(zip)
    note.exe(6.59 MB)
  • 2.0(Feb 23, 2021)

    BREAKING CHANGES

    • there is no more q, it was merged into a new note to make it more natural
    • the tags key was removed in the database. You need to either create a new one, or modify the existing one by
      • removing the key tags with its content
      • remove the key files but leave the content You will then have a dict of dicts, see the Technical section in the README for an example

    Sorry for the breaking changes, there should not be more of them, or at least I will provide an upgrade path.

    Source code(tar.gz)
    Source code(zip)
    note.exe(6.59 MB)
  • 1.0(Feb 22, 2021)

PPO Lagrangian in JAX

PPO Lagrangian in JAX This repository implements PPO in JAX. Implementation is tested on the safety-gym benchmark. Usage Install dependencies using th

Karush Suri 2 Sep 14, 2022
Portfolio analytics for quants, written in Python

QuantStats: Portfolio analytics for quants QuantStats Python library that performs portfolio profiling, allowing quants and portfolio managers to unde

Ran Aroussi 2.7k Jan 08, 2023
A very impractical 3D rendering engine that runs in the python terminal.

Terminal-3D-Render A very impractical 3D rendering engine that runs in the python terminal. do NOT try to run this program using the standard python I

23 Dec 31, 2022
[ICML 2020] Prediction-Guided Multi-Objective Reinforcement Learning for Continuous Robot Control

PG-MORL This repository contains the implementation for the paper Prediction-Guided Multi-Objective Reinforcement Learning for Continuous Robot Contro

MIT Graphics Group 65 Jan 07, 2023
Demonstration of transfer of knowledge and generalization with distillation

Distilling-the-Knowledge-in-a-Neural-Network This is an implementation of a part of the paper "Distilling the Knowledge in a Neural Network" (https://

26 Nov 25, 2022
[ICCV 2021] Target Adaptive Context Aggregation for Video Scene Graph Generation

Target Adaptive Context Aggregation for Video Scene Graph Generation This is a PyTorch implementation for Target Adaptive Context Aggregation for Vide

Multimedia Computing Group, Nanjing University 44 Dec 14, 2022
Pseudo-rng-app - whos needs science to make a random number when you have pseudoscience?

Pseudo-random numbers with pseudoscience rng is so complicated! Why cant we have a horoscopic, vibe-y way of calculating a random number? Why cant rng

Andrew Blance 1 Dec 27, 2021
Deep Learning for Time Series Forecasting.

nixtlats:Deep Learning for Time Series Forecasting [nikstla] (noun, nahuatl) Period of time. State-of-the-art time series forecasting for pytorch. Nix

Nixtla 5 Dec 06, 2022
This is the dataset for testing the robustness of various VO/VIO methods

KAIST VIO dataset This is the dataset for testing the robustness of various VO/VIO methods You can download the whole dataset on KAIST VIO dataset Ind

1 Sep 01, 2022
A rule-based log analyzer & filter

Flog 一个根据规则集来处理文本日志的工具。 前言 在日常开发过程中,由于缺乏必要的日志规范,导致很多人乱打一通,一个日志文件夹解压缩后往往有几十万行。 日志泛滥会导致信息密度骤减,给排查问题带来了不小的麻烦。 以前都是用grep之类的工具先挑选出有用的,再逐条进行排查,费时费力。在忍无可忍之后决

上山打老虎 9 Jun 23, 2022
Implementation of the GVP-Transformer, which was used in the paper "Learning inverse folding from millions of predicted structures" for de novo protein design alongside Alphafold2

GVP Transformer (wip) Implementation of the GVP-Transformer, which was used in the paper Learning inverse folding from millions of predicted structure

Phil Wang 19 May 06, 2022
TSDF++: A Multi-Object Formulation for Dynamic Object Tracking and Reconstruction

TSDF++: A Multi-Object Formulation for Dynamic Object Tracking and Reconstruction TSDF++ is a novel multi-object TSDF formulation that can encode mult

ETHZ ASL 130 Dec 29, 2022
PyTorch implementation for the ICLR 2020 paper "Understanding the Limitations of Variational Mutual Information Estimators"

Smoothed Mutual Information ``Lower Bound'' Estimator PyTorch implementation for the ICLR 2020 paper Understanding the Limitations of Variational Mutu

50 Nov 09, 2022
A Kernel fuzzer focusing on race bugs

Razzer: Finding kernel race bugs through fuzzing Environment setup $ source scripts/envsetup.sh scripts/envsetup.sh sets up necessary environment var

Systems and Software Security Lab at Seoul National University (SNU) 328 Dec 26, 2022
A highly efficient and modular implementation of Gaussian Processes in PyTorch

GPyTorch GPyTorch is a Gaussian process library implemented using PyTorch. GPyTorch is designed for creating scalable, flexible, and modular Gaussian

3k Jan 02, 2023
Fully Convolutional DenseNets for semantic segmentation.

Introduction This repo contains the code to train and evaluate FC-DenseNets as described in The One Hundred Layers Tiramisu: Fully Convolutional Dense

485 Nov 26, 2022
This repository contains several jupyter notebooks to help users learn to use neon, our deep learning framework

neon_course This repository contains several jupyter notebooks to help users learn to use neon, our deep learning framework. For more information, see

Nervana 92 Jan 03, 2023
Author's PyTorch implementation of TD3 for OpenAI gym tasks

Addressing Function Approximation Error in Actor-Critic Methods PyTorch implementation of Twin Delayed Deep Deterministic Policy Gradients (TD3). If y

Scott Fujimoto 1.3k Dec 25, 2022
Building a real-time environment using webcam frame division in OpenCV and classify cropped images using a fine-tuned vision transformers on hybryd datasets samples for facial emotion recognition.

Visual Transformer for Facial Emotion Recognition (FER) This project has the aim to build an efficient Visual Transformer for the Facial Emotion Recog

Mario Sessa 8 Dec 12, 2022
A python script to convert images to animated sus among us crewmate twerk jifs as seen on r/196

img_sussifier A python script to convert images to animated sus among us crewmate twerk jifs as seen on r/196 Examples How to use install python pip i

41 Sep 30, 2022