Oh Look, Now I Have Two Problems

As I have mentioned previously, I have started working on a media server, which seems to have morphed into more of an UPnP/DLNA explorer. I guess that is fine, I've learned a lot, even have exploratory code. ;) I find I need a different UI, sure watching messages appear in a console or a REPL is okay to a point, but I need something a little, well, friendlier. I'm thinking maybe a web front end. I start thinking exactly how to go about doing such a thing. Surely this shouldn't be hard. Many have done this before. As I start thinking about this, I quickly remember Jamie Zawinski's quote which I will paraphrase as: Some people when building an application, think, "I know, I'll add a web front end." Now they have two problems. When I first started down this road, I was just intending to write a minimal mediaserver so that I could organize my media files on my fileserver like I wanted and have all the devices in my house that can stream media find it. All the devices already have a UI that interact with mediaservers so I figured I wouldn't really need a UI. I seem not to be smart enough to write a mediaserver straight from the specs, although if I actually knew how to interact with SOAP apis, I probably could have pulled this off.

Now that my mediaserver has morphed into an UPnP/DNLA explorer... Well, what good is an explorer type application without a useful UI?

So now I have to learn how to build a web front end1, or rather architect and application that supports a web front end. I'm thinking if the backend supports a RESTful (or rest-ish, at least) APIs, the front and back ends can be developed independently.

Think about designing a web front end is very foreign to me. UI/UX design is very foreign to me. I've decided that I want a grid layout, and should use one of the CSS frameworks2. Foundation and bootstrap seem to be popular and do what I want, or rather according to the documentation, they will do what I think I want. The latter being a very different statement from the former.

So now I have to sort out how to put this together in guile. I've not been able to fund much prior work, which is rather unfortunate. Perhaps I have opportunity to set direction, instead of just follow. I think one reason is the guile has just recently got a web server, but I'm just guessing. I did actually find a web framework, GNU Artanis, but I don't particularly like to the way it is structured and it seems rather opinionated. I also found a few projects guile-web, forward, and guile-websocket trying to do web things in guile. Not sure those actually fit my use case, but I have gleaned some ideas. I've also created a code repository.

  1. Well, I guess it doesn't have to be web, it could be curses or GTK, but this is 2018 and most devices (at least that can stream media) have a web client. ↩

  2. I have a problem. I know, I'll use a CSS framework. Now I have two problems, and a recursive blog post.  ↩