And We’re Back

I had to figure out how to log back in to this website to post an update. It’s been a while.

Hi.

I’ve got good news for you. 2024 is going to be a magnificent, magical year. Not only is it a leap year, but for all sorts of birthday (mine) and mathematical reasons, 24 is, numerologically, a cosmic number. ✨

I’ll begin with a quick update since last time I was here:

  • I returned to Sydney
  • I graduated
A graduation photo in a Macquarie University frame. I'm wearing crimson doctoral graduation robes and a puffy hat, holding my degree, shaking hands with the Pro-Vice Chancellor Nick Mansfield, who is wearing a fetching gold and black striped number.
A photo of me with hair down to my belly button. My belly button is not visible as I'm wearing clothes, unsurprisingly.
  • I imported a German-language version of the schmaltzy 1999 romantic comedy Simply Irresistible (dir. Tarlov) because the English versions are OOP and second-hand copies go for nearly $100 on eBay.
A photo of me holding a shrink-wrapped copy of "Einfach unwiderstehlich", a German-language blu-ray of Simply Irresistable. Sarah Michelle Gellar and Sean Patrick Flannery's heads are on the cover.
  • I still have unresolved feelings for Sarah Michelle Gellar.

Online has changed so much, and I’m currently inspired by moves towards decentralisation, open protocols, the fediverse etc. I particularly loved Anil Dash’s article in Rolling Stone, “The Internet Is About to Get Weird Again” (https://www.rollingstone.com/culture/culture-commentary/internet-future-about-to-get-weird-1234938403/), which I think sums up my mood. It’s the early 2000s again, baby! Bring back the clear coloured plastic (but you can leave the gelled-up spikey hairdos back where they belong.)

I’ve been thinking about doing this for a while, so I’m going to take the opportunity and fresh start of the New Year to restart blogging about various things of interest and inane musings. I’m also committing to making a lot more art this year – I’ve got a half-dozen half finished projects to wrap up and share, so they’ll appear here too.

I also want to give this site an overhaul. Back in the day I set it up with WordPress, and thank the gods for automated security updates because I really haven’t touched the front or back-end for years. I’ll probably stick with WordPress for a little while longer, then at some point maybe move off to a back-end of my own that I’ll write in Python. I’ve gotten pretty decent at all sorts of development, so it will be a fun project. Not the priority for now though – in the short term I’ll probably just look at adding my Mastodon feed to the front page, making sure RSS works etc. I don’t want people to have to faff around with site accounts (and I don’t want to deal with the spam), so I’d also like to see if I could enable commenting via the fediverse.

What kind of things can you expect me to blog about here? There are two, maybe three main things:

  • Art projects – like I said, making more. Mostly digital art, a few photo sets, paintings, drawings, that sort of thing.
  • Interesting things – I used to collate interesting links I came across (see http://www.philbetts.com/wp/category/w_nderings/) – I’d like to do that again, although having my Mastodon feed on the front page will fulfill part of that gap.
  • Full-stack development of an everything app – this will be the primary focus of the blog. I’ll try not to write it too technically, and I’ll talk a lot about the philosophy of design, but a certain amount of nerdery is inescapable. In 2024 I’m going to write an app that will handle all aspects of my life, so I will never have to think or make a decision again. Sounds wonderful. In the grand vision it kind of integrates everything: physical, digital. “There’s an app for that” for pretty much everything I want it to do, but I don’t want 12 apps. I want one app I built from the ground up. I’m an advanced beginner, or a beginner intermediate, in full stack dev using primarily Python, so I’ll be using this as a place to reflect on my learning, building up from first principles as I go.

What might my everything app do?

  • Tasks and calendars – not just to-do lists, but a fully integrated task and calendar that has things like repeated task scheduling, hierarchical tasks etc. I’ve prototyped this a couple of times, once as a desktop app built with Python’s tkinter, and another time as a web app with Flask, but it didn’t have a full SQL database and logic – it was fairly rudimentary with a NoSQL MongoDB database. I did however get far enough working with dates and times to want to cry, which I feel is the sign of a true developer. I want this extensive, and integrated in with everything else that follows.
  • Library management – because I have a weird collector kink and am a streaming conspiracist I own about 600 movies on blu-ray, over 1500 CDs, 2000+ eBooks, hundreds of video games, dozens of cookbooks etc etc. They exist in all sorts of disparate collections physical and digital; I want a way to bring them all together in one place, and surface them for enjoyment (see integration with tasks and calendars). There should also be library management features for cleaning up metadata and such. I want full collections logic built in. I’ve made some initial progress here with a local PhilPhlix, my movie database (with data drawn from an open-source API):
A tiled grid of 4 by 3 cards, featuring movie posters and descriptions. The movies in the screenshot are all from 1995 - Jumanji, Before Sunrish, Dead Man, Mortal Kombat, The Lion King etc.
  • Media player – for the digital stuff above I just want to access everything in one spot. I have a 32TB raid so I have no shortage of storage for it. I’m using Plex at the moment, but it would be cool to use my own. I’ve got some ideas for stuff around managing playlists that I haven’t seen in any other apps and I’d like to implement. I’ve built a basic version of this in the past, though it pretty much just traversed local folders and allowed you to play media files.
  • Stuff tracker and random apps – I have a lot of stuff. A lot of stuff. See “weird collector kink.” There are all sorts of things I might want my app to manage. The health of my plants. A full expenses tracker. Suggested meals and a way to organise my recipes drawn from a hundred cookbooks. I’ve built an expense tracker before (again, using MongoDB, so not full featured, as well as a few times with Excel, the world’s biggest database). The wonderful thing about coding is you can make just about anything that would be useful, so there’s really no limit.
  • RSS/newsletter reader – I half use Feedly, but I think I’ll build something myself to, once again, have everything come to me.

As well as functional areas, there are a few concepts and topics I want to really explore, and this will be an opportunity to learn and document as I go along. These include:

  • Ontology, data modelling, and database design – I’ve spent the past few weeks digging deep into SQL, which has always slightly freaked me out. It’s not the concepts that are difficult, but the four or five different layers of abstraction, frameworks, terminology, syntax, and occult rituals it takes to interact with it. There will be a lot of reflection on ontology – what something is, as an expression of ideas and behavious (what is a repeating task, and how do you model and implement it? Think of an example of a fixed repetition (my birthday) verses a relational repetition (every six weeks) – on the surface similar, but very different implementations! I’ll be hopefully getting pretty good at probably Postgres and SQLAlchemy.
  • Flask, web development and deployment – I’ve played around with Flask a few times, and have worked through Miguel Grinberg’s incredible Flask Mega-Tutorial (https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world). However, I didn’t dive too deep into some of the core concepts, like users, sessions etc. There’s a wealth in there to learn more, particularly around deploying to containers, servers, process management and a whole bunch of advanced web stuff. Probably not a priority as I’m not looking to develop a public app any time soon, but I’ll need to encounter it sooner or later.
  • Web languages, frameworks etc. – I don’t want to get too deep into modern JavaScript and CSS, but it will be hard to avoid entirely. I’m interested in some of the newer Python in the browser technologies, so they might make an appearance.
  • HTTP/2 (and now I just learn HTTP/3) – there’s a vague sense that I’d like to explore web sockets for push communications, so I can do things like use my phone as a remote control for my server without doing inefficient pull polling. Last time I tried Flask wasn’t a natural fit with HTTP/2, so it will be interesting to learn if that’s moved on, and how I might implement it.
  • Energy – I’m not particularly concerned with optimization for speed or scalability at the moment, but I am very interested in cost and resource use for different sorts of activities. How can you develop with the environment at the forefront? This could extend out into smart-home management, benchmarking etc. Like, what is the true cost of Always On technologies? (particularly thinking about always on voice recognition, which I’m not a fan of.)
  • Security – this is a biggy. I’m terrified of cyber-security! So complicated, so much out there that can go wrong and open you up to disaster. Security is going to be a major focus – I’ll be very nervous and cautious about sharing code, or opening anything up to public access. It will be an interesting journey, but everyone has to start somewhere, right?
  • Voice recognition, image, maaaaaybe AI? – I’ve built a basic voice-recognition app years ago with Python and SphinxBase, which was pretty cool. I’ve also played around with some Optical Character Recognition libraries, but nothing functional. I suspect a lot has changed, because that was before the current paradigm shift to large language models! It will be interesting to see what’s possible. Ultimately my dream would be to have a little physical device like a Star Wars communicator that I could carry around my house, press a button, and my everything app will do whatever I need it to do. Maybe on a smart watch. I’m unlikely to train any models myself for the time being, as I want to control all aspects and think through their implementation.
  • RSS, Accessibility, bits and pieces – there will be all sorts of random little topics and design reflections I might end up talking about.

So that’s where we are. Lots of ideas, many of which I’ve played around with in previous iterations. I’ve not been good at maintaining blogs in the past, but hey. It’s 2024. A chance to go back and try again. Happy New Year. It’s gonna be magic.