A start page, just for me

I saw a link go up on HN the other day: An app can be a home-cooked meal – and found it really inspiring.

What resonated for me was that even though this guy has obviously got some programming chops (he made a messaging app which looks pretty competent, even if it only has 4 users…), he made this thing for himself (and his family), with no intention of ever doing anything else with it:

It launched in the first week of January 2020, and almost immediately, it was downloaded by four people in three different time zones. In the years since, it has remained steady at four daily active users, with zero churn: a resounding success, exceeding every one of its creator’s expectations.

Robin Sloan – An app can be a home-cooked meal

I love to push ideas around – dabbling in code or music or print are some of my favourite things to do. Music is my oldest passion and I’m not shy about publishing that; printmaking ditto. With code though I’m just too aware of the pitfalls, the latest trends, the security considerations, the fact that there are thousands of people way better than me out there – many of whom are the harshest of critics – and although I’m fairly competent in PHP (enough to support tens of clients with their WordPress websites) I’ve always been nervous of publishing my own stuff, let alone think about open-sourcing any of it.

I’ve also got an affliction with ideas which is that I pretty much convince myself that most of them could be multi-billion dollar companies, if only some fucker would give me a break. After 30 years doing web stuff I’m well aware that ideas are nothing compared to execution, but still there is a little voice always whispering: “this could be the one” and so I’ve had my fair share of domain names, designed products, endless half baked almost-if’s, and all of that. As of now I seem to have 220 repos on GitHub, FML, of which about …3? are public. And the affliction often shows itself as “yes but if you’re going to build this you’d better do it in a way that makes sense in case it takes off” – and as soon as you do that, the idea mushrooms in complexity. Suddenly that simple script becomes a self-built framework and you’re writing classes and templates and config files and logins…and then before you know it, the energy leaks away and it’s repo number 221…

[ Here is probably where I should point out – in case clients are reading 🙂 – that my strength is in fact my lack of specialism – I’m a web generalist, someone who knows a little about a lot, and that (it turns out after running two successful businesses for quite some time) is actually what clients want quite a lot of the time. It makes me useful at seeing the big picture, and often the minutiae of the code really doesn’t matter to me, or to my client… ]

Anyway. The point is that I quite often make stuff for myself too – either little helper scripts or plugins that I use on internal sites or stuff to move files around or whatever. And this guy’s post about his messaging app made me think about how these tools for your own use can be satisfying and fun, and immensely useful – and never be built to scale or share or see the light of day outside your own home:

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.

Robin Sloan – An app can be a home-cooked meal

With this in mind I sat down last night with a frustration I’ve had for a long time – we have many clients and they all have websites and staging websites and GitHub repos and deploy systems and Google drive notes and so on, and I find it quite irritating that I rely on my browser history to get me to these. Obviously I have Obsidian which is my absolute go-to – each client has a page, with some core stuff linked at the top, and a log of work done – but my browser is where I spend all of my time, so I wanted something here instead.

I could of course just use bookmarks, and I looked into this, then poked a few extensions, tried a few new tab pages, browsed r/startpages (looked in awe at the insane complexity of most of what I found here!), went back to age old favourites like netvibes – but none of them scratched the exact itch that I wanted to scratch. I wanted a self hosted, easy to edit, easy to search, incredibly fast set of favourite links.

With the help of some old code I had knocking around and a library or two, I popped up my own new tab page. Here’s how it looks:

The content is just a folder of markdown files:

Clicking an edit button on a card pops a modal with an iframe in it (see, amateur hour!) and I just load the markdown into a text area. Click save, it saves the file back again. And no, no sanitisation, because I’m not doing anything public so who cares 😎

I’m using UIKit because I love it and I’m lazy. There is also the Parsedown library in there, but apart from that it’s all just php and a smattering of js and css. Good old oldskool stuff, no build step or compilation or any of that impenetrable bollocks 😜.

I slapped it on my filepi – a local only RaspberryPi running a LAMP stack, which I have local network file access to. This means I can point Obsidian or Typora or any text editor at the content folder and easily update any of the cards.

So there you go. Can you see my code? I don’t think so, but I’m not sure of the etiquette of this – should I just publish with a warning about not using this on a public web server? I don’t know!

Anyway. I scratched my itch, learnt some things, had fun making it – and I’m pretty sure it’s gonna be useful. Not bad for a sum total of just under 3 hours work.

In the future I may expand it a bit – I’m quite interested in SQLite so maybe that’d be a fun thing to learn – and there’s obvious stuff like using YAML for more structured output on the cards – but for now it’ll do.


Leave a comment