HN user

mlawren

6 karma

[ my public key: https://keybase.io/mlawren; my proof: https://keybase.io/mlawren/sigs/hYcbNWjfwPOz8jM3IEjnWWE_fFpWpn2MGxsBpofClzA ]

Posts1
Comments8
View on HN

Somewhat off-topic, but I had a need recently for a simple serialization format that satisfied the following:

    * Support for undef/null
    * Support for binary data
    * Support for UTF8 strings
    * Universally-recognized canonical form for hashing
    * Trivial to construct on the fly from SQLite triggers
Of all of the formats I looked at nothing matched. So I created Bifcode [https://metacpan.org/pod/Bifcode]. It is a bit of a mix between Netstrings, Bencode and JSON. It is not really human readable, but it is extremely simple and robust, easy to generate and parse, and therefore relatively secure.

I'm not promoting it for any particular use case, and I only have a Perl implementation. Posting here as I think some of the audience in this thread may find it useful.

Inspiring web page, but where does a user start? I can download, install, run, and then? You are missing some instructions about an interface.

Edit: Ok I looked harder. The RUNNING file has the critical protocol/port combination (http://localhost:4251) but this could also (or rather) be in the README, and on the web page.

I should probably also mention that bif, while functional is still alpha quality software. And so far tests only pass on Linux and the *BSDs. Testers/bug-hunters for MacOS would be appreciated.

I've been working on bif (http://bifax.org/bif/) for the past 3 years.

Bif is a project management tool with a command-line interface. It helps you track tasks, issues and bugs using a local database, exchanging updates with remote databases on demand. The tool has several features of interest to distributed project teams:

* Offline Operation - Many bif actions work offline; you can create and update tasks and issues while disconnected from the network.

* Inter-project Cooperation - Bif issues (and tasks) can be linked with (or copied to) multiple projects, mirroring the inter-project relationships that exist in the real world.

This flexibility comes with minimal additional complexity; bif commands are designed for consistency and ease of use.

Bif runs on any system that supports Perl and SQLite.

In fact, while I'm here, any other comments you have on the interface are also very welcome. Possible topics: Order of commands as printed here, or the names of the commands and/or arguments, order of the arguments, whether arguments should be optional or not, etc.

If you have ever been annoyed at an inconsistency in git, and wished you could have had a say when it was being designed, then now is your chance to possibly affect how this tool matches your ideals.

The tool is not yet anywhere near releasable, but will most like (A)GPL.

For some context of how these commands fit in with everything else, here is the overall command usage summary:

    prog help [COMMAND...]
    prog init [DIRECTORY]
    prog import HUB [PATHS...]
    prog new ITEM
        prog new project [PATH] [TITLE...]
        prog new task [PATH] [TITLE...]
        prog new issue [PATH] [TITLE...]
    prog list ITEMS
        prog list topics
        prog list projects
        prog list project-states PATH
        prog list task-states PATH
        prog list issue-states PATH
        prog list hubs
    prog show ID
    prog log [ID]
    prog comment ID
    prog drop ID
    prog push ID PATH [HUB]
    prog export PATH HUB
    prog sync [ID] [HUB]
    prog upgrade [DIRECTORY]
    prog sql STATEMENT...
    prog ALIAS
At the moment PATH is the way to reference a project.