Stephen Cagle

Menu

  • Home
  • Archives
  • About Me
  • RSS

An Unkindness of Ghosts

Rivers Solomon
December 4, 2021
An Unkindness of Ghosts cover

A rather literal (dry) and difficult book held together by moments of beauty.

I think the thing I disliked the most was how "unrealistic" the world felt. All worldships are conjecture at this point, but this one seemed absurdly unlikely. Who would plan a ship in such a way? Does the ship repair itself? Who is doing inspections to ensure safety systems? Do people understand how the baby star works? Are there robots that do maintenance task? Who inspects the maintenance work done? It just didn't hold. I found myself making up additional stories to explain plot holes.

I would much rather have had the "worldship" be some sort of large barge at sea (rising sea level plot?). Then I would have found it much easier to suspend my disbelief about the world, giving my full attention to the characters.

Read More »

Together Together

December 3, 2021
Letterboxd

I am curious if more movies about older people having children will become more standard? Purposely single father is not a terribly well trodden genre.

Read More »

The Hound of the Baskervilles

November 26, 2021
Letterboxd

I think most of my enjoyment of this film centered on Sherlock's performance.

Read More »

The Spine of Night

November 10, 2021
Letterboxd

Nihilistically fatalistic death worshiping horseshit.

Read More »

Raising Arizona

November 3, 2021
Letterboxd

It is a odd film. Feels like what you would get if the Cohen Brothers tried to make a Wess Anderson film. It just never really clicked with me.

Read More »

Dune

October 27, 2021
Letterboxd

I think my favorite part of this movie was the ships and (to a lesser degree) the architecture. I am guessing that Dune is set in a declining empire. Every artifact of humanity is so much larger than the number of humans you would expect for something of that scale. I really enjoyed that.

Read More »

Witness

September 25, 2021
Letterboxd

Strong characters. Interesting and notable camera work. John acts as a proxy, allowing us to observe Amish culture. I enjoyed the respectful tone of this film. Only part that felt like "too much" was the overuse of the synthesizer.

Read More »

The Mosquito Coast

September 13, 2021
Letterboxd

Overbearing mechanical genius father; family caught in the storm of his moods. What happens when an adult never lets go of the absolute self righteousness that the young feel? In other environments might have been a a "Great Man". Ends up being a crank and bully brought down by the "small world".

Not an enjoyable film; but might give you something to think about.

Read More »

The Card Counter

September 10, 2021
Letterboxd

William was seeking a redemption arc in a measured and controlled way, not sure that is possible. Probably needed the "river" to come up the way it did, completely trashing his plans (hand). Only by loosing control of the situation could he get closure.

Read More »

Shang-Chi and the Legend of the Ten Rings

September 4, 2021
Letterboxd

Good beginning, bit bored in the middle, and an above average ending.

The cutout scene where they fought in the bus was fun. I wonder if they made it purposely look like a platform game at points? Both the bus and the bamboo scaffolding fight scenes kind of reminded me of similar scenes from "God of Gamblers" (I think).

Read More »

Beavis and Butt-Head Do America

August 23, 2021
Letterboxd

1996: "Huh-huh, Huh-huh, Huh-huh, Huh-huh" 2021: One "Huh-huh" is sufficient!

I think I liked this film more when I saw it in theaters. It was a well placed film at its release; accurately captured the "corporate counterculture" of MTV.

Read More »

Free Guy

August 21, 2021
Letterboxd

Funny, but went nowhere with any of its AI premises.

Read More »

The Game

August 15, 2021
Letterboxd

An example of a possibly great movie cut short by a very hard to believe premise.

Read More »

Jungle Cruise

August 1, 2021
Letterboxd

You know exactly what you are getting. Well done, but nothing you are going to think about after walking out of the theater.

I thought this fight scenes were a little dark (literally), sometimes had trouble making out who is doing what. The monsters were visually fun but were often difficult to discern from one another.

Read More »

F9

July 1, 2021
Letterboxd

Whelp. This was worse than I had hoped for. Everything "fits", it is just kind of getting stale.

There was a moment when Roman and Tej were kind of waxing philosophical about how they keep surviving completely absurd things. Like really really really, entirely impossible situations. I was kind of hoping that the plot would go in the direction of:

  1. St. Elsewhere Snow Globe type scene
  2. Redshirts (novel) type plot
  3. I'll even take a matrix-you-are-plugged-into-the-machines type ending

Yeah, I don't know, when I start daydreaming about directions your film could have taken while the movie is playing... we have a problem.

Read More »

City Hunter

April 22, 2021
Letterboxd

