Comment by caipira
2 years ago
This is poetry. I have been working on a personal project for the last 10 years that replaces every other app I used to use - E-mail, calendar, and all the others we all use on a daily basis - and every time someone sees me using it they ask "Wow, this is amazing, how do I download it!?", and the answer is always the same: you don't.
There's a beauty to engineering something having yourself as the target user, and no one else. I'm 100% convinced this project single-handedly keep my mental wellbeing in check, and it provides me with a constant source of hopefulness and happiness to the future - that no company/salary could ever offer me. My exclusive, differential, unique characteristic against the world, my joker card.
> There's a beauty to engineering something having yourself as the target user, and no one else.
100%, I'm following a similar approach to you with yet another notes app solely for my own use.
Have you written more about your personal project anywhere?
One thing I only realised once I started building my own tools, is that you become - from day one - an unmatched world-class expert in using that tool. This seems obvious and inconsequential on the face of it, but how many pieces of software do you use where you can say with 100% certainty that you know every single thing about it?
Every feature, every shortcut, how it all works internally...
It's only when you use something self-crafted that you realise what this actually means. If it's a tool that you use for work or productivity - you can become exceptionally productive with it due to this from-day-one "total mastery".
This compounds if you iterate. Using the tool daily and feeding back in little fixes and optimisations as you go. The tool grows with you and molds to your use of it over time.
It's obvious that the tool is going to be well suited to your needs if you built it - but it was less obvious to me ahead of time what benefits the side effect of "total mastery" would also bring.
For me, my notes app is now used as my personal knowledge base, project management tool, todo list, daily planning tool and for journalling. Because I built it, I'm extremely effective at using it - and it's lean and fast - only with the features that I know I need.
In addition to being a very fulfilling project - it has created a degree of leverage and efficiency that I didn't expect!
My conclusion is that we should all experiment more with creating our own tools.
> Have you written more about your personal project anywhere?
No, I've had plans to create a blog to write about it or make a YouTube video, but haven't come to it yet.
> One thing I only realised once I started building my own tools, is that you become - from day one - an unmatched world-class expert in using that tool
This is something that I've also realized - a lot of times when we interact with software we kinda just fly by its UI to accomplish a goal, not paying much attention to its secondary features, options, quirks, etc - But when you write your own software, you have a map of everything in your head, and you don't have to guess what exactly a button does, how it does it or where you need to go to do that.
> But when you write your own software, you have a map of everything in your head, and you don't have to guess what exactly a button does, how it does it or where you need to go to do that.
Absolutely! It's quite a unique experience. When I started out it felt like I might just be wasting time and reinventing the wheel but in retrospect it was absolutely a good time investment!
Honestly, a stream of thoughts 1.5hr video about it all would be a cool listen. Not that it has to be 1.5hr but I’m sure your unedited thoughts will have some great insights
Count me as another who would be interested in this youtube/blog post. I'm currently at the beginning of a similar project.
One of the worst things in the world is explaining how it works to someone else, then watching them use it poorly.
I have a convenience tool I made for myself, but shared with my coworkers. I deeply regret sharing it because nobody knows how to use it effectively
What is even worse for me - I myself make a tool then stop using it and later I cannot come back.
Like with the spreadsheets I did to manage stuff. If I don’t use it at least weekly it quickly becomes less and less useful.
But also they mostly served their purpose and it is time to use new one. Not everything has to be used forever.
I remember recommending a non-iPod MP3 player that had a ton of customization options directly on the device. I regretted it because the person that bought it expected it to work exactly like an iPod plus the bells and whistles I recommended.
> For me, my notes app is now used as my personal knowledge base, project management tool, todo list, daily planning tool and for journalling. Because I built it, I'm extremely effective at using it - and it's lean and fast - only with the features that I know I need.
Hey same!
What inspired you? Anything you would be willing to share about it?
For me, I used a different notes app which I liked, and wanted to learn a new language/framework so I wrote a new backend for mine, and it just kinda spiraled.
The next thing I wanna do is add a CalDav interface so I can store events in it, and interact with them constantly with everything else I do.
Evernote originally inspired me (back in the day) as to the value of having some sort of personal knowledge management tool.
More recently Obsidian inspired me in terms of showing me what a non-enshittified, open/portable format note-taking experience could be like. And the beauty of simple Markdown notes!
Through the Obsidian community I discovered the concepts of Zettelkasten / Second Brain etc. and was further convinced of the usefulness of regular note taking and storing/synthesising of reference knowledge.
But I found Obsidian slightly mismatched with my requirements. Primarily because there was certain functionality I needed which can only be achieved with plugins, but I didn't consider their plugin security model to be sufficient enough for storing my most confidential data - even with everything being local files. (That and the lack of open source was enough to make me nervous).
My app is written in pure Javascript, heavy use of web components, running in Electron. No Node.js (apart from what Electron is precompiled with) - so no third-party dependencies as part of my code, and Electron is heavily locked down. I have a lightweight build step using Esbuild (a single rust binary).
Being 100% native JS - no frameworks - and quite lightweight, the app is indistinguishable from a native macOS app in terms of responsiveness! Knowing that may not always be the case, I'm also eyeing up Tauri as a potential alternative GUI "wrapper".
As a .NET developer by day I would have liked to have built it in MAUI but found that to be quite lacking for my purposes.
I've started to write a blog article about it with some screenshots - I"ll eventually get around to publishing it!!
How about you? What did you write your backend in and did that escalate into the front-end too?
The CalDav idea is very interesting... you've got me thinking about that.
1 reply →
If I recall correctly, this approach was what led to Apollo’s success before Reddit murdered it.
I’ve made a poll/group decision making app for my family and friends, and i’m this close to starting some sort of collaborative note/list making app because apple notes causes us so many headaches
Do it!!
I did two yet another notes apps, one including a custom P2P sync backend, All abandoned for Google Keep, but it was definitely interesting.
Ever so often I think about trying again, which I might in fact do if Keep ever becomes paid or stops working well or anything like that, or battery-free Bluetooth gets cheap and common and I decide to integrate inventory tracking features.
The P2P sync sounds cool.
> Ever so often I think about trying again,
I think if you enjoy the process and the result is useful to you, then it's definitely worth trying again!
I don't know about you, but I always learn a hell of a lot through my personal projects too. They've almost always been a good investment of time for me.
1 reply →
I wish more people would take stuff like this, oss it, and disable PR requests and issues. Let others use it / learn / build on it with the clear expectation that feedback and contributions are unwanted.
To be fair, when you do that you would approach coding the application differently, which adds to development time. Also, it can change the whole mentality of developing it. Probably why more people don’t do that, though I agree it would be nice.
You can ossify it (ha!) after you have done all the work and it is mostly complete.
1 reply →
Can you elaborate on what you would need to do different in terms of dev? The only thing I would do differently in this scenario would be to ensure no secrets or anything gets into the code which is a minor lift but also probably for the best.
10 replies →
I disagree with this. If you are truly building for yourself there is no criticism, no prying eyes, it is well and truly yours. Even with PR and issues closed people read it, maybe comment about it on social media or hackernews. There is beauty in a creation that is complete private.
> I have been working on a personal project for the last 10 years that replaces every other app I used to use - E-mail, calendar, and all the others we all use on a daily basis
Would you be willing to describe how it works / record a video of how you use it? But maybe that goes against your last sentence:
> My exclusive, differential, unique characteristic against the world, my joker card.
?
I guess the idea is that you integrated all the apps with each other, such that you can create an event from a text message, forward an email to a Signal contact, this kind of things?
I quickly write scripts to automate things I do several times, but I didn't go as far as integrating all my scripts into a single one. Having things decoupled reduces the maintenance burden, such that I'm not sure I'd want to go that way either.
> Would you be willing to describe how it works / record a video of how you use it?
I'll definitely do it in the near future and post it here on HN.
> My exclusive, differential, unique characteristic against the world, my joker card.
In the sense that, if one day money becomes short, I could extract a few SAAS out of it and make some money or even sell it.
> I guess the idea is that you integrated all the apps with each other, such that you can create an event from a text message, forward an email to a Signal contact, this kind of things?
Yes, the main app has standalone apps, where each app integrates with each other whenever possible, like listing contacts in the email app, and one of the apps is "Flow", where you can create IFTTTs between apps.
I'd love to read a post about this. I started making something similar actually before I got my most recent job. But it was with less pure intentions. I did have various personal requirements that I wanted to see if I could impliment in a singular organisation system, since I am chronically disorganised. However, I started actually doing it just so I could practice my java and have a complicated java project on my github since I was applying for jobs. That's really why it's died a bit afterwards.
I assume you choose the services you depend on wisely, to make sure it's possible to integrate with them? E.g. thinking of common apps like Facebook, WhatsApp, some email providers: they don't necessarily provide an API that you can call into, and sometimes you rely on a library a 3rd-party developed but which breaks regularly.
Looking forward to your post on HN!
I write programs mainly for myself but also usually (not always) make them available for other people to use too in case they find it useful (or want to modify it, use a part of the code, criticize it, make backup copies, or anything else they might want to do with it). If I am annoyed by something someone else writes about it, I can just ignore it; it doesn't affect how I will use it for myself, and other people can still do what they want. (And, if someone does not want to allow others to criticize it and submit patches and bug reports and stuff like that, then you can still make the file available without allowing comments to be written about it, without discussion forums, without issues and pull requests in GitHub or similar, etc.)
Similarly, albeit with much less effort, I configured (neomutt) into the most beautiful and best, rapid UX mail client ever. I use it at work and for private purposes.
People are impressed when looking at it. A handful of them asked for the config. Don't think any one ever got used to it.
How did you configure neomutt? I mostly have the default configuration, with some other tweaks I've forgotten about (like changing mailboxes using a function key). What am I missing out?
I will take a screenshot once I'm on my laptop (in a day or two)
What about SSO? Sadly, none of the terminal-based email clients I tried supported this, but since you said you use this at work, maybe it supports SSO login to your work email?
It's a bit of a trek to get there, but here's how to work around SSO...
1. Go to the Microsoft/Google developer console with your work account and create an "internal app" for personal use 2. Generate a set of oauth2 creds under the app 3. Use a program like mbsync or offlineimap to sync your mail down to a maildir. Iirc mbsync was more reliable but required a shim script to convert oauth2 creds to an api token. 4. Point your email client to the mail-dir.
I had this set up when I used gmail at work, but AIUI outlook should work roughly the same.
There's a ton of blog posts out there of people setting this up, unfortunately too many variations to have "one true" guide, so sorta have to pull from several places.
How would SSO work for a terminal? What would it do?
1 reply →
So far I only use IMAP
please share this, I'd like to check it out
https://github.com/kmARC/dotfiles
It's already shown on the screenshot, but I'll get a better one soon.
Its like your own self built cottage in the woods.
I like this parallel, it connects to other metaphors like "digital gardening", aka cultivating information and cross-pollinating (adding links) to related pages.
Would you be open to sharing screenshots? I'm curious about the mental-sanity claim, do you not have your email + calendar setup on your phone?
Not OP, but how often do you have an app that is exactly how you want it? You might just shrug off the small annoyances, but you could fix them and make the app something that becomes second nature. The UI won't suddenly change, so you won't have to relearn how to use the app, just like you don't have to relearn physical interfaces.
The above are all reasons I use emacs.
1 reply →
This is (largely) why I do all my coding work in an editor of my own creation. It suits me perfectly, and it never changes unless I want it to.
It is only very rarely exactly how I want it. Often, I cannot even find software that is half of how I want it (and is sometimes difficult to change). So, sometimes I will write them by myself to work differently. But, other times another program can be modified as needed, but that is less common, to me.
I've used some horrendous software in the past and it's nice that - even though I can't fix that software - I can write my own software and make it behave exactly how I want it to.
I love it. I have a couple similar projects I've worked on in the past (a couple of which were what got me into engineering in the first place) and the clarity of vision you can achieve when you're really truly building something just for yourself is unparalleled. What follows is also a very unique sense of fulfillment; as you've eliminated all the societal contributors to the sense of fulfillment (which are of course fickle), what you're left with is something that by definition had to be made to make you and only you happy, and it lasts over time in a way that is durable and pure.
My greatest regret these days is how often it feels like I lack the time to do such projects -- but that of course is a cop out on my end! The hard part is only getting started and being consistent; you don't need to do that much on a week to week basis to get to somewhere really meaningful after a few years.
Tell us more about your project! Did you start it from scratch? Or did you use another opensource app as starting point and developed it further for yourself? What language is your app written in? Where do you run it? In CLI? or desktop GUI? The more you can share about it the merrier. I am sure others want to learn more about this too.
It's basically like the Google suite of apps or Next Cloud, I have the main app where you can manage your account, backups, etc, and it links to a bunch of other apps, each one living in a subdomain. The apps that already exists are:
- Password manager - Finances - Contacts - Account (Backup, Restore, private keys, etc) - Authenticator (OTP, TOTP) - Email - Photos - Movies (2 parts, one is an IMDB like manager and the other is a Netflix homepage look alike for viewing content) - Flashcards - Link tracker
And I have the following apps in the development pipeline:
- Calendar - Drive - Notes - URL Shortener - RSS Reader - Tasks - Books - Musics & Podcasts - Timelines
It started just as an MySQL database that I used to track my expenses and budget, later I started also storing passwords in it, quickly I realized that I needed a user interface, then I slapped a bootstrap theme on it (this was back when Angular 1 was all the rage), then it went through many iterations as across the years and the current one started back in 2020, it uses VueJS 3 and used to use ant design, but I had to create my own UI library to accommodate the sheer complexity of the custom UI needed. It runs on a raspberry pi with docker.
“Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.” - Zawinski’s Law
:)
5 replies →
Unfortunately you almost have to do this in secrecy with a homemade scraping app lest its popularity causes the site owner to take action
For my job, I've created a python ask and CLI that meets the exact needs of how I need to communicate with our API. It's leaps and bounds better than any postman collection my employees use
The code is a mess so I haven't shared, but it is something that makes me more productive every day.
Why would you want to combine it all into one app? Having seperate apps for those things (maybe besides having calendar and email together) sounds proper to me. Seems odd to put it all together into one.
Proper so that people who only want to use part of it don't have to use all of it. But if your user base is one person then why not go seamless? If you dislike that part of the app, just delete it.
Not an app, but this is how I customize my OS and workflow in general, and think Linux for making it possible and even easy at times.
I've been using i3wm for years and have recently started doing deeper dives into the sorts of things that you can do with what's either already installed or easy to add (e.g. rofi for input, conky for display) [edit to complete the thought:] I really love how flexible and relatively straightforward it is to script up simple applications that have a fairly significant impact on my "quality of life"!
I switched from i3 to bspwm a few years ago and I have basically a "complete" setup.
I do occasionally make scripts like you mention, they're super fun, handy, and almost impossible to share unless someone else has the same niche knowledge and requirements.
1 reply →
> I have been working on a personal project for the last 10 years that replaces every other app I used to use
Elon, is it you? ;)
Curious, how deep does the DIY go? I am curious what tools you currently leverage to support your tool? For example, instead of using ripgrep, did you create your own easy-grep program? Or anything in that similar vein? Just curious of anything you’d like to share :)
I have often thought about creating an everything app for myself. Do you have it as a desktop app, or is it a web app you host somewhere? Would love to read a blog post about it if you have one or would like to write one.
same here would love to hear what is the uique twist yours has or see a screenshot. for me its people centrism.