Open Source Projects
The world of software development has changed profoundly during the last 15 years. Large software development companies make parts of their software available as open-source; the components that are not part of their core business, but of a general nature.
I share that philolosphy 100%, and when I write code, everything I write that is not related to a specific application or problem, I want to share that with others
After all, my entire software development tool chain is based on free and open-source software; it would only be fair that I contribute back to the communities.
Obsidian Plugins
Obsidian is an amazing note taking tool that can serve multiple purposes. It can be your daily journal. It can be your personal wiki. It can be the place where new ideas arise by identifying patterns in existing notes.
A great part of the power and flexibility of Obsidian comes through it's extensibility through community plugins
I've been using Obsidian for about 8-10 months now; and from time to time, there was functionality I desired, so I wrote my own plugin for that
TitleSync
Keeps the title in the node synchronised with the filename when you rename a file
The primary use case was when I created a new note using a template to fill out the title in the note body. A blank note would have the title "Untitled" selected, but after writing a proper name; the contents had already been created and would keep the name "Untitled". This very small plugin updates the content.
Publish to DEV
When I write articles on DEV, I author the content in Obsidian. To simplify the publishing process, I wrote this plugin.
Apart from some minor UI code, this plugin was written test-first; which drove a very efficient development process. The initial prototype was developed in a single session and it worked the first time. Writing testable Obsidian plugins is not easy as you have dependencies to closed-source code. This article describes how I applied intimate knowledge of JavaScript and TypeScript to structure the structure the code to be testable.
Frontmatter Smith
Some of the powerful features of Obsidian comes from analysing notes based on metadata in the 'frontmatter'. This plugin was written to simplify entry of trivial information you want to add on a daily basis.
Plugin template with tests
This is not a plugin in itself, but a starting point for writing plugins. It is based on the official Obsidian plugin template but adds the scaffolding for automated testing
Speed
Speed is a test framework for OCaml. It was born out of a desire to write OCaml code driven by tests; but none of the existing libraries satisfied my needs. The existing libraries seemed to be very tightly coupled to the philosophy of writing unit tests; but a very misunderstood part of TDD is that it is not about writing unit tests at all.
I wrote an article about why TDD is such an efficient process, you can read it here, Stop writing unit tests
Speed utilises advanced features of the OCaml type system, such as Generalized algebraic datatypes, Extensible Variants, and meta-programming through PPX generators and rewriters
This web site
Being passionate about open-source, I have also made the source code for this web site available. After all, I don't add information I don't intent to publish anyway.