DeveloPassion's Newsletter #177 - Knowledge Means Work
Edition 177 of my newsletter, introducing Knowii, discussing Knowledge Management, Knowledge Work, Zen Productivity, Personal Organization, and more!
Welcome
Another week, another newsletter! I hope that you all had a great one 🤩
Hi everyone.
Guess what? Home is finally fixed! 🎉
It took a long while, but it feels so good to finally be able to enjoy the living room again 🤣.
Because of all this, I've missed a few more opportunities to get back to you and share news about my projects, and PKM.
Meanwhile, I've continued working hard on Knowii, and am now getting to the more interesting parts of the development. And the good news is that it's all going to be available in production real soon! More details below.
Alright, let's gooooo 🚀
Business
The newsletter revenue is more or less stable, which is both good and bad:
It means that I can cover the yearly hosting costs, but it's not what's going to enable me to focus more energy on building cool things.
But I understand why. I was quite passive in the last weeks, and didn't bring much (visible) value to you all. Hopefully, more of you will consider becoming paid subscribers ❤️
Unfortunately things look much worse with my products:
Sales of my products on Gumroad have crashed from ~$800 per month to ~$300. That HURTS, because it means that I haven't managed to reach and convince new people. My fault, because I have paused my marketing efforts about the Obsidian Starter Kit, the Knowledge Worker Kit, and the upcoming course... One idea I have to improve this is rebooting my social media presence, resume writing, and communicating more about the benefits of those. But it's going to take a while before sales go back up...
Same with Medium revenue, down to ~$25 this month:
Ouch!
Anyways, I know what I have to do next. I love to work on Knowii, but it's going to take me ages before it's in a state where enough people/communities start using it, and start deciding to pay for a subscription. So I have to focus on both fronts if I want to keep this business alive.
The lab 🧪
Quick note: I have released Obsidian Dataview Serializer 1.4.0: https://github.com/dsebastien/obsidian-dataview-serializer/releases. It's a small bug fix release.
Building a platform is a fun technical challenge. Building an app is something, but a platform is even more involved. It requires abstracting more elements, going meta, and finding ways to build something that works for various user groups. We'll see how far I manage to get!
As I discussed last time, I have already built what I consider to be the backbone of the platform. A solid architecture, a back-end, an API, a front-end, a UI, etc. So I'm now able to focus on much more interesting parts: useful features, and (hopefully) delightful user experience.
I've started by adding a breadcrumb to each page, to help with accessibility and clarity:
Now, it's much easier to see where you are, what you're looking at, and navigate back to where you want.
Then, I added icons so that each "concept" has a clear visual identity:
Then, focusing a bit on user profiles (which will be quite important in the platform), I've added Bio, Location, Phone, and Social Media links:
Thanks to this, user profiles will be beacons for people, similar to what websites such as Linktree enable. My hope is to manage to create profiles for creators/authors who are not yet on the platform, but deserve to be seen and known for their contributions. Right now, it's something that I do manually in my own PKM system, but that would strongly benefit from being automated:
The process for assembling such a profile involves a bit of exploration: finding the person's main Website and social media profile, identifying relevant links to other platforms, newsletters, etc. It's tedious work, but those profiles are valuable. Many people would really benefit a lot from having clear profiles pointing to all the right resources. And I want Knowii to that that well. But that will come a bit further down the road.
Last week, I have also started adding the possibility to add/capture resources to community collections:
The idea here is to provide a bit of information about what you want to capture (similar to what Reddit would ask you). At this point, I'm only going to implement support for text articles, but I'll add more over time (videos, notes, voice recordings, lists of people, etc).
With this first type of resource, the idea is to provide a link to some page on the Web, and let Knowii go and fetch the content, metadata, etc (and capture information about the authors later on!). That's what I'm busy with right now.
I had to solve a few challenges already, such as how to load/parse the pages, how to scrape metadata, etc.
Details for techies: I have decided to use Browserless, running in a separate podman container for security reasons. This is actually a tricky part of the code to implement, as it depends on external things that are unreliable by nature. Some pages might be valid, others invalid or even malicious. Some might quickly load, others might take ages. This is surely going to require many iterations to get right and stable. For now I'm processing everything as soon as users click on "Create", but I will certainly split this up later on, limit the initial step to making sure the links are valid, and processing the rest in the background, adding useful information with some delay.
I'm still hesitating about content capture because of obvious legal and ethical reasons, but I feel like content capture similar to what Readwise & al do is beneficial. It's a protection against the "volatility" of the Web (pages going dark), and it enables various interesting scenarios (e.g., AI summarization, voice conversion, sentiment analysis, automated tagging/categorization, etc). And those are features I want to implement soon-ish. I hope that the community will chime-in, and share opinions/ideas about this on GitHub.
I have also worked on the community homepage:
Last but not least, I have also started displaying recent resources:
Later, I'll add the capability to up/down vote resources, star those, etc. But one thing at a time 😄
I've also spent quite some time working on invisible things:
- I have created a project on GitHub and organized the backlog in milestones: https://github.com/orgs/knowii-oss/projects/1
- This is publicly accessible (just like the rest of the platform)
- It will enable anyone to track the progress, vote for ideas, help prioritize the roadmap, etc
- Thought about how to best organize information in the platform
- I imagined a shared set of data (aka the platform data) that each community could feed, and tap into
- I have "decoupled" users from user profiles, so that a user profile can exist without a user account, enabling scenarios where I add profiles for people who are not on the platform
- Decided to associate new resources with the user profile, and NOT with user accounts. This is a way to dissociate content from users, enabling keeping communities alive and content "valid", even if users decide to leave. Later on, I'll need to handle cases where users also want their user profile information to be deleted, but this can wait. We first need to have traction, otherwise it's all useless effort
- Added the possibility to recreate the development database from scratch and fill it with test data
- Implemented user profile recovery
- Added tests
- Heavily improved JSON serialization for all data models
- Upgraded to PostgreSQL 17
- Improved exception handling (translation of back-end exceptions into proper and safe API responses)
- Heavily improved security
- Looked into how to later document the API
- ...
And that's just from the top of my head. As you can see, I'm working real hard to make Knowii a reality for communities all around the world. My hope is that it's not all in vain, and that my business won't fail before I have time to turn Knowii into a valuable product.
AI-Driven Development (ADD) and Screenshot-Driven Development (SDD)
This is a section for techies. As you probably know, apart from being a Knowledge Management geek, I'm also a software developer/engineer/whatever. I've been programming for something like 30 years now, and it's my second main passion.
Software development has always been entertaining for me because of the constant change and evolution. New programming languages to explore, new tools, new frameworks, new libraries, new paradigms. It never stops. And for people like me who love to learn new things, this is an infinite source of dopamine hits.
With the rise of LLMs and modern AIs, software development, like many other fields, is rapidly evolving. And it's easy to fall off the train. Everything is accelerating, and the best way to "survive" in the field is to accelerate the pace to follow along. That's why I'm investing a lot of time into the exploration and use of cutting-edge tools such as Cursor, which integrates LLMs as a first-class citizen in the IDE.
Many colleagues of mine seem reluctant to integrate AI in their workflows, and I really think that they're missing out. They're becoming dinosaurs at a rapid pace. Some have started using GitHub Copilot and such, but to me, those are already far behind. Copilot is great, but it's far from being as powerful as Cursor with Claude 3.5 Sonnet. And new evolutions keep coming like water drops during a hurricane.
Cursor is very cool. The most important innovation for me is UX related, with the composer, and context management. Being able to guide AI generation clearly makes Cursor stand out from the crowd.
I've shared some of my notes about it here:
Also, what I find really neat is the fact that it's possible to paste images in the chat. And this enables what I've coined as Screenshot-Driven Development. Here's what I mean. A few weeks back, I noticed a bug in Knowii where the resource collection "box" was missing some padding/margin:
So I took a screenshot, pasted it in Cursor's chat box, and asked for a fix:
And guess what? The LLM (Claude 3.5 Sonnet in this case) understood the problem, found the right location in the codebase, and fixed it:
How cool is that? Well I'll tell you: it's MIGHTY cool. And there's more. The fix uses the right approach too. It's GOOD code.
I hate this expression, but this stuff is actually game-changing. It completely changes the way we can iterate on our codebases. And for me, the fact that it works with UI stuff too is telling of the possibilities.
In Knowii, I have added a .cursorrules
file to define a set of "rules" that AI should respect in the project:
And it does. Thanks to this, the outputs I get from the LLMs is of much higher quality. It uses the right libraries/tools/frameworks, places the files in the right locations (most of the time), names those correctly, reuses the right pieces of code, etc.
At this point, I still consider LLMs like junior developers that work together with me, but I think this is bound change in the coming years.
New articles
No new articles this week
Quotes of the week
- Your PKM system is a garden. Daily notes are the seeds, atomic notes are the plants, and your knowledge base is the flourishing ecosystem. Nurture it daily.
- No man ever steps in the same river twice. For it's not the same river, and he's not the same man — Heraclitus
- Education is the passport to the future, for tomorrow belongs to those who prepare for it today – Malcolm X
Thinking and learning
First, I want to mention the fact that BlackForestLabs has released FLUX1.1 [pro] a few days ago. I haven't had the opportunity to give it a try, but it's apparently 6x faster, with better image quality, prompt adherence, etc. So it's probably worth exploring. If you've missed my previous newsletter on that topic, then go check it out.
I've shared a small thread about "The PKM Flywheel" that you might want to check out:
I've recently finished reading Walter Isaacson's biography of Elon Musk. It was a great read, and I strongly recommend it.
I've never been a fan of Elon, and I don't think it will change, because of the way he approaches human and work relationships (whether he wants it that way or not). I'm not judging, because he's obviously mega successful, but it's not just in line with the way I want to live life. That being said, his life and achievements remain amazing. It's an entertaining book, so don't miss it.
Someone on Reddit launched a discussion about leveraging Cursor with Obsidian vaults, and I was immediately interested:
Given how powerful Cursor is, how it indexes everything, and integrates various LLMs, I think it's a great idea. And I'll probably apply it to the further development of the Obsidian Starter Kit.
Last weeks, NotebookLM has made a lot of noise:
I have yet to give it a try, but the AI-podcast generation feature seems amazing.
Eleanor Konik has shared a cool article about how to find what you need when you need it:
Folders vs Tags vs ??? The debate will never end, but the answer is not that complicated. It's not either-or, but "+": Tags + (few) Folders + Metadata + AI
PKM requires thinking carefully about what you need to retain, and where. Many things deserve to be "captured", but few actually need to be memorized. And the balance is not that easy to find:
By the way, TfTHacker has built a really nice product focused on Journaling, and I think it's worth sharing here:
A nice introduction to the Obsidian Journal plugin by Marco Serafini:
Exploring someone else's PKM can be really interesting sometimes: