{"id":2881,"date":"2024-01-17T10:56:38","date_gmt":"2024-01-17T10:56:38","guid":{"rendered":"https:\/\/variousbits.net\/?p=2881"},"modified":"2024-01-17T12:28:11","modified_gmt":"2024-01-17T12:28:11","slug":"a-start-page-just-for-me","status":"publish","type":"post","link":"https:\/\/variousbits.net\/2024\/01\/17\/a-start-page-just-for-me\/","title":{"rendered":"A start page, just for me"},"content":{"rendered":"\n

I saw a link go up on HN<\/a> the other day: An app can be a home-cooked meal<\/a><\/em> – and found it really inspiring.<\/p>\n\n\n\n

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\u2026), he made this thing for himself<\/em> (and his family), with no intention of ever doing anything else with it:<\/p>\n\n\n\n

\n

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\u2019s expectations.<\/p>\nRobin Sloan – An app can be a home-cooked meal<\/a><\/cite><\/blockquote>\n\n\n\n

I love to push ideas around – dabbling in code<\/a> or music<\/a> or print<\/a> are some of my favourite things to do. Music is my oldest passion and I\u2019m not shy about publishing that; printmaking ditto. With code though I\u2019m 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\u2019m fairly competent in PHP (enough to support tens of clients with their WordPress websites) I\u2019ve always been nervous of publishing my own stuff, let alone think about open-sourcing any of it.<\/p>\n\n\n\n

I\u2019ve 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\u2019m well aware that ideas are nothing compared to execution, but still there is a little voice always whispering: \u201cthis could be the one<\/em>\u201d and so I\u2019ve had my fair share of domain names, designed products, endless half baked almost-if\u2019s, and all of that. As of now I seem to have 220 repos on GitHub, FML, of which about \u20263? are public. And the affliction often shows itself as \u201cyes but if you\u2019re going to build this you\u2019d better do it in a way that makes sense in case it takes off\u201d – and as soon as you do that, the idea mushrooms in complexity. Suddenly that simple script becomes a self-built framework and you\u2019re writing classes and templates and config files and logins\u2026and then before you know it, the energy leaks away and it\u2019s repo number 221\u2026<\/p>\n\n\n\n

[ Here is probably where I should point out – in case clients are reading \ud83d\ude42 – that my strength is in fact my lack of specialism<\/em> – I\u2019m a web generalist, someone who knows a little about a lot, and that (it turns out after running two successful businesses<\/a> 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… ]<\/p>\n\n\n\n

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\u2019s 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:<\/p>\n\n\n\n

\n\n

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.<\/p>\n\nRobin Sloan<\/a> – An app can be a home-cooked meal<\/a><\/cite><\/blockquote>\n\n\n\n

With this in mind I sat down last night with a frustration I\u2019ve 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<\/a> 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.<\/p>\n\n\n\n

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<\/a> (looked in awe at the insane complexity of most of what I found here!), went back to age old favourites like netvibes<\/a> – 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.<\/p>\n\n\n\n

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\u2019s how it looks:<\/p>\n\n\n\n

\"\"<\/a><\/figure>\n\n\n\n

The content is just a folder of markdown files:<\/p>\n\n\n\n

\"\"<\/a><\/figure>\n\n\n\n
<\/div>\n\n\n\n

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\u2019m not doing anything public so who cares 😎<\/p>\n\n\n\n

I\u2019m using UIKit<\/a> because I love it and I\u2019m lazy. There is also the Parsedown<\/a> library in there, but apart from that it\u2019s 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 😜.<\/p>\n\n\n\n

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.<\/p>\n\n\n\n

So there you go. Can you see my code? I don\u2019t think so, but I\u2019m 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\u2019t know!<\/p>\n\n\n\n

Anyway. I scratched my itch, learnt some things, had fun making it – and I\u2019m pretty sure it\u2019s gonna be useful. Not bad for a sum total of just under 3 hours work.<\/p>\n\n\n\n

In the future I may expand it a bit – I\u2019m quite interested in SQLite so maybe that\u2019d be a fun thing to learn – and there\u2019s obvious stuff like using YAML for more structured output on the cards – but for now it\u2019ll do.<\/p>\n\n\n\n

Onwards!<\/p>\n","protected":false},"excerpt":{"rendered":"

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 … Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"categories":[454],"tags":[424,457,456,455,3],"_links":{"self":[{"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/posts\/2881"}],"collection":[{"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/comments?post=2881"}],"version-history":[{"count":3,"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/posts\/2881\/revisions"}],"predecessor-version":[{"id":2886,"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/posts\/2881\/revisions\/2886"}],"wp:attachment":[{"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/media?parent=2881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/categories?post=2881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/variousbits.net\/wp-json\/wp\/v2\/tags?post=2881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}