Your writeup, the idea of the app, and how you executed it is a breath of fresh air. The idea of building for a TAM (total addressable market) that is in single digits is a nice contrast to pretty much everything that's out there. Such an app is one step higher than a learning project, with oodles of utility, albeit for one or a few people. But those are the most important people in your life, so its much more fulfilling!
Comparing it to cooking a meal at home for your family is a perfect analogy.
TAM-driven development is at odds with the spirit of the minicomputer era, where it was expected that people would be making applications for themselves first.
I'm actually surprised that TestFlight was available for this, since I recently worked on a private app and did a bit of research into how to distribute it - everything I read implied that TestFlight apps will be reviewed by Apple employees and must be apps that intend to eventually be distributed more widely (e.g. beta versions). I got the impression that an app for family or friends that wasn't set up with a plan for release at some point would be rejected.
Based on the blog post, it was created February 2020 where the rules you mentioned was not enforced yet. But around that time I believe you can also export an ipa file so anyone can install but you have to include your target’s UUID in the app signature.
You can distribute to "internal" testers (people you add to your developer account) without any review process. The app is only reviewed if you want to distribute to external testers.
This post significantly influenced me back when it was first on HN, and helped me articulate what I was already doing subconsciously.
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!
Ironically, this is a great way to build actual products (if you’re open to letting them grow).
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 have a boatload of feature creep ideas for you to reject... Shall I post them here, or DM you?
Ha! Either, or feel free to email me at jeff@umami.recipes.
> Take a pic of a recipe, OCR if can
The app actually has an OCR recipe importer (tap "Add Recipe" > "Scan Recipe"). It uses Apple's native iOS OCR library, which inserts text directly from the camera.
It doesn't support importing from an existing photo yet though -- that's high up on my list to build (after Android).
> else host the pic?
You can upload photos for recipes!
> However, an interesting aspect of the "recipe" app logic is that it can apply to, say, mechanics
That's a really good point. I bet much of the underlying functionality could be re-used in a completely different app focused on something like mechanics. Another example I've thought about is a separate app specific to cocktail recipes, with features tailored around mixology and bar management.
I love writing little tools - but I tend to do so for others, than myself.
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.
I love all the comments that I'm reading here, but for most of the cases that are being presented, I'm having a hard time imagining myself needing to do the same, because for the most part there is always an app that already covers that need.
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 :-)
It wasnt more about solving a $ issue as to morphing their interpersonal behavior over a tab between sisters... (and my personal friction) ((have you met any sisters who are both close and highly successful in different fields)) - sometimes, you just need to leave the room... this was my method of exiting the room of financial "settle up" types of comments - and I had the mortar of dog pics.
> For example, your use case sounds like the ideal scenario for <XYZ>
That’s till some product manager decides they want metrics to go up, and the app starts spamming you notifications multiple times a day, or tries to shove in your face unnecessary financial products, and starts selling your transaction data with the hope of increasing monetization to keep their overstaffed teams…
A home-cooked app from someone you know/trust seems much nicer than that.
> When you liberate programming from the requirement to be professional and scalable, it becomes a different activity altogether, just as cooking at home is really nothing like cooking in a commercial kitchen.
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.
I think you are incorrectly extrapolating to the entire community based on your personal experience. You are assuming that most of the readers at this site are working in a similar professional context that you do. You are also assuming, but all of those people who work in a professional context, do not also “cook at home.”
It’s OK if you did not relate to the article. But I certainly did!
For what it's worth, I think HN audience by nature of spending their free time learning about interesting techy things is more likely to be doing their own "home cooking".
I agree with the sentiment of the poster above if applied to the majority of professional software devs though.
> 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.
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?
The poster is speaking through the analogy: they mean most people here have coded professionally but not at home. I'm not sure I agree with that, I think a lot of programmers have done hobby projects, even if only when they were starting out.
> they mean most people here have coded professionally but not at home
The idea that there are devs who did not do fairly extensive home coding is so alien to me! I don't personally know a single dev like that, and it would never have occurred to me that they exist.
It's never too late. You can start coding after work even right now. You can serve a well-cooked app to your friends and family instead of shipping a feature you don't care about to an amorphous mass of users (that you don't care about) - it's an experience worth knowing.
Fun fact: that experience will likely change you, and your commercial kitchen co-chefs will also appreciate you more afterward.
I would recommend trying home cooking if only for the reason that, in a commercial kitchen, you have a role, but cooking at home means you will have/get to do everything yourself: from ingredient sourcing to dishwashing (and even front-of-house stuff like table service).
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
Well, try it. Use an awful language you like, break conventions. If you don't like it, just scrap the project. After all, noone is waiting for you. It runs like crap and looks awful? As long as you like it, your whole userbase is fine with it
I like that you shared this post. I imagine for someone who has only done corporate programming that making a home-cooked meal (in programming terms) would be very refreshing and liberating!
IMO the technical part of this is easier than the social part. I've been hosting a Matrix server for years, and use it to talk to my wife and one friend.
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.
This is an amazingly refreshing view of programming. I am envious of anyone who can apply first hand their programming skills to the world around them. I can program, but real life and programming just seem to occupy entirely different realms of my brain, unable to cross over.
Fascinating. Sometimes I think I might lean too far in the other direction.
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.
Nice write up. I like building small apps like this as well, like gigtablet.com which I made for my band to use. It has us 7 users and we’re happy with it so that’s all that matters.
Nice article and lovely concept. I'm not a professional dev, but use programming to enrich my quality of life, and it's nice to see some of those thoughts put into words.
Lovely article but this made me sad/mad. How did we get to the point where this is acceptable? MAGA (Microsoft Apple Google Amazon) have a stultifying effect in our software sharing lives now.
Agreed. Devs are somewhat of an isolated segment of society and so there are few politicians thinking about the stultifying effects of App Store distribution or the fact that even the devices themselves are hostile to shared personal projects.
>How did we get to the point where this is acceptable?
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.
Exactly. Even major “trusted” third parties like Adobe can’t actually be trusted to keep their fingers out of parts of the system they have no business poking around in. Time and time again it’s been proven prudent to treat third party devs as hostile parties by default, with trust being hard-earned.
I'm curious if Apple actually uses they software they write. Surely they must right? And if so, then how do they not improve it. Or if they don't ... perhaps they don't use other software so they don't understand how things could be different?
The author of the article, Robin Sloan, is an author that's written a couple of novels and a bunch of short stories (as well a great monthly-ish newsletter). I highly recommend giving his first novel, "Mr Penumbra's 24 Hour Bookstore", a read if you liked that line.
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.
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.
for REAL. when I started using Emacs, everyone told me Emacs was old and I should use Sublime Text II or Atom. Now they all tell me Emacs is old and I should use VS Code. I wonder what they'll tell me to use instead of Emacs in ten years :)
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.
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.
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?
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?
In this case it's easier to bypass SSO with a set of oauth2 creds, but the aws and azure clis support SSO login by opening a browser to authenticate and generate a short-lived api token that gets passed back to the cli. So it's definitely possible for terminal apps to support SSO.
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.
> 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.
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
> 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!
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.
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
> 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.
Ah obsidian... I feel it's a very common tool. There's a whole pile of clones/related projects too (LogSeq, Roam, etc).
What kind of functionality were you looking for? I've found that once I controlled my notes, the amount of things I wanted to dump into it kept growing.
> How about you? What did you write your backend in and did that escalate into the front-end too?
I started using TiddlyWiki, and really like their approach to content (small notes, composable content, the "river" of notes as you click through links). You can add metadata (KV style) to the notes, which you can use in the markdown, which is quite powerful. The tool is meant to be "in browser" and you're supposed to save the whole HTML source when you make an edit. For me, I wanted a traditional CRUD interface to a server. They support that, but the developer isn't really focusing on it. So I wrote my own because I had a few weeks and wanted to play more with Golang.
My only gripe, and the reason I'm considering writing a new front end (which will be a big learning activity for me), is that TW doesn't support 'lazy loading'. very well, so if you have a massive amount of notes, it gets a little wonky. I discovered the issues with this when on plane WiFi and getting issues with overwriting instead of editing notes.
But once I had a CRUD API for my notes... I started going crazy. I can import photos, and link to them (pretty basic) but I can also push emails, calendar events, etc. I set up a browser plugin that lets me automatically take notes on any webpage, and adds tags/metadata to the note. The limit is now the front-end which is where I'll probably spend 2024...
I also had the idea of integrating with HomeAssistant, so the device's history was viewable in a 'note' about the device (dynamically generated from a template instead of static text from DB). Possibly with camera events as their own entry... Lots of things are possible once you control where the data comes from.
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.
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.
I like this parallel, it connects to other metaphors like "digital gardening", aka cultivating information and cross-pollinating (adding links) to related pages.
> 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.
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:
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.
I like that law! My law for the past few years has been every app expands until it is beyond bloat, which is recognizable when it has the feature du jour, which can be found across every popular and unrelated app. At the time, that feature was stories, which could be found in Snapchat, instagram, Facebook, WhatsApp, Uber eats, and I think even Venmo at one point.
Once you got away from social apps, it was clearly feature creep. That was my indicator for when there was probably a better alternative app for accomplishing the app’s original purpose, but it was often too late to switch due to the network effect.
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.
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.
I dunno, that seems to be just shame instilled by the toxicity of certain programmer culture.
I mean, it's not the clearest thing to read but labeling it horrible seems to be a judgement call that's unwarranted. And as software developers, we should create an environment that's less hostile to people who write things in ways we wouldn't.
And honestly, that set of list comprehensions has a bit of a lispy functional vibe, which could quite frankly be applauded in certain contexts.
I have my secret perversions as well, so I've got no judgement for you, but I do have to wonder how our editing styles differ if you find that easier to navigate than the equivalent nested for loop.
for bar_vec in bar_mat:
if bar_vec != []:
for y in bar_vec:
if baz(y):
for x in y:
foo(x)
Seeing it written out here, the example looks nice. In real code with more complexity, it takes longer for me to write it, and it usually takes up a lot more space than this. It bugs me how much space it takes up for something that is one idea in my head (Foo all the baz things in bar_vec).
But if there is anyone coming after me, I would write it in this style for their sake, because this style is easier to change.
At least in my code, these nested loop thingies are rarely unique. If I have to do it once I probably have to do it many times. If I'm being mindful, I stop repeating myself and just write a generator so that I can invoke it like:
[foo(x) for x in nonempty(bar_mat)]
Mostly this is because I live in fear of ruff's complexity warning, C901.
I assume the issue is you self-censor more and have to do things exactly by the book.
I've never been particularly interested in "software for one person" but I've shared lots of working but not great code(years old from before type annotations that hasn't been touched much since, written a hurry, etc), and faced some embarrassment.
If I was actually attached to specific details of the style, like "Yeah it crashes on some JSON input, but I don't care, it's only meant to handle stuff from this other thing I made" I might not really like sharing it as much.
Time to coin a new word - enossification - like enshittification - which I came across here recently, but without the negative connotation of the latter.
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 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.
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.
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.
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.
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 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.)
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.
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.
Once SMS itself becomes a more modern way of communicating. Currently every 160 (IIRC) characters costs, sending images (and god forbid videos) is barely worth it, not to mention the lack of security. Comparing to food, I would say this is as good as saying “Why not just buy a bag of chips instead of cooking a meal”
Most people don't actually use SMS though, despite thinking that they use SMS. My mom still thinks she uses SMS, despite it just being iMessage in the end. Messages can be long, video, images etc are easy and we have about 4-5 different group conversations going at any given time in my family.
Yes, which was rolled out recently, and when these talk to each other it falls back to SMS, there's Messenger/WhatsApp/or whatever people are using today.
That's not the point I'm disagreeing with though, it's just a reminder that the claim that "most people" own an iPhone is delusional. It's just as ridiculous as someone only hanging out with billionaires claiming "most people fly private jets", and it can be healthy to consider the rest of the world from time to time.
I live in Europe and while iPhones aren't uncommon they don't have the status they (seem to) have in the US and most people use Android.
Lovely idea. I’ve been thinking of “small scale web things” a lot recently, as I’ve been growing more and more tired of the planet scale web. I live in a small village in Canada and it would be nice to have something “village scale” that is only of interest, and as such perfectly adapted to only our village. Because it’s so small scale (we’re only a couple thousand), it can run on something in my closet. If it goes down for some reason, there’s no being angry with some large corporation behind it because it’s just me, and we mostly all know (of) each other here. If it’s temporarily down because or a power outage (which happens quite regularly here, especially during snow storms), even that will feel local: there’s a good chance users will have the same power outage. I’m probably being idealist and I’ll never do anything like this. Part of me also knows that most people will just continue using Facebook groups etc anyway.
While I am very much aligned with you that the “planet scale” stuff is tiring, I think you’re falling into a trap I myself often find myself in of “I want to create something. What can I create?”
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.
I'm trying to get as many people I know onto Meshtastic as possible. $25 hardware, no central server(I quite like not having home servers to maintain!), no ham licence, phone-based control.
Eventually, of course, I'd like to do Some Really Cool Project with it beyond the default functionality, but I have no idea what.
This feels very related to the larger research project of “malleable software” that lets everyday people modify and author the software they use for their own needs: https://malleable.systems/
Never heard of this concept but got would it be great if things were more maleable. There are a lot of services that I would be way happier to use if it was possible to remove or change features.
I love this sentiment. I built a beer inventory app exclusively for myself + guests picking a drink to try when when they’re over at my house. I’m up to 26 “users” over the past few years, but most of them just browse on my phone when they need another drink.
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.
Is your app open source? If not, have you considered that? You could just say in the readme, "fork it if you want it to do something specific". Sounds like it could be a good starting point for a bunch of things. :)
> 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.
If you liked that, check out also his newsletter and his fiction writing - both are stellar (his is the only newsletter I read, even though I pay for other ones!)
Great read! This reminds me of a macOS app I made for my wife a few years back. It keeps track of the opening hours of all her favorite shops, and she can click a menu bar icon to see how long until each one closes today. It also warns if it's currently peak/rush hour for the shop, since she prefers to go when it's less crowded.
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 is why I feel really uneasy about LLM/AI stuff. It feels like cooking now requires commercial quality equipment only available to the Michelin star restaurants.
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.
And yet, the vast majority of cooking is still done at home on relatively cheap equipment. Go build things that interest you using the tech stack you have and ignore the hype.
Try to satisfy yourself, and maybe that will lead you to a commercial kitchen with a Michelin star. I know nothing else will.
> It feels like cooking now requires commercial quality equipment only available to the Michelin star restaurants.
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
A few months ago there was a post on HN about catching up to the current state of LLM dev and learning how to use it. In it there were recommendations for hardware - the lowest tier being a 3090/4090. When looking at the decision tree for even cheaper options, it basically said to find another hobby.
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...
If we're still entertaining the above analogy, a home kitchen costs more than a PC with a 3090/4090.
But when I got into software in the 90s, it was about $4000 for just a run of the mill desktop PC, which is about $8000 in today's money. And it didn't even have 3d acceleration.
In the grand scheme of things, a 3090/4090 is not expensive.
A gas camping stove is like $50. A toaster oven is another $50-100. The best reviewed chefs knife on the market for commercial kitchens is $30.
You don’t need thousands of dollars to start cooking.
I have friends in the who cook on this stuff at home all the time. We in the west have elevated our kitchens into something luxurious. Nothing wrong with that, but it’s overkill for many people.
Please don't be discouraged by whatever "Big Tech" is doing.
Products that we build today represent many millions of decisions and trade-offs.
If you believe something should exist, please build it and don't worry about what anyone else is doing or saying.
I was working on an application in the early 2000's and learned that Gigantic Inc. launched something to solve the same problem. I immediately bowed out, and they immediately let that first-launched beta languish for more than 10 years with less staff than we had.
In the intervening years, another startup built a similar competitor and sold for hundreds of millions of dollars.
As another example, I eventually worked at Gigantic Inc, and the org that I was part of had been failing to deliver a useful product to the public for about 7 years, and continued to fail for many more. This was an organization with hundreds of people and many hundreds of millions of dollars of budget, and they were being absolutely clobbered by a combination of their own unbelievable incompetence and the brutality of the market around them.
One of the biggest lessons I've learned in my career, is to never assume that just because Big Tech has some budget, that they also have attention or competence.
Interesting, I actually feel the opposite. The scale at which big tech apps have to operate leads to a lot of bad UX and more bugs due to complexity. For example you can typically get much lower latency hosting a web app at or near your home than Google can provide.
For me it's the opposite. Taking on a personal project like this one would be incredibly frustrating, because some relatively small steps would be huge time sinks. Now with LLM's, I am much faster, I just focus on the aspects I want or that I am good at.
Same for me. I just launched my first full stack side project (I'm a mobile dev by day.) I was always technically capable of it...but using LLM's I basically was able to skip the "how do I do X in node" steps and significantly speed up the backend side of things, while I still learned a ton in the process.
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.
Don't fall for the apocalyptic doomsday narrative. It is in the interests /of/ the 900 lb gorillas in the space to make it seem like it requires so much investment that you may as well not bother.
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.
Really cool. I love that this is a modern rejection of threaded posts, or things that gluttonously try to steal your attention. The choices (irreversibility, privacy, lack of mediation) are the same as what you get if you actually sit in a room with someone and talk.
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?]
If I were doing something like this now I would probably try to use https://val.town It lets you just write and deploy typescript lambdas by typing into a text box :) The easiest way I know of to deploy an endpoint. It also has SQLite or blob storage access.
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.
You say that, but the page is nothing but a form asking for name and work email with a "request access" button. Literally no other information is provided beyond "The end to end developer tool for TypeScript developers".
I assume this is some poorly executed self-promotion on your part. Maybe start with making your site say something about what the product actually is, can do, etc.
Not very home cooked, but once I was working on a project/startup of mine that involved tracking degrees of freedom/trajectories and it was very manual/empirical testing, so I made a second app that would plot everything for me in real time, receiving data via socket. This was before iOS had any AR frameworks and just as Metal was released. Nothing existed to test AR, so I made it myself, with my data format, exactly like I wanted it and it was such a quality of life feature.
295 comments
[ 4.3 ms ] story [ 249 ms ] threadComparing it to cooking a meal at home for your family is a perfect analogy.
People are able to do things in their own home without asking Amana or GE permission and having their recipes examined and reviewed.
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 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!
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 have a boatload of feature creep ideas for you to reject... Shall I post them here, or DM you?
-
This is an app logic that works for more than just cooking - but a big thing is OCR a hand written recipe from familial cookbooks...
I still have my mothers, as well as hand written recipes from my grandmother, their friends, etc.
Take a pic of a recipe, OCR if can - else host the pic?
--
However, an interesting aspect of the "recipe" app logic is that it can apply to, say, mechanics
"Here is a recipe for replacing this part/working on this thing"
Ha! Either, or feel free to email me at jeff@umami.recipes.
> Take a pic of a recipe, OCR if can
The app actually has an OCR recipe importer (tap "Add Recipe" > "Scan Recipe"). It uses Apple's native iOS OCR library, which inserts text directly from the camera.
It doesn't support importing from an existing photo yet though -- that's high up on my list to build (after Android).
> else host the pic?
You can upload photos for recipes!
> However, an interesting aspect of the "recipe" app logic is that it can apply to, say, mechanics
That's a really good point. I bet much of the underlying functionality could be re-used in a completely different app focused on something like mechanics. Another example I've thought about is a separate app specific to cocktail recipes, with features tailored around mixology and bar management.
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 :-)
So, yeah - but micro tools are a thing.
That’s till some product manager decides they want metrics to go up, and the app starts spamming you notifications multiple times a day, or tries to shove in your face unnecessary financial products, and starts selling your transaction data with the hope of increasing monetization to keep their overstaffed teams…
A home-cooked app from someone you know/trust seems much nicer than that.
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.
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.
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?
The idea that there are devs who did not do fairly extensive home coding is so alien to me! I don't personally know a single dev like that, and it would never have occurred to me that they exist.
TIL
Fun fact: that experience will likely change you, and your commercial kitchen co-chefs will also appreciate you more afterward.
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
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.
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.
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.
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.
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.
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.
It's already shown on the screenshot, but I'll get a better one soon.
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.
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.
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!
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
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.
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.
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.
What kind of functionality were you looking for? I've found that once I controlled my notes, the amount of things I wanted to dump into it kept growing.
> How about you? What did you write your backend in and did that escalate into the front-end too?
I started using TiddlyWiki, and really like their approach to content (small notes, composable content, the "river" of notes as you click through links). You can add metadata (KV style) to the notes, which you can use in the markdown, which is quite powerful. The tool is meant to be "in browser" and you're supposed to save the whole HTML source when you make an edit. For me, I wanted a traditional CRUD interface to a server. They support that, but the developer isn't really focusing on it. So I wrote my own because I had a few weeks and wanted to play more with Golang.
My only gripe, and the reason I'm considering writing a new front end (which will be a big learning activity for me), is that TW doesn't support 'lazy loading'. very well, so if you have a massive amount of notes, it gets a little wonky. I discovered the issues with this when on plane WiFi and getting issues with overwriting instead of editing notes.
But once I had a CRUD API for my notes... I started going crazy. I can import photos, and link to them (pretty basic) but I can also push emails, calendar events, etc. I set up a browser plugin that lets me automatically take notes on any webpage, and adds tags/metadata to the note. The limit is now the front-end which is where I'll probably spend 2024...
I also had the idea of integrating with HomeAssistant, so the device's history was viewable in a 'note' about the device (dynamically generated from a template instead of static text from DB). Possibly with camera events as their own entry... Lots of things are possible once you control where the data comes from.
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.
> 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.
Especially getting things to both sync across devices and load instantly on Android is definitely not trivial.
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.
Looking forward to your post on HN!
- 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.
:)
Once you got away from social apps, it was clearly feature creep. That was my indicator for when there was probably a better alternative app for accomplishing the app’s original purpose, but it was often too late to switch due to the network effect.
“Any application that can be written in JavaScript, will eventually be written in JavaScript.”
From: https://en.wikipedia.org/wiki/Jeff_Atwood
Here's a stab (pun intended) at one for LLMs:
"Any application that can be written by an LLM, will eventually be written by an LLM."
I mean, it's not the clearest thing to read but labeling it horrible seems to be a judgement call that's unwarranted. And as software developers, we should create an environment that's less hostile to people who write things in ways we wouldn't.
And honestly, that set of list comprehensions has a bit of a lispy functional vibe, which could quite frankly be applauded in certain contexts.
But if there is anyone coming after me, I would write it in this style for their sake, because this style is easier to change.
Also, another way to write this (which results in a flattened list) is:
I've never been particularly interested in "software for one person" but I've shared lots of working but not great code(years old from before type annotations that hasn't been touched much since, written a hurry, etc), and faced some embarrassment.
If I was actually attached to specific details of the style, like "Yeah it crashes on some JSON input, but I don't care, it's only meant to handle stuff from this other thing I made" I might not really like sharing it as much.
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.
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.
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? ;)
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.
That's not the point I'm disagreeing with though, it's just a reminder that the claim that "most people" own an iPhone is delusional. It's just as ridiculous as someone only hanging out with billionaires claiming "most people fly private jets", and it can be healthy to consider the rest of the world from time to time.
I live in Europe and while iPhones aren't uncommon they don't have the status they (seem to) have in the US and most people use Android.
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.
My friend Geoffrey Litt is heading the malleable software group at Ink and Switch: https://www.geoffreylitt.com/
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.
https://www.robinsloan.com/colophon/
I love the built-in style guide. I'm totally stealing some ideas from that...
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 :^)
Open Hours though are easy to read from the json response.
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.
Try to satisfy yourself, and maybe that will lead you to a commercial kitchen with a Michelin star. I know nothing else will.
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.
The p40 was on the inference side of the tree and you can get one on eBay for $200 or less.
But when I got into software in the 90s, it was about $4000 for just a run of the mill desktop PC, which is about $8000 in today's money. And it didn't even have 3d acceleration.
In the grand scheme of things, a 3090/4090 is not expensive.
You don’t need thousands of dollars to start cooking.
I have friends in the who cook on this stuff at home all the time. We in the west have elevated our kitchens into something luxurious. Nothing wrong with that, but it’s overkill for many people.
Yes writing a todo list app is now faster with copilot and stuff but thats now what i meant.
Products that we build today represent many millions of decisions and trade-offs.
If you believe something should exist, please build it and don't worry about what anyone else is doing or saying.
I was working on an application in the early 2000's and learned that Gigantic Inc. launched something to solve the same problem. I immediately bowed out, and they immediately let that first-launched beta languish for more than 10 years with less staff than we had.
In the intervening years, another startup built a similar competitor and sold for hundreds of millions of dollars.
As another example, I eventually worked at Gigantic Inc, and the org that I was part of had been failing to deliver a useful product to the public for about 7 years, and continued to fail for many more. This was an organization with hundreds of people and many hundreds of millions of dollars of budget, and they were being absolutely clobbered by a combination of their own unbelievable incompetence and the brutality of the market around them.
One of the biggest lessons I've learned in my career, is to never assume that just because Big Tech has some budget, that they also have attention or competence.
They do? How so? I can only think of a small subset of applications that require large amounts of compute.
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.
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.
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?]
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 assume this is some poorly executed self-promotion on your part. Maybe start with making your site say something about what the product actually is, can do, etc.
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...