The past March was one of those periods of guilty pleasure, mostly. Nevertheless, its analysis can serve the future. It started with a burn-out feeling, or just some weariness, in the process of porting the remaining Arrow UI from elm/html to elm-ui (note that it wasn't mere translation, as v2 features a new visual design). At the end of Feb, I set out to finish it off in just the first several days of March, and move on to more ambitious features.
Ship Arrow?
But the underestimated workload wasn't the entire story, there was a greater source of this stress. I set out to make Arrow an actual product and present it to people by midyear, and I have neither experience nor sufficient confidence in this marketing-centric task. Arrow started as my first true self-initiated project, and its data modeling went back to my school days. I set out to seriously work on Arrow, because I wanted to spend my best time and energy on something I believed in, for Arrow is useful and good. But will I be able to make a living out of making apps?
Although people are increasingly used to getting software for free, I think there is always a place where independent app making is appreciated and sustainable. Actually, there are people who are doing this, some of them for decades. So the question is, can I/Arrow do as well as they do?
Well, Arrow is definitely useful. It has unique designs that arise from my own need for an informative overview of how I spend my time, and it is ergonomic enough for me, user0, such that it has integrated into my daily self-management practice. It doesn't have lots of fancy features (e.g. visualizations, sophisticated stats) yet, but I think it now has a good technical foundation on which to build more advanced functionalities. It has no mobile UI, which I can make later. I'm still clueless about multi-device sync, and it's more than just a technical matter; Arrow is serious about data ownership, and if I went with the traditional approach where I acted as the manager and security guard of people's data, then Arrow would be just yet another server-based, and thus vulnerable app. So this feature, if it will ever be implemented, need lots of thinking. (And the Safe Network is not here yet, right?)
So let's worry about sync later. The problem I was having was essentially fear, of uncertainty. I knew rationally that this was something I just had to try, and if one way didn't work, then we'd have to try another. But unsurprisingly, it is much harder to take this mindset to action. Frustratingly, I found myself instead avoiding this effort. Maybe I was a little tired for real, but for the most part, I knew it was due to the self-inflicted pressure to make Arrow, my first app, a success. Heck, there is not even a clear definition of success in my head. But in the end, it's not complicated. As the first step, I just have to share it with other people. If it's about commercial operations and running a business, then I have even less knowledge and experience, and it will just have to be a learning process, right?
In short, there are three main things left to do:
- Implement several key missing features.
- Find a suitable distribution mechanism.
- Present Arrow on a web page.
By "missing features" I mean those people expect to see in a time-recording app, for instance, a stopwatch. I personally have been using my old Casio, and most phones and smartwatches offer the functionality, but I think not everybody has one, and even for those who do, they might not prefer to use an external tool alongside an app.
But as I said, thanks to the fear, I put task #1 off. All I could manage to do was completing the UI porting work. Then I thought I could switch to something lighter, like task #3.
Elm as a Site Generator?
I was curious about Elm-based site generators, because I really hoped I could use elm-ui to make websites. So I tried out "elm-pages", which essentially brought Gatsby to Elm. It's definitely a very feature-rich package, with built-in support for SEO, PWA, offering "isomorphism" (pre-rendered static pages rehydrating into a SPA, if I understand it correctly), and various pre-fetching mechanisms popularized by React-based frameworks, and even icon generation and image compression.
But I personally just find it heavy/messy while taking a look at elm-pages-starter. I like Elm because foremost it's simple, clear, and elegant, but the starter template just didn't show me much of that, and it's too rigid in some of its designs, e.g. the config for PWA is something I must complete in order to compile the site, and the same goes for SEO stuff. Instead of pre-filling them with placeholders that I may just overlook or ignore, I prefer the Elm way, where a collection of related functions with increasing levels of configurability and control are offered (think sandbox, element, document, and finally application). At the very least, each of the non-essential features could be a Maybe. Indeed, Elm's beauty lies in its offering a gradual learning curve, where the first examples are fully understandable by newbies (think the counter demo, and elm-todomvc), and then they can keep getting more once they are interested.
The other major deal breaker was the heavy use of npm packages, including a post-install script that downloaded a Chromium browser, resulting in a huge node_modules folder (533 MB). Of course, this is not the place to rant about someone else's work, because I think it's not fair, as elm-pages may be very pleasant to other people. Long story short, I returned to elm-lang.org, which uses plain Elm as the site generator, with the help of only a simple shell script! I once looked at the site a year or two ago, but upon this revisit I was especially pleased to see that recently it started to use elm-ui on some newly designed pages! It's definitely very basic compared to elm-pages, but people taking that approach understand everything in the site generation process, no black boxes hidden in those npm packages, and making websites is reduced to making a simpler form of Elm apps. It's no JamStack, no "isomorphism" stuff, but I think just a SPA is enough for making a presentation site for Arrow. No routing is even necessary, for the first version at least.
A New Entertainment Paradigm
I stumbled upon some gaming clips, basically a collection of funny moment cuts by a gamer, but gradually I realized that there was a story line going on, and the characters lived together in the virtual world to push the plot forward with a surprising social high-fidelity. I was soon immensely attracted to this different form of story telling, so much that I took some effort to dig up the full-length streaming sessions, each lasting more than 3 hours, and there were more than 20 of them, and that was just a single character's point of view. During the last few episodes I had to speed up the playback, but I made it to the end!
Now if you look at this show as a movie, it's no masterpiece by any standard; and if you just watch this as a gaming show, it's no pro performance either. On the contrary, it was made by a group of amateur gamers, and much more so, amateur actors. But it was the "second life" vibe that made it exceptional, and mesmerizing. Most interactions are not scripted, and their consequences not predetermined. It's almost as real as people interacting on the internet, that's one way to put it.
Although most characters, based on their career choices, have their rules/limits and agenda, the sense of purpose is not as rigid as in a typical game mission where players are mostly very single-minded or even robotic. How the characters live their lives is very much open-ended, and one can choose to be an outsider/bystander for the most part, only offering pieces of information to others that is not necessarily true, intentionally or not. One can befriend another just by instinct (with partial information), or see someone as a threat. Surprisingly, what this socializing brings about doesn't seem to be merely a mindless partying where people hang out and kill time, but a deeper relationship develops in the process, for quite a few of the players became very emotional in some of the intense moments of the game, especially toward their endings.
So for one, what this show did right was that it struck a pretty good balance between work and leisure in the characters' lives, so that it distinguished itself from both mission-centric and mission-less games, which contributed to its resemblance to real life. Moreover, when you make a mistake or a fool of yourself, you don't just game over and then get reborn; it is a live show, like theatre, or even like life indeed, everything before biological death is a one-shot scene, where you continuously deal with and learn from events that have happened.
The many details aside, the more intriguing is a new form of entertainment that is only demonstrated in a very rudimentary capacity. Just like a basic learning algorithm that may require tremendous amount of engineering ingenuity to get the level of optimization needed to wow people, this largely crude show is nevertheless very eye-opening.
It is not hard to imagine a much more refined production of this entertainment paradigm. A cast of professionally trained actor-gamers, i.e. those hybrids who are good at both acting/voicing and gaming, with the technical support of much more realistic body control and interaction in the game, all under a much more sophistic and artistic story line... Together it's possible to establish a new powerful art form that combines the best worlds of gaming/sports and story-telling/drama. Good movies are so spellbinding because they distill the most exciting/touching elements of life into an elegant, supernormal stimulation. But it is already fixed when it's made, the entirety of the story is contained in a block of static space-time that can be played however we like. So we can't help being aware that the creator of the movie, like a god, has already arbitrarily designed and manufactured the fate of this whole world. As a drawback, we, when conscious of the fact that some peers of us are already capable spoilers, can be less passionate about the course toward the end, compared to watching a truly live, non-rigged game/sports show (e.g. betting is a byproduct of this passion). We know sports/gaming is an industry no smaller than movie making. A way to intersect the two can have some overwhelming power to entertain.
3D animation has the potential to replace human actors in traditional movie making, and machine intelligence is rapidly improving in game-playing skills. But what AI today is still far behind is the ability to create art/entertainment that deeply and intensely affects our emotions, which in turn can change the mental energy state of the viewers. Heck, they haven't even nailed natural language translation yet. So indeed, if this hybrid art form continues to develop, it is a safer bet for humans to invest more heavily on means to more effectively express emotions. We could still focus on the competitive gaming aspect, after all, we take pride in our intelligence, but we have to be more nuanced in picking the kind of games in which characters compete, e.g. probably not something along the lines of Go or Dota 2. (So like, having no clear set of rules is a safe one. But hey, it's fine to see humans lose to AI, not only because humans invented AI in the first place, but we are confident enough to lose particular kinds of man-made games without deeming ourselves worthless; also, aren't people taking pleasure in getting beat up by AI nowadays?)
Now predictability is a subtle matter. As discussed, people really dig the lack of it in art/entertainment. They not only don't want things revealed prematurely, they value even more the fact (which could be a lie) that there is no way of knowing the result other than going through the process with the players together, live. But in a sense, artists are control freaks, because creation/crafting is to a large extent a work of controlled modeling/building, and if a show cannot afford failure, then the creator cannot leave it to chances. So I imagine in this new art form, certain aspects of the story line will be predetermined, but only on a limited set of key points that the creators deemed necessary for its success (cf WWE), while leaving the rest degrees of freedom to unscripted interactions and random events. Now the level of uncertainty depends much on the extent to which the main creator wants the show to be a collaborative and improv work where the actors get to shape a significant part of the story (akin to the question how real a reality show is).
A big difference from traditional story telling is that each character is presenting their own version of the story, and one point of view can be drastically different from another. Unless a viewer watches all the lines in parallel (which is very unpractical considering the amount of time that would take), no one gets the complete story. Therefore, I suppose one viewing strategy might be that one starts by picking the character that interests them the most, or just their favorite actor/gamer if clueless about the story, and as the story develops, their interest and focus can shift, expand, or narrow down, and thus they will want to switch to different characters. From the gamer/actor's standpoint, there can be competition against, or collaboration with, one another in order to win more viewers toward their shows. (I think cooperation will paradoxically work better than competition, because stories are all about emotions and chemistry, which rarely arises from a single isolated character. Also, recall Buffy and Angel.)
Of course, if such a show turns out to be successful, then a global, or god's view cut, across all the characters, can be produced, which will be like a traditional movie. This can be viewed as a (dimension-reduced) projection of the original show, or an old byproduct derived from a new paradigm. It will definitely do a better job in telling the story as a coherent whole in a much more compact time frame, but it will also be a significantly lossy compression. In a sense, all arts are such reductions/projections of the real world (but also with enhancement, imagination, and even distortion).
Quick & Dirty Video Cut
This was motivated by the need to edit together some "best moments" of the aforementioned gaming show. The market of this particular category of software, namely amateur-grade foolproof video editor, doesn't have a superb reputation: lots of copycatting, lack of care for UX, and subpar reliability, etc. But the need is also clear: it's reasonable to ask for a simple tool to direct cut video files without re-encoding. I purchased one. And it was like a huge pent-up energy to be released: there were so many things to cut, videos from the Internet. When I like something, I keep a copy locally, but rarely I want every frame of it, more often it turned out, I was only turned on by a small subsequence. Instead of roughly jumping around during playback, it is much more effective to precisely cut together the best moments, and when you play a video, no hand was even needed on the keyboard. (Wait, what am I talking about?)
Most videos on the internet are already lossy-compressed, so it's pointless to compress them further, if you want to preserve the quality. But this direct cut of videos can be viewed as a highly effective compression: whatever parts that did not sufficiently stimulate you to leave an impression can just go (low "interest density"). Remember, in most cases, those videos will still exist even if you remove them from your local storage (else if it's truly rare then do help maintain a copy).
And video editing can be fun and rewarding. It's not just about the technical aspects (it's not hard), but rather it is artistic and shows the internal state of the person who does the cutting. Also, this is related to the immense popularity of gifs. A few seconds of frames can carry a very sophisticated message or expression.
One issue I noticed was that in the beginning, we tend to be too conservative and afraid of letting go of those moments that are not obviously worthless. For that reason, initially works tend to be long and taxing. But I figured a way out: set a very specific theme for an edit, e.g. if it's all about funny moments, then let lose your heavy hands and keep nothing but those moments that actually make you laugh, and you will end up with highly condensed, pure-bliss kind of result, no mercy on the mediocre. But of course, the drawback of this type of cut is that you often cannot delete the original video yet. So what I do is often two-fold: do a trimming edit to keep only the worthy parts, and also a best-moments cut to bombard the viewer with only the spiciest.
It didn't take long before I became aware that going through a full-length video to deliver a good recut could be surprisingly time-consuming, however rewarding the outcome was. It could be daunting enough that I wanted to put such tasks on my todo list, yet having such a backlog was not less daunting. So often this made me think twice about whether a particular video was worth the effort in the first place. Indeed, video editing is hard work, now I can much appreciate. But overall, I still think it is a fun and worthwhile thing to do, even as a hobby, given that it's done in moderation. For one, it encourages me to revisit past videos, as the editing effort alone was a powerful indicator of personal interest, and the "compression" makes the re-experiencing maximally effective, as it focuses on nothing but the most impressive parts.