Eh, you shouldn't watch it. But I had some fried chicken and a beer and skipped through it a bit and it was... passable. Some of the goofy fight choreography kind of grows on you. Memorable scene at end with Jackie playing Chun Li from Street Fighter.

Read More »

Download all Github projects to a directory

October 17, 2020

I made the following script to download all Github projects into a directory. It is fun to see everything you have accumulated over the years. :)

curl -u <USERNAME>:<OAUTH_TOKEN> https://api.github.com/user/repos\?per_page\=100 | jq ".[].git_url" | tr -d '"' | while read in; do git clone $in; done

Notes

<USERNAME> is your github username.

<OAUTH_TOKEN> can be created from here. You only need the repo scope for this.

  • You may need to install jq as it isn't standard.

  • You will need to be authenticated or the git clone X will fail on non public repos.

  • API will only download up to 100 projects. If you have more than that you will have to page.

Read More »

CAR & CDR system of productivity

September 29, 2020

The last 2 months have seen a decline in my output. To combat this, I am implementing a new process that I hereby name the "CAR|CDR" system of productivity. CAR & CDR come from LISP Lore. I picked the name because I like saying CARKIDER phonetically.

It is really quite simple. I have a dynamic list of everything that is important to me. From projects to people to ideas to consumption to whatever. I enumerate every alternating day as either being a CAR (Head of the list) or CDR (rest of the list) day. For instance, this week MWFU are CAR (Head) days and TRS are CDR (Rest) days.

How?

On CAR day, I shouldn't be doing anything other than the most important task on my list. I purposely choose, and in doing so free myself, to ignore all the other task in life that I deem important. It means that I don't pencil in any other things that day, I don't try to squeeze some other concern in there. I also attempt to limit the number of decisions I need to make on CAR days to only things concerning the CAR item. It is a CAR day, that is its all encompassing purpose.

CDR days are for everything other than the head of your list. For this reason I am fairly flexible about what I should do within the rest of the list. Your CDR list should always contain basic things like "exercise", "enjoy life", "have fun", "socialize", as well as directly actionable things like "pay taxes", "study category theory", etc. I really just let whim and urgency dictate what I do on CDR days. CDR days are for inspiration, they should be the opposite of focusing on a singular purpose.

Why?

There are so many things going on in my own life and in the world as a whole that I don't have a good why. Explaining why is too big a question, and I suspect I could not do it if pressed. All I am sure of is that I am not able to focus on tasks like I once could. I think partially it is my brain rebelling against the monotony of my current life; the constraint of spending almost my entire day in a 13' x 17' room as we wait out this pandemic. Without a clear path forward, I am trying random strategies I think up and seeing if they help.

As for the question of why this strategy? I think it has to do with the idea of focused vs diffuse thought. I think my mind/personality is being softened as contact with much of my previous environment diminishes. It isn't just the lose of people, it is also the roles and activities and parts that I previously played. The CAR day gives me time to put my full intellect and focus towards a task, shutting out the outside world. The CDR day gives me time to softly adjust to the new world, without having to think about my most important thing upon that day.

Conclusion

I hope it helps me out.

Read More »

Supernova Era by Cixin Liu

September 27, 2020

This book, I assume, is supposed to be parody? Right?

I am not sure at what point speculative fiction becomes parody. Similar to the line between erotica and pornography, it may be one of those "I can't tell you what it is, but I know it when I see it" kind of situations.

This book has 2 broad halves, the Chinese half and the Chinese + American half.

Up to the limits of the Chinese half, I was constantly asking myself questions like "Wait, are children really this selfless? Can children really do these things? Are children really this emotionally stable?" I was constantly asking myself if Chinese children are this exceptional compared to American children. The self reflection, maturity, and insight the Chinese children possessed was incredulous. I felt a vague sense of unease that Chinese children might be so superior to American children (my birthplace). What future can the United States have when the youth of other nations are so superior to our own?

The second half (Chinese + American) of the book put those fears to rest... In a big way. I cannot comment on the emotional makeup and resiliency of Chinese children. I can however comment on American children. Yes, I agree, there are broad cultural differences between the two groups. Yes, American culture has its share of problems, same as anybody else. Yes, children are reflections of the culture they were raised in. However, his portrayal of American children paints them as little more than narcissistic conniving psychopaths. It is so over the top that it becomes... I don't know, almost an exploitation of American culture rather than a reflection of it. In short, I felt his generalization of American children were significantly off. So far off that I felt the American children were written as parody.

You start the book thinking that there is only one plot element that you must take as a given, that there could be a stellar event with an incredibly specific type of radiation that only kills people over 13. However, about half way through (maybe sooner if you are less naive than I am) you discover that there are actually three such plot elements. The stellar event itself, the characterization of American Children as little monsters, and presumably the characterization of Chinese children as miniature adults.

