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.
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.
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.
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
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.
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.
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.
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.
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.
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.
- 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.
The code is a mess so I haven't shared, but it is something that makes me more productive every day.
Elon, is it you? ;)
It's a simple Qt app that uses a text file for data storage. I wrote it after noticing that she had trouble remembering which shops are open when. I asked her what to call it, and she said "Gladiolus, like the flower" so I named it Gladiolus.
I can say for sure I've never had a more appreciative client as a programmer than the one user of Gladiolus :^)
This resonated with me.
This is a major source of friction to "scratching your own itch" in modern software development. Makes it extremely painful to get started. And runs against an engineering mindset, as it's not understanding principles of computing or composing components in a sensible way to build a useful new thing. It's just banging your head spamming incantations found through Google until something finally works.
What do you mean by ruling out Microsoft? You can install and run your own software on Windows?
Yea, all the while hoping you don't mess up something even worse!
I feel like Apple has made some strides in this area - having Xcode manage a bunch of profiles + key signing and whatever else it does when I click "Yes, make it easier for me". But it also randomly forgets settings and breaks etc. which is fun to re-troubleshoot.
I started a homelab years ago like a lot of folks here, and slowly that’s changed to being a hobby of building and selfhosting applications for my “users” of 5-15 of my family and closest friends.
I’ve written so many little apps for them (e.g movie night scheduler) and integrations into our group chat for whatever someone can think of. It’s really blossomed into something that has made us all talk and hang out so much more.
Even distant friend groups that don’t know each other have now met in person (without me!) and gone to baby showers, weddings, etc.
If anyone has a group of friends like that, consider making something for them!
My GF and her Sister kept a running tab (Beans) between them - and always were having issues reconciling who owes what for when etc...
These are smart and capable women, but for some reason their personal tab between eachother was a headache - so an "app" I made was just a smarter spreadsheet in google docs they share and they enter their info each month and it tallies who owes what.
I forgot about it for over a year or so - and so I asked my GF is they were still using it
"We use it all the time - its been such a lifesaver."
Its literally just how one would use any spreadsheet... these are high-paid, highly successful people, and were struggling to just get a 'tab' thing going.
One of the things I did, was have it load pics of their shared dog on each new tab (a tab per month) and they loved that.
Silly, stupid, took me 15 minutes and they have been using it for the last couple of years and love it.
But yeah - build little tools for a small circle.
For example, your use case sounds like the ideal scenario for Settle Up. Me and my 2 closest friends have a running group where we annotate expenses and there's always a clear picture of who owes what amount and for what reasons.
Of course, tiny customizations like a dog's picture per month, are not possible to do with a 3rd party app :-)
Three years ago I created a simple app for my family and friends to share recipes together. I kept adding features they requested, and after about two years, the app was apparently good enough that people started sharing it by word of mouth.
By October, the app had grown big enough that I had to start charging new users to cover server costs. I’m now contemplating a future where I work on it full-time.
I'm writing a book (https://opinionatedlaunch.com) over the course of 3+ years and I have to keep updating the "Mobile" chapters. Not because of some fancy new framework, but because both Apple and Google keep adding "requirements."
Sure, they're for the better (e.g. more strict access to phone GPS, etc) but if you don't keep up, eventually you'll find your apps removed by the platform at some point in time. In this sense, there's no "done".
You probably can still distribute that little program you wrote in 1990 in Pascal. I don't know the equivalent for mobile apps. (Distribute, not run. You can run it easily on your old phones).
* distribute on Testflight and never actually do a real release
* make an HTML app that works well on mobile, and can be cached for offline
Gradually I think I'm coming to prefer doing the HTML version
You don't need adb to sideload applications. If you enable sideloading, you can copy it onto the phone and run it that way.
I'm totally with you re: Android and Apple being walled-garden ecosystems with ever-changing rules. But, don't you feel like this is true of most software (that it's never "done")? In my experience, there aren't many categories of software that can be truly feature-complete unless they are fully decoupled from popular culture. Maybe GNU units or grep can be called "done", but most apps have to change with the world around them.
The problem is that "done" is a subjective term. Most of the software I use on a regular basis is "done" as far as I'm concerned. If it didn't meet my needs, I wouldn't be using it on a regular basis.
This ignores security issues, of course, but most of the software I use on the regular doesn't have a networking component, so that's not as much of an issue.
I also think it propagates the notion that computers are magic and should only be programmed by magicians. But no software developer I have ever met has felt this way. I don’t feel this way.
Google is plenty evil in their own ways, but they're at least not anti-tinkering.
It’s somewhat painful and inconvenient but the old desktop OS model where arbitrary code can not only be run at a whim, but also gets free reign to do whatever it pleases simply doesn’t scale to the masses. It was a problem even prior to smartphones but has only gotten worse as larger swathes of the population have come aboard.
The EU DMA and the resulting competition may cause Apple to release a lower priced tier for apps with a smaller distribution, and I look forward to that.
You're right about the notion that computers are magic, but distribution isn't the cause of that. I think it's a shame people don't seem to want to do more with their computers. I remember my parents using pretty barebones database apps and stuff on a 386 back in the day, and somewhere since then the machines have become bigger and scarier, and they're less inquisitive. Maybe age, but maybe we've made the machines less friendly to new code.
Comparing it to cooking a meal at home for your family is a perfect analogy.
It doesn’t actually make any sense for anyone except you, because fundamentally you’ve not actually got a product, you’ve only got a market.
Bear in mind that it’s perfectly legitimate to scratch your own itch and just build something for the sake of building it, and that’s a home-cooked meal too.
Eventually, of course, I'd like to do Some Really Cool Project with it beyond the default functionality, but I have no idea what.
Gave an audible chuckle at this one. I've done many a battle with those gods; they be beasts.
IMO, bad actors.
40 years ago we didn't need much in the name of cyber security, restrictions, controls, etc. You most likely personally knew the vast majority of other people that had any kind of access to your systems, or that you exchanged any kind of electronic data with.
As the aperture of users and developers has opened, risks have increased. There is probably some analogy here similar to how the value of network increases exponentially with the number of connected devices, the risk factor increases exponentially with the number of users and potential software developers for an ecosystem.
I have a little internal app for my company. Just an isolated Rails app. It touches no internal business systems, but whenever I need somewhere to put a little code - it goes there. It has my growth chart, a little search engine for some internal data, a couple scripts to remind me about recurring actions, and some random integration tools like an RSS->Email script for the blog.
I recommend everybody just have a "miscellaneous" app separate from customer data for non-core code. Having a low barrier to building fun things liberates the mind. Not all code has to be high-stakes business work.
Watching Jeopardy is a new nightly tradition, but they always complained that they wish they could see the category when the clue is on screen, which is what inspired the project. It’s a full screen PWA and my mom likes to mirror her phone screen to their smart TV to play. There’s no score tracking or sound effects or “multiplayer” because it’s made for the way they like to play.
Of course, I can’t distribute it publicly either for copyright reasons, but I wouldn’t want to anyway.
I don’t do any real “curation”, I just cache the entire dataset with a web manifest file and do some simple processing on it to find a game with a full set of questions.
The mobile networks at the times were abysmally slow and unreliable, the API I was using was slow, basically loading times were unacceptable, I needed the info without delay. No, actually pre-fetched even so that it was working even when offline. I ended up scheduling my app using Tasker so that when I was likely commuting it started updating the timetable in the background. Now I always had instant info available, as good as I could at least.
Plan was to release the app but I eventually realized I would never polish the app to a releasable state, but it still worked 100% for my exact usecase. So I never did get further than a beta test on the Play Store.
I have a single JavaScript file that runs all the automations in my house. Everything runs on Mqtt and this file handles all timers and temperature adjustments and turning everything off in the house when the right button is pushed and checking that the doors are locked and keeping the front porch lit when the sun is going down and dimming as the sun comes up, and heats my office when I'm in it and it's colder than the rest of my house, but not otherwise, and notifies us when the washer or dryer are done or when it's time to change the automated cat litter.
Adding a device takes about 5 minutes. Changing a timer takes less. I've ssh'd in and changed things from my phone when lazy on the couch.
The commit history is practically useless. The code isn't ideal for a team. It could use a UI. But I love it. And my family is happy with how it all seems to work without much hassle.
Same goes for the kitty litter box, although that's just a standard z-wave power switch, not a "heavy-duty" one. That one gets some false positives, so our counter gets a bit higher than the real one, but the discrepancy isn't a huge deal. Looking forward to debugging this one eventually.
It used to be possible like showHN posts go on to become smashing success. But Dropbox like posts seem like an impossibility now.
I've been having serious mental crisis from this realization.
Why does AI make you feel this way? It feels the opposite to me — like meals that formerly required a master chef to make, but soon anyone can make for themselves at an acceptable level of quality with meal prep kits
Not sure if that's changed but ever since seeing that line, I've been put off of that world. I still occasionally click on HN links advertising new methods which can be run on "consumer" cards and every time it's just a 3090/4090...
I don't have that much money.
Yes writing a todo list app is now faster with copilot and stuff but thats now what i meant.
Try to satisfy yourself, and maybe that will lead you to a commercial kitchen with a Michelin star. I know nothing else will.
But there's a thriving community on HuggingFace and Reddit showing what you can do with the lo-fi versions. In particular, the evolution of lower bit inference (and I believe training as well even) has reduced memory requirements and because of that hardware requirements considerably. There is a lot you can do with your own local gen AI model running on your personal machine.
Now it feels like I have these incredible capabilities to apply LLMs in novel ways. I've had a personal project (an expense tracking app) where now I can see a path to easily do things like scanning receipts accurately, automatically categorizing CSV imports, etc. They were always within the realm of possibility - but would have taken so much more time to build as a one man shop. And we are just at the tip of the iceberg right now.
An app can be a home-cooked meal - https://news.ycombinator.com/item?id=22332629 - Feb 2020 (130 comments)
Also:
An app can be a home-cooked meal (2020) - https://news.ycombinator.com/item?id=38856985 - Jan 2024 (1 comment)
An app can be a home-cooked meal (2020) - https://news.ycombinator.com/item?id=32800518 - Sept 2022 (51 comments)
https://www.robinsloan.com/colophon/
I love the built-in style guide. I'm totally stealing some ideas from that...
This is actually why I think more people should learn some coding (and why there should be more HyperCard-like environments for non-professionals). It makes the computer or phone a tool to do the things they want, not just what some programmer in SF wanted to write and try to market.
What if you have never cooked at home but all the time in a commercial kitchen? That's the reality for most of us here so it is a bit difficult to relate to this article.
1. Not all articles will be relatable to everyone, and that's perfectly fine.
2. Your "what if" scenario is trivially surmountable: write some code at home, for yourself, for something you enjoy, or for someone you care about.
I don't understand how someone could read this and not only have the takeaway that you did, but come here to mention it.
Really? I'd hazard a guess that the majority here (> 50%) have never worked at a commercial kitchen!
I'm honestly curious to understand why you think most people here must have worked at commercial kitchen and never cooked at home?
It’s OK if you did not relate to the article. But I certainly did!
I agree with the sentiment of the poster above if applied to the majority of professional software devs though.
Carver Mead, in a hardware context, described the "tall, thin person" as someone comfortable at all layers: with their feet on the (rubylith!) layout and their heads in the architecture.
(I have read that in the days before email, it was customary to let the owners' kids sneakernet those manila "interdepartmental mail" envelopes as a summer job, because it brought them into contact with all the facets of an enterprise)
> Making the landlord and the tenant the same person has certain advantages, as that the tenant pays no rent, while the landlord does a little work. — GKC
Fun fact: that experience will likely change you, and your commercial kitchen co-chefs will also appreciate you more afterward.
Another recent app I made happened when I moved into a new apartment. I realized tha the doors were very soundproof so if someone knocked at the main door, there was a good chance I wasn't gonna hear it. So I put up a QR Code at the door, pointed it to a webapp and that basically functioned as virtual bell. Where I would get a notification on my iphone and apple watch everytime someone "knocked"!
My friend Geoffrey Litt is heading the malleable software group at Ink and Switch: https://www.geoffreylitt.com/
But for whatever reason I get the urge to polish the thing, make a pretty icon for it and publish it in the hope that others might also have the same weird specific need as me. That script above just turned into an app called IsThereNet : https://lowtechguys.com/istherenet
I'm not sure why, but I get a little dopamine hit when I see people learning a thing or two from my experiments. I guess that's why we still do the kind of open source that doesn't ask for money.
[1] https://gist.github.com/alin23/e15b6ffc62a85790096f0228c54fd...
How much we have lost.
The mobile world brought the masses to computing in a way that desktop never could. Unfortunately, the company with the best intuitions in the space also happened to be the most closed, paranoid, and sociopathic entity in the market.
This article had such a huge impact on my life and led to me creating many pieces of software[1][2][3] that were hyper-specific to myself and my needs at the time, which also later found an audience in others who think and work in ways similar to me.
[1]: https://notado.app - a "content-first" internet bookmarking and highlighting service which has been my second brain since 2020 after growing frustrated with Instapaper, Pinboard and Readwise. Eventually I expanded this to allow for RSS feed publishing on specific topics in an attempt to solve the "firehose" problem when following other peoples' bookmarks/shares, and at the end of last year I added what is now my most used feature of image generation from highlights for sharing on image-first/text-hostile social media platforms.
[2]: https://github.com/LGUG2Z/komorebi - tiling window manager for Windows. There wasn't really anything fit for purpose on Windows when I started, and I was too spoiled by bspwm and yabai on Linux and macOS that I just had to write something before I could become a truly productive Windows user. I'm astonished that this now has 50k+ downloads.
[3]: https://kulli.sh - I use this to aggregate comments from HN/Reddit/Lemmy/Lobsters on an article I'm interested in in one place to read. This has helped me find some interesting niche communities on Reddit and Lemmy who share and discuss things I'm interested in that I otherwise wouldn't have found.
When I talk about the app, some people immediately jump to other inventory problems in their own lives: Can you make it work for my wine fridge? Could I keep track of my kids’ ever-changing wardrobe? I’d love to manage my Warhammer collection this way! It certainly seems like there could be a consumer product to help tackle those problems, but it’s not gonna be my app.
Edit: In more of a work context, I think internal tooling for specific users or teams can feel similarly empowering. When you have an intentionally-constrained set of users, finding product-market fit and making sure the solution actually works for their needs becomes the only goal. And with so few users, it’s easy to keep tabs on what is and isn’t working for them.
I've seen a few of these and they always fall into (non-)maintenance hell once the dev (it's always just one, because the business can't spare a whole team for something like this) leaves, or until the next re-org (read: almost certainly less than two years from any random point in time) when the responsibilities of the team it was built for are divided among other teams, or outsourced to a body shop like CapGemini that won't use it (because they can replace the functionality with an army of managers with spreadsheets, all of which they can bill for).
In short, I think it's largely a fantasy to develop custom software for small userbases on economic grounds (at least for nontechnical users using typical "real" stacks -- spreadsheets and "programmer tools" are a different story), which is kind of the point of this piece.
What is that one feature I wonder? Robin, you around to answer?
Ask HN: What apps have you created for your own use?
https://news.ycombinator.com/item?id=38623695
Still haven't checked all the replies with links to their apps, which many gave, but plan to.
And it's explicitly not allowed to publish in the app store for such a small audience.
2020: 556pts, 132 comments <https://news.ycombinator.com/item?id=22332629>
2022: 186pts, 51 comments <https://news.ycombinator.com/item?id=32800518>
The idea is to allow people to “share ingredients” of internals of projects without the requirement of sharing the code
Great way of looking at programming. It really is just another way to create, akin to drawing or writing, and it feels as if we almost desecrate it by treating it the way we do. Inspiring article.
Eventually I pushed it forward (thanks to the Unity Engine at the time) and made it a "real" app on the App Store. As others have noted, there's a large gap between bespoke, home-cooked software and commercial choices. As a full-time developer this was a side-project and still suffers, imho, as an under-invested commercial app. The app has had very modest success (pays about the equivalent of one espresso a week) but I still love it.
When an app is "just yours" there's an aura of fun about the project that can get stripped away when the trajectory becomes more commercial.
I also have quite a few tools like this, although on another platform (Emacs). I love the whole concept of "home-cooked apps".
And btw, the first project like this I made - for myself and my family - was a database-like app on a Commodore 64 over three decades ago...
I don't publish these things for the most part, each of them took between a few hours and a few days' worth of spare time to put together, they're all made without pretension for an audience of 3-4 people only.
I can't help but imagine-architect software solutions to my meatspace problems and nonproblems if I let my mind wander. I have to remember to ask myself, sure I want to build it but would I really want to use it?
By the time someone has finished telling me the awkward thing they had to do today I've got an idle loop in my brain spinning (silently) on finding a "better" way.
Admittedly, not many of these get built because time is limited, all software takes ongoing care and many cures are worse than their associated disease.
Some do, though. Particularly internal tooling for work which can be measured in $ and some projects which scratch a community itch which can be measured in positive interactions.
One thing I'm always worried about when I develop one-offs myself is what happens if I'm not there to service/update/maintain the thing. For some apps (like family photo archives) this matters a lot.
I was quite sure I'd set it up for myself and family before I read it required AWS .. I wish instead of buckets and lambda functions... well... perhaps it's worth replicating the whole thing in Nodejs and sqlite which would be the highest praise of all ;P
[edit yeah yeah there'd have to be a bucket-like storage blob somewhere.// or would there?]
A personal social network. No influencers. No ads.
It rides on existing messaging rails (email, SMS, IM…) for distribution.
You just post stuff to your feed, and your contacts get a notification when appropriate.
Which is exactly what various factions of my family use for shared messaging.
It’s the purest social network….. people and messages.
Ironically owned by Facebook.
One relative tried it but would ignore messages (iOS notification system design is bad, but their home screen is disorganized too), and would constantly revert to iMessage/SMS/MMS. Two other relatives who are in a WhatsApp group with me pretty much refused with "But I can talk to you on WhatsApp just fine?", or "Who am I going to talk to on there?". Ironically does not stop them from downloading Viber, Instagram etc. Thankfully, the WhatsApp bridge + Matrix client works for 95% of the use cases.
Thus, I am happy that the author's efforts found good use and were appreciated.
With AI helping it really lowers the barrier to personal or one-off apps you wouldn't otherwise have time for. We did the app in the framework he was comfortable with, which I hadn't used, and I wrote all my code with AI.
I got smoked in the game though.
Must have been taken down from shirky.com since so WBM's last capture is a 404.
Wish android development was a bit more straightforward, I always find it kind of difficult just because of the amount of things that might go wrong. Kinda like coding videogames I guess.
Not everyone could be a home cook developer in 2020 .. but in the future, my bet is they will be able to thanks to AI/LLM advances.
Maybe we should expect (and are due) a total paradigm shift in terms of digital product consumption?
This was my exact sentiment some time ago after remapping a bunch of keys, along with "why didn’t I think of this sooner".
It still feels magical to this day and removes 90% of annoyances when typing.
Using standard keyboard layouts is like riding a toy sized tricycle now.
Is there a way to get back a user ID from TestFlight?
The other option would be an adhoc certificate, but then you have to collect everyone's apple id.
Apple makes this kind of app distribution process more painful than it needs to be.
I’m not sure what the right balance is, and maybe this is the right balance.
1. SMS do not support group messaging. An SMS with multiple receivers is just multiple copies of a 1-to-1 message. The other recipients don't know about each other.
2. SMS do not support images or videos.
Maybe you're talking about MMS, but I've always found that clunky. I'm not sure why. Part of it is that it goes over a seldomly-used separate type of connection (at least with 3G and earlier technology) which isn't as reliable as plain TCP.
We have our own no nonsense chat desktop, web and mobile apps for ios and android. Our own calendar for family events as well as to coordinate daily operations. Our own forum. Our own pages with resources and even our own documentation bot that you can ask pretty ambiguous questions and it can point you to the past posts/documents/chat threads that are relevant (when you don't remember where it was mentioned but you can describe what you are looking for).
Even a wall mounted ipad with couple tools that we find useful. Shopping list where you can add stuff for the next shopping run. Voting for meals. Calendar which is especially useful to kids because they can book our time when they need something or they can see when I plan to do my training sessions or when I am or I am not available (I work remotely and don't have set day plan).
Recently started spending time with my eldest son to add more features -- any way to get kids hooked up to programming is a win IMO.
Meh. Pretty disappointing excuse. Wouldn't take long at all to separate secrets and would make the app inherently more secure anyway.