TodayIngoLearned - Personal Learning Management System
This post is about a tool, sillily called TodayIngoLearned, that I developed as a side project to experiment with technology and to add another tool to my personal knowledge and learning management system.
However, before going into the tool itself, I want to talk briefly about personal or private knowledge and learning management (sometimes called Personal Knowledge Management or PKM).
The project can be found on GitHub. That being said, at this point, I would only recommend running your own instance if you're willing to fix some bugs and idiosyncrasies on your own.
Personal Knowledge and Learning Management
As someone working in education, I’m not just interested in how we (that is, individuals, organizations, and society) learn, but also in how we manage, organize, and share our knowledge.
Since Knowledge Management (KM) is an important and very exciting field of its own, there are various definitions, models, and theories available in the literature. Also, as Syed at al. (2018: 2) have pointed out, “the knowledge-based economy is reflected in an increasing emphasis on the dissemination and use of knowledge as a source of competitiveness for organizations and countries.” Most of that literature, as this quote also exemplifies, is targeted towards larger organizations, e.g., businesses, and institutions.
While this excites me, in this article, I want to talk about knowledge and learning management from a personal, individual perspective. Every single day I’m gaining experience and knowledge, every day I’m learning something new. Sometimes this happens ‘on purpose’, for example when studying a new article or when listening to an interesting conference talk.
However, probably more often, I learn new things on accident. I stumble across something interesting while looking for something else; I have to figure something out quickly and without even thinking about it, I’m watching a tutorial on YouTube; I see someone else doing something in a new and clever way. This – learning without realizing that you’re actually learning – is sometimes also called incidental learning, and it is absolutely amazing!
As I said above, I enjoy thinking about how we can manage (our) knowledge and how we can make learning – both deliberate and incidental – more visible to ourselves and others. That is because I strongly believe that awareness of one’s learning is not just helping with learning itself, but also with many other things in life, both on an individual and a more global level.
I have tried all sorts of systems that help me keep track of my notes, tasks, thoughts, ideas, and learning. So far, the only thing that stuck over a longer period of time is having a notebook, now digitally, with me at all times. That said, currently, I’m relying on a specific set of digital tools to act as my personal external brain. At the moment, I’m using Microsoft OneNote as my daily notebook, Todoist for personal tasks and projects, Citavi for managing (scientific) literature, and a private DokuWiki instance that acts as a networked Zettelkasten. I’m also glancing at Obsidian.md, but I think it’s more of an “I want something new for the sake of it being new” kind of situation…
Ultimately, these tools will change – as they have in the past, and that’s fine. It’s not about the tools; it’s about what they do and how we utilize them in your own workflows.
As complex and scattered as this already must seem to you, a while back, while looking at Reddit’s /r/todayilearned, I decided that I wanted to add another component to the mix. I wanted a tool that allows me to keep track of things, very complex and very simple, that I learned on a specific day.
Of course, this is most likely a completely unattainable goal, and possibly also very stressful. However, I believe that there might be value in trying to be more aware of my own learning – especially of the informal, incidental kind, which we sometimes tend to brush away as unimportant or valueless. In addition, this will hopefully lead to a neat knowledge database that can help me with not having to ‘relearn’ things so very often.
Looking for this piece of the puzzle, I quickly realized that there was nothing that would satisfy my specific needs given my existing workflows. Naturally, I decided to start another small side project 😅.
Whenever I can, I try to bend side projects into personal learning projects during which I can experiment with technologies and concepts that I don’t know very well yet. Since I wanted to play with full-stack Node.js and Progressive Web Apps (PWA) for a long time, I decided to give them a shot.
Therefore, the project’s aim became a PWA (i.e., a web app installable on my Android phone) written in Node.js that would help me keep track of my daily learnings; my TILs, as they are called in the app.
Well, ultimately, creating TodayIngoLearned was a very rewarding learning process in itself. Now writing this post and providing the tool on GitHub is part of my attempt to document my learning and to make it visible to myself and possibly also others.
Whenever I start learning or experimentation projects, I try to build something that I can and will actually (somehow) use. Therefore, the current features are very much aligned with my personal needs and things I want to experiment with (e.g., more Markdown everywhere):
- Progressive Web App (PWA) - installable on Android/iOS (very limited caching)
- Multi-user support
- Markdown support
- Tagging TILs using hashtags
- Commenting existing TILs
- Searching for titles, hashtags, and dates
- Viewing random TILs
- Basic spaced repetition system for studying TILs
Have a look at this brief video to see the current features in action:
Current Features of TodayIngoLearned
The only feature I want to specifically talk about is the spaced repetition learning module (Study). While I don’t believe that there’s much of a point in memorizing such a database – that would defeat its purpose to a certain extend – I think that there might be value in going back to the learnings of the past beyond just looking things up. Going back will allow me to establish a deeper understanding of what I’ve learned and also to connect my current knowledge with these past learning experiences.
That’s why I have implemented a very simple, linear spaced repetition system. The idea is very old and simple yet powerful: newly introduced knowledge (often this is used with flashcards) is shown more frequently than knowledge that you’ve already studied many times.
For TodayIngoLearned, I opted for a straightforward system. You are being shown a TIL (one learning), and you can now decide how easy it was for you to remember or relate to it. Based on your answer, you will be shown the same thing one or two weeks later. In later stages, the time (one or two weeks) is multiplied with how often you’ve ‘studied’ the item. However, contrary to many systems, TILs will never leave the cycle completely since this would not help me, as explained above, in going back in time.
As I already pointed out, the code is far from beautiful or optimized, but TodayIngoLearned is doing what I need it to do for now.
If I find the time, I certainly would enjoy refactoring the project into something that is more production-ready and whatever the JS equivalent of Pythonic is. Also, I have a long list of feature ideas that I’d love to implement - especially regarding NLP.
The bottom line of this somewhat convoluted post is quite simple. In a world in which the amount, complexity, and value of information and knowledge are increasing rapidly, it seems vital to explicitly think about how we can not only attain that knowledge but also how we can store, manage, and share it sensibly.
I also believe that one’s own learning and knowledge is a good starting point to think about this more globally. How do I manage knowledge and information in my personal life? How and what am I learning, and how can I use this knowledge in the future?
Certainly, a simple personal database like TodayIngoLearned won’t solve any of these questions, but so far, it helps me to be much more aware of what I learn during the day.
Syed, Jawad, Peter A. Murray, Donald Hislop, and Yusra Mouzughi. 2018. “Introduction: Managing Knowledge in the Twenty-First Century.” In The Palgrave Handbook of Knowledge Management, edited by Jawad Syed, Peter A. Murray, Donald Hislop, and Yusra Mouzughi, 1–18. Cham: Springer International Publishing.