With all that said, it was still an enjoyable read. Prose sometimes felt a little "literal" for lack of a better word. It is a quick read, so I would be comfortable recommending it to most.

*** Real Plot spoilers below - Don't continue

Things I really liked or noted:

  1. The quantum-whatever-star-trek-AI that the Chinese kids had was a bit of a deus ex. Whatever.
  2. With that said, I loved the idea of a "real time chat" between millions of people. Where the AI would summarize the message of a large group of people and split them into separate singular "speakers" in real time. Allow any number of people to communicate but limit the expressive speakers to a number that is human understandable. Why can't we have something like that?
  3. Prove me wrong, but there are many things that children simply can not do. They require emotional maturity, strength, or intelligence that children do not posses. I found the idea that most jobs could be taken over pretty ludicrous.
  4. Maybe, with the help of an all seeing AI and the "best of the best" of China, you could have a functional society as outlined in the book. But I think a big part of this is the AI.
  5. The American child society seemed entirely unstable. I had a really hard time believing that the characters on the American side of things could possibly do anything as complicated as launching a battle fleet, hosting a summit, or even keeping themselves fed. With those sort of characters, you would rapidly devolve into tribalism. Nothing of note could be accomplished with such a society.
  6. I did enjoy the brutality that the children were allowed to express. I think we can all recognize at some level that empathy is something that develops for many people later in life (often around adolescense) . I did appreciate that it didn't characterize the children as being little angels. With that being said, I don't think that the "natural state" of children is even close to as terrifying as that expressed in this book.
  7. I was especially confused why persistent automated monitoring and enforcement was not introduced as a final gift to the children from the adults. If they can build an all powerful AI, why not have the AI monitor what work is being done, chide, scold, punish and eventually exclude children who are negligent. Basically force compliance by pushing out children who choose not to work within the system. Many children would die, but many would choose to work with the AI as it assures stability for them. Seemed like a pretty large blind spot.
Read More »

Supernova Era

Liu Cixin
September 15, 2020
Supernova Era cover

This book, I assume, is supposed to be parody? Right?

I am not sure at what point speculative fiction becomes parody. Similar to the line between erotica and pornography, it may be one of those "I can't tell you what it is, but I know it when I see it" kind of situations.

This book has 2 broad halves, the Chinese half and the Chinese + American half.

Up to the limits of the Chinese half, I was constantly asking myself questions like "Wait, are children really this selfless? Can children really do these things? Are children really this emotionally stable?" I was constantly asking myself if Chinese children are this exceptional compared to American children. The self reflection, maturity, and insight the Chinese children possessed was incredulous. I felt a vague sense of unease that Chinese children might be so superior to American children (my birthplace). What future can the United States have when the youth of other nations are so superior to our own?

The second half (Chinese + American) of the book put those fears to rest... In a big way. I cannot comment on the emotional makeup and resiliency of Chinese children. I can however comment on American children. Yes, I agree, there are broad cultural differences between the two groups. Yes, American culture has its share of problems, same as anybody else. Yes, children are reflections of the culture they were raised in. However, his portrayal of American children paints them as little more than narcissistic conniving psychopaths. It is so over the top that it becomes... I don't know, almost an exploitation of American culture rather than a reflection of it. In short, I felt his generalization of American children were significantly off. So far off that I felt the American children were written as parody.

You start the book thinking that there is only one plot element that you must take as a given, that there could be a stellar event with an incredibly specific type of radiation that only kills people over 13. However, about half way through (maybe sooner if you are less naive than I am) you discover that there are actually three such plot elements. The stellar event itself, the characterization of American Children as little monsters, and presumably the characterization of Chinese children as miniature adults.

With all that said, it was still an enjoyable read. Prose sometimes felt a little "literal" for lack of a better word. It is a quick read, so I would be comfortable recommending it to most.

*** Real Plot spoilers below - Don't continue

Things I really liked or noted:

The quantum-whatever-star-trek-AI that the Chinese kids had was a bit of a deus ex. Whatever.
With that said, I loved the idea of a "real time chat" between millions of people. Where the AI would summarize the message of a large group of people and split them into separate singular "speakers" in real time. Allow any number of people to communicate but limit the expressive speakers to a number that is human understandable. Why can't we have something like that?

Prove me wrong, but there are many things that children simply can not do. They require emotional maturity, strength, or intelligence that children do not posses. I found the idea that most jobs could be taken over pretty ludicrous.

