July 16th, 2024

Show HN: Contacts: A Microlang for Managing Contacts

A microlanguage named Contacts simplifies contact management by storing details in plain text, tracking changes with git, and exporting to PDF, HTML, CSV, and JSON formats. It's free, open source, and designed for easy use.

Read original articleLink Icon
Show HN: Contacts: A Microlang for Managing Contacts

A microlanguage called Contacts has been introduced for managing contact information efficiently. This tool allows users to store contact details in a plain text file, track changes with git, and compile the information into various formats like PDF, HTML, CSV, and JSON. Contacts is free, open source, and public domain, making it accessible to all users. The microlanguage is designed to be concise, requiring minimal effort to add, prune, display, print, and export contacts. Users can create a file with contact details following a specific format and then use Contacts to generate HTML files for display and printing, along with CSV, TSV, and JSON files. The tool aims to simplify contact management by eliminating unnecessary characters and providing interoperability with pen and paper. Contacts was inspired by a tweet from Tyler Tringas and is built using Scroll v108.3.1.

Related

Cosmopolitan v3.5

Cosmopolitan v3.5

Cosmopolitan Libc transforms C into a universal language by modifying GCC and Clang to create a POSIX-compliant polyglot format. Users can compile programs using the `cosmocc` compiler and access debugging techniques. The project provides platform notes, a Discord chatroom, and funding acknowledgments.

Show HN: a Rust lib to trigger actions based on your screen activity (with LLMs)

Show HN: a Rust lib to trigger actions based on your screen activity (with LLMs)

The GitHub project "Screen Pipe" uses Large Language Models to convert screen content into actions. Implemented in Rust + WASM, inspired by `adept.ai`, `rewind.ai`, and `Apple Shortcut`. Open source under MIT license.

SCIM: Ncurses based, Vim-like spreadsheet

SCIM: Ncurses based, Vim-like spreadsheet

The "sc-im" project is an ncurses-based spreadsheet calculator with Vim-like features, supporting UNDO/REDO, 65,536 rows, and 702 columns. It offers various import/export options, customization features, scripting with LUA, and more. Installation guidelines, dependencies, and contribution details are available on the GitHub repository. Users can support the project through various means.

CodeMirror: Extensible code editor component for the web

CodeMirror: Extensible code editor component for the web

CodeMirror is a versatile web code editor with accessibility, syntax highlighting, collaborative editing, and more. It supports multiple languages, offers extensive features, and encourages community contributions and discussions.

The Open Collaboration Tools

The Open Collaboration Tools

The Open Collaboration Tools project by Dr. Miro Spönemann and Mark Sujew enhances remote teamwork with live-sharing IDE contents. It includes VS Code and Eclipse Theia extensions, authentication server, and supports various content types. The project emphasizes vendor neutrality and open-source licensing.

Link Icon 5 comments
By @kkfx - 6 months
For ideas, personally I manage my contacts in two separate entities because I still have to find a way to merge two different worlds:

- on desktop my contacts are org-mode notes, in contacts terms I use them just for email completion in notmuch (my mail client) but the contacts notes contains much more, clickable links to some relevant conversations, TODOs digested also by org-agenda etc etc etc a simple pure text feature-rich CRM;

- on mobile https://github.com/tchapi/davis on my home server and DavX⁵ on Android, I have no integrations and well, I still do not need it much except to add new contacts or delete them in a single place for both.

The above description to state a thing: the BIG issue with all modern software and in part unix classic one is integration. In Emacs anything is integrated so there are not much boundaries between functionalities as we have not much boundaries between things in our mind, while on modern systems at maximum we can copypaste or drag&drop and in Unix we can combine but every time we need to mangle text since there is no common language for anything, what we use is the shell, not "the system" witch is written in a separate compiled language. We can't circumvent this limit with all modern systems. That's is.

So despite the idea of simply storing contacts with a tool that allow easy export in various format might be effective in some cases we will anyway hit an integration wall sooner or later, let's say another app who need another kind of export and so on and the simple language became more complex while still remain unable to add anything else on top/related to contacts details do to "app separation" bound to the system design. It's a nice effort, and I thank the author for sharing the code, it might be helpful for some only we need a different software architecture to really manage our digital life, one we abandoned decades ago, the concept of an OS as a single application/framework where anything is runtime editable code, user-programmable, a single language, so we can just access functionalities via common data structure and functions instead of the integration hell we know very well.

By @zvr - 6 months
Obvious question: how does it relate to vCard, which is the standard way of describing contacts? The examples shown are too simplistic for real world use: how do I specify multiple phones/emails, like work and personal?

And a nitpick: it cannot be both "open source and public domain" -- open source means it's licensed under an Open Source license, while public domain means that there are no IP rights.

By @librasteve - 6 months
i think this is lovely … one idea would be to build a raku Grammar for your language (which would be also ~23 lines I suppose) … that way you could make raku Contact objects and easily add international variations. also you could write an export (ie print) method to output from Contacts to your language. disclaimer : I wrote the raku Contact module https://raku.land/zef:librasteve/Contact and would be happy to help.

https://docs.raku.org/language/grammars