Maybe, with the help of an all seeing AI and the "best of the best" of China, you could have a functional society as outlined in the book. But I think a big part of this is the AI.

The American child society seemed entirely unstable. I had a really hard time believing that the characters on the American side of things could possibly do anything as complicated as launching a battle fleet, hosting a summit, or even keeping themselves fed. With those sort of characters, you would rapidly devolve into tribalism. Nothing of note could be accomplished with such a society.

I did enjoy the brutality that the children were allowed to express. I think we can all recognize at some level that empathy is something that develops for many people later in life (often around adolescense) . I did appreciate that it didn't characterize the children as being little angels. With that being said, I don't think that the "natural state" of children is even close to as terrifying as that expressed in this book.

I was especially confused why persistent automated monitoring and enforcement was not introduced as a final gift to the children from the adults. If they can build an all powerful AI, why not have the AI monitor what work is being done, chide, scold, punish and eventually exclude children who are negligent. Basically force compliance by pushing out children who choose not to work within the system. Many children would die, but many would choose to work with the AI as it assures stability for them. Seemed like a pretty large blind spot.

Read More »

Push Blog to Github Hosting using Planck

May 6, 2019

I wanted the opportunity to try out Planck (User Guide) (SDK), which lets you write shell scripts in clojurescript.

Wrote a small script to upload my blog into Github hosting.

Like the fact that it mixes the clojurescript code with the shell commands (sh ...). One can use simple shell commands and compose them with clojurescript. Loose the value of pipping and shell expansions, but sometimes that is a reasonable trade-off.

Read More »

Quick Containment in a Arbitrary Depth Map

May 3, 2019

contains? will check (in the case of a map) for a key within a map. (contains? data v) returns true when v is :a or :f. (contains? data :c) will return false as :c is not a top level key in data.

Problem

I want to ask "containment" questions about the keys at ALL levels within a map. I want to be able to determine not just that :a and :f are within the map but also that :b, :c, :d, :e, and :g are "contained" as well. Conversely, I want to know that :z is not a key within any map in data.

Solution

(defn- add-children-metadata [m]
  (->> m
       vals
       (map (comp :all-keys meta))
       (apply clojure.set/union (-> m keys set))
       (assoc (meta m) :all-keys)
       (with-meta m)))

(defn map->containment-map
  "Sets :all-keys metadata for every map in m; :all-keys holds every key in this map and for all submaps"
  [m]
  (-> (fn [acc k v]
        (assoc acc k (if (map? v)
                       (-> v map->containment-map add-children-metadata)
                       v)))
      (reduce-kv {} m)
      add-children-metadata))

Usage

(def data {:a {:b nil 
               :c {:d nil 
                   :e {}}}
           :f {:g nil}})
           
(def contained-data (map->containment-map data))

Note that data and contained-data are equal.

(= data contained-data)

The difference is that contained-data has the :all-keys key within its metadata.

(-> contained-data meta :all-keys)

Examples

With this metadata, you can ask containment questions about keys at all levels. Each submap within contained-data also contains :all-keys in their metadata.

contained-data contains the key :f

(-> contained-data meta :all-keys (contains? :f) (= true))

contained-data does not contain the key :x

(-> contained-data meta :all-keys (contains? :x) (= false))

Key :a under contained-data has keys :b :c :d and :e

(-> contained-data :a meta :all-keys (= #{:b :c :d :e}))

Conclusion

That's it. You can use the :all-keys metadata to either:

  1. Do fast containment lookup of all keys within a map.
  2. Get a sequence of all (unique) keys within a map.
Read More »

This To That

April 24, 2019

I need something that converts a particular key/value within a sequence of maps into a single map. this->that will do nicely.

(defn this->that [this that vs]
  "Build a map out of sequence vs; taking `this` as the key and `that` as the value from each"
  (reduce
   (fn [acc v] (assoc acc (this v) (that v)))
   {}
   vs))
;; -> {:key-1 :value-1, :key-2 :value-2}

Let's create some data for this example.

(def data 
  [{:id 1 :email "mouse@hanna-barbera.com" :name "Bullwinkle J. Mouse"}
   {:id 2 :email "squirrel@hanna-barbera.com" :name "Rocky the Flying Squirrel"}
   {:id 3 :email "boris@hanna-barbera.com" :name "Boris Badenov"}
   {:id 4 :email "ffetale@hanna-barbera.com" :name "Natasha Fatale"}
   {:id 5 :email "leader@hanna-barbera.com" :name "Fearless Leader"}])

With this->that and our data, we can now create a map of :id to :email.

(defn id->email [vs]
  (this->that :id :email vs))
(id->email data)

Or :id to :name.

(defn id->name [vs]
  (this->that :id :name vs))
(id->name data)

Interesting

Within this->that the arguments this and that are being called. This must mean that keywords (:id, :email, and :name in our case) are callable as functions! this->that actually takes two functions as the this and that arguments. this->that can take a sequence of any type in vs, provided that you can write functions to pull values from every element in vs.

Let's illustrate the equivalency of keywords and functions below.

(= (this->that :id :name data)
   (this->that #(:id %) #(:name %) data))
Read More »

Hellboy (2019)

April 13, 2019

Trying to get back into the swing of things in terms of writing. It is a muscle I need to exercise and all that. Start easy by just posting a movie review.

I think Hellboy (2019) is the second most frenetic movie I have ever seen (First goes to Crank 2 High Voltage). It is the most "Russian Doll"'ed plot in my recollection; felt like one backstory introduced every 15 minutes. Lots of exposition. Fair share of flashbacks. Narratively, it was a mess.

I could spend time ripping it appart on the above, but why waste both our time? You should know that it has a awful review on rotten; if you are looking for fodder to critique the film, it is available. Let's see if there is anything interesting here.

Animate it?

Watching a movie sourced from comic book material, one of the biggest questions I have is "Why don't they do animation instead?" Budget on this was ~50 million dollars. Spider-Man: Into the Spider-Verse was excellent with a budget of 90 million. How good can an animated movie be with a budget of 50 million? I don't honestly know.

But here is the interesting thing. I suspect that the art assets and know how from doing one animated film also transfer to its sequels. This is of course also true for live action film. But live action films have significant cost that animated films do not. Beyond the cost of getting actors, building sets, equipment, post processing, etc, you have the simple fact that most artifacts built for the film will not be used in subsequent films.

Animation is different. Once you have worked out the software to do character kinematics, once you have the right textures, once you have figured out the proper lighting, you just keep using it. The cost to store the know-how you have accumulated over previous films is negligible. You need to save your software (and yes, even 2d animation is made with extensive software these days) and you documentation. Maybe the first film in a series cost 100 million because of novel development in your tech stack. But the next film can be made for substantially less because you are just going to use the same software and tweak it for every release to use newer (and cheaper) hardware.

In favor of animation

I suspect one reason animation is ignored is that animated movies have a low return of a few hundred millions. They rarely generate billion dollar returns. It feels like Hollywood is more interested in making 300M movies that have a 20% chance of making billion than a 50M movies that has a almost 100% chance of making 60M.

In favor of "malleable" material

It is also the case that Hollywood seems to be obsessed about making franchises these days. I get it, you need something that won't just pay the bills today, but might also keep the lights on tomorrow. Comic book material is perfect for franchises. The material is already so malleable and the constraints of the world are so soft that it is easily and endlessly re-mixable for all of eternity.

What's your point?

Animation & comic book source material are a match made in heaven for diversified risk. When you can make 6 to 10 NEW animated movies for the cost of a single live action movie, you can take a lot more risk.

It is a pretty simple program:

  1. Make an animated movie of a comic book property at a low enough cost that you almost certainly will recoup expenses.
  2. If your movie is franchisable, then go to 3, else go to 4
  3. Release a new film in the franchise. Ruthlessly focus on being profitable AND cutting cost for future releases. Rely on the fact that you can re-use assets and depend on the loyalty of die hard fans to generate a certain amount of revenue. Before every cycle, ask "Is expected return greater than expected cost?", if "yes" go to 3, otherwise go to 4.
  4. Pick another comic property and go back to Step 1.
Read More »

Build a CSV in Clojure

December 23, 2017

Converting a vector of values to a CSV in pure clojure. Not actually that interesting, just wanted the chance to try out klipse.

(ns example.silly-csv
  (:require 
    [clojure.string :as string]))

(def csv
  [["name" "age" "occupation" "gender"]
   ["Peter Pan" 312 "Lost Boy" "male"]
   ["Wendy Darling" 14 "Older Sister" "female"]
   ["Captain Hook" 330 "Pirate" "male"]
   ["Tinker Bell" nil "Fairy" "female"]])

(defn clean-str [s]
  (pr-str (string/replace s "\n" "")))

(defn build-csv [xs]
  (->> xs 
    (map (fn [xs] (map #(if (string? %) (clean-str %) %) xs))) ;; quote all strings
    (map (partial string/join ",")) ;; seq of seq -> seq of strings
    (string/join "\n"))) ;; seq of string -> string

(println (build-csv csv))

Read More »

« Prev Next »

Copyright © 2026 Stephen Cagle

Powered by Cryogen | Free Website Template by Download Website Templates

×