The Pre-Raphaelite Brotherhood, Ophelia, and Life

Seven days from now I will turn thirty and in the last hours of my twenties I sit with a few regrets. I wish I didn’t waste my youth not finding my kin. I did not attend university, which left a constant friendless void (I have them but what strong bond do we share?). I never establishing myself with a school of thought. I’ve barely grasped an identity or even form one of my own because the influence of who I am has been limited by fear of what I never experienced. Now, more than ever, I wish to establish a manifesto, find like minded individuals, creature unique art forms, break the rules, write history and most of all be remembered. But who does that at thirty?

As if destiny ridicules my desire to belong, it also has brought to my attention a brotherhood of painters who had their own doctrine and found their own group willing to push an identity. The Pre-Raphaelite Brotherhood, a small group of painters and writers wanting to dedicate their craft to the abundance of detail, intensity of colors and the complexity of compositions; all in the name of Quattrocento Italian art. By the mid-1850s, Quattrocento was out of fashion and not what the school of arts were teaching.

Yet, I continue to admire not only the artists but their work. So much so that lately I can’t get some of their paintings out of my mind. I desire to travel to Birmingham Museum & Art Gallery in England and view with my own eyes their magnificence and vividness. and I’m not the only one. J. R. R. Tolkien, author of The Lord of the Rings, wrote mythological scenes portrayed by the Pre-Raphaelites in his own work [source]. Led Zeppelin also attributed inspiration from the brotherhood and for good reason. Take one look any of their painting, Ophelia by Sir John Everett Millais for example, and you can understand why.

Ophelia, by John Everett Millais, 1851–52 Ophelia of course refers to the daughter of the Polonius, the chief counsellor who Hamlet mistakenly murders, in William Shakespeare’s drama, Hamlet. Upon discovering the news of her father’s death, she enters a form of hysteria to the point she drowns herself. In these final moments before she willingly lets the brook whisk her breath away, Sir John Everett Millais depicts her calmly alive waiting for the end.

One will notice her wrists gently raised above the water almost christ like in pose, her eyes open, lost in thought, and her mouth possibly inhaling her last breath. The stillness in the scene depicts a romanic embrace of pure venerability that no other painting of Ophelia has been able to capture.

Pre-Raphaelite Brothers, like Sir Millais, had their own doctrines on what painting should express. The most important being, the truth found in nature herself. In Ophelia, Sir Millais did not imagine the scene nor take creative liberties in the ideal environment but instead trespassed on private land to capture earth as it is. In a letter to Mr. Combe, he writes:

I am threatened with a notice to appear before the magistrate for trespassing in a field and destroying the hay; likewise by the admission of a bull in the same field after the said hay be cut; I am also in danger of being blown by the wind into the water and becoming intimate with the feelings of Ophelia when that lady sank to a muddy death, together with her (less likely) total disappearance through the wrath of the flies.

Quotes from ‘John Everett Millais: Master Painters of the World’ by Arthur Fish, 1923

Emulating nature to the most extreme details was what made the Brotherhood stand on their own accord and separate themselves from classical academic teaching of the arts. This meant that earth, in Gods design, was already perfect and to improve on it was sacrilegious. It was recommended and often times expected one must paint directly in the environment to properly capture a scene. Sir Millais continued to write to saying:

There are two swans who not a little add to my misery by persisting in watching me from the exact spot I wish to paint, occasionally destroying every water-weed within their reach.

Quotes from ‘John Everett Millais: Master Painters of the World’ by Arthur Fish, 1923

I could imagine the frustration of dealing with bugs, swans or even the next days weather when painting the perfection of real life but if one thinks of it, nature is at its truest form when Mother Nature response as she should.


I don’t know what it is about the Pre-Raphaelites and their paintings. There’s an initial draw with the fact that a group of university students said no thanks to academic standards and painted work beyond the dreams of their forefathers. There’s something romanic about twenty something year olds getting together in English pubs and dormitories in the 1800s discussing and criticizing modern art of their time, poems of the week and new painting techniques shared only between them. They lived an artist life, died a human death and a hundred or so years later, the results of their brushes are said to be evaluated into the ten of millions [source]. Who couldn’t admire such accomplishments.

Yet here I am, viewing paintings from a computer screen, day dreaming instead of figuring out where my people are and what my life at the end of the day will be summarize as. Entering thirty scares me, I had so much I wanted to do, and now I’m married with the expectation to have kids soon. I won’t have the free time to explore oil painting to mastery, I might have a chance with writing but with eighteen years of parenthood, I don’t know how I could do it when I couldn’t already in my care-free years. Yet, like Ophelia floating with her last breath mad in thought, one can hope she decides to stand up and continue to live. Losing my twenties is weird but I don’t need to let it defeat me.

My words are not as eloquent or as researched as this explanations from Beth Harris and Steven Zucker of Smarthistory. If you’re as mesmerize by Ophelia as I am, please fill in the gaps of my research with their dedication in the following YouTube video:


Installing Katago in Sabaki 2 for MacOS (2021)

Install Sabaki 2

Get download link from this website, get the latest release.

Install Katago

In terminal:

brew install katago

Just to make sure this worked, type katago in terminal to ensure you see the same:

Usage: katago SUBCOMMAND

---Common subcommands------------------

gtp : Runs GTP engine that can be plugged into any standard Go GUI for play/analysis.
benchmark : Test speed with different numbers of search threads.

Connecting Katago to Sabaki 2

  1. Open Sabaki 2 -> Engines
  2. Press the play icon and press Manage Engines...
  3. Press Add to add our new engine

There are four input fields we need to paste information (name, path, no arguments & Initial commands) but require a little more terminal commands to find the details.


For name input anything you want, I recommend Katago since that’s what engine we are setting up.


Run the follow command to get Katago’s homebrew’d install path:

$ which katago

Which will output:


Paste this into the path field in Sabaki

gtp (aka No arguments)

NOTE: This is probably the most difficult part of the installation, so follow closely. What is GTP?

The gtp input text follows this pattern we need two variables to replace, A & B:

gtp -config A -model B

Getting A

run in terminal:

brew list --verbose katago | grep .cfg | grep gtp

Getting B

run in terminal:

brew list --verbose katago | grep .gz

NOTE: here you may see more than one .bin.gz file, pick any of them.

Replace A & B

My working example:

gtp -config /usr/local/Cellar/katago/1.10.0/share/katago/configs/gtp_example.cfg -model /usr/local/Cellar/katago/1.10.0/share/katago/g170-b30c320x2-s4824661760-d1229536699.bin.gz

Now that we have replaced A & B with the config and model text we got from running the previous 2 terminal commands, paste the full gtp text into the third line in Sabaki

Initial commands

Copy and past this into Sabaki’s 4th line:

time_settings 0 5 1

This is what I found in another tutorial but it’s for tournament timing, here’s more details.

Here’s what my Sabaki looks like with all the information:

Sabaki with Katago


  1. Start a new game
  2. Select Katago for either white or black stone and begin the game

Playing against Katago

If you want to test analysis, go to engines->toggle analysis. If you are loading a previous game and want to use katago for analysis, make sure one of the opponets is Katago else it’ll say you haven’t connected an engine for analysis.

(FFmpeg) How to Generate a Color Palette From a Video and apply it to another?

Ever look at a video with an amazing color grading and wish you could copy it? Getting that look can be accomplished using the palettegen filter. palettegen generates a single palette for an entire video stream and saves it as an image file.

Figure 64.0: color palette for input.mp4 (enlarged)

 In this example, a color palette of 256 pixels is generated, as seen in figure 64.0:

$ ffmpeg -i input.mp4 -vf "palettegen" palette.png 

a 256 pixel palette.png was generated from input.mp4. In this example, the same palette.png is applied to input2.mp4 giving it the same color palette input.mp4 had.

Figure 65.0: the input.mp4 color palette applied to input2.mp4

The difference is subtle yet very aesthetically pleasing. The new palette applies faded blue color where green was once seen, as seen in figure 65.0:

$ ffmpeg -i input2.mp4 -i palette.png -filter_complex "paletteuse" -c:v libx264 -pix_fmt yuv420p output.mp4 


	Indicates the palette use filter name

	Indicates the selected dithering mode (default is sierra2_4a)

		Ordered 8x8 bayer dithering
		Paul Heckbert's simple error diffusion

		Floyd and Steingberg dithering

		Frankie Sierra dithering v2

		Frankie Sierra dithering v2 "Lite"

For more information on the advanced parameters available for paletteuse, visit:

Love FFmpeg? Grab a copy of FFmpeg For Beginners on Kindle or Paperback to learn over 120 ways to master FFmpeg!

buy now on amazon

(FFmpeg) How to Remove All Colors Except One From a Video?

FFmpeg has a filter called colorhold with documentation that states:

Remove all color information for all RGB colors except for [a] certain one.

This is incorrect, colorhold does not work this way… well not exactly. It removes colors but it’s completely unpredictable. 

Figure 63.0: left original / right cyan color hold

For example, in input.mp4 there are two blue bars on the train. If the exact blue is taken from the video and colorhold is applied, no color is removed. If a pure cyan color is kept with colorhold, the bottom blue bar & red is removed yet the top blue bar is kept and the interior wall colors remain the same. 

Figure 63.0 shows this inconsistency:

  $ ffmpeg -i input.mp4 -vf "colorhold=color=00FFFF:similarity=1" -pix_fmt yuv420p output.mp4  

Technically with enough effort and guess work, removing all colors except one is possible with colorhold.

	Indicates the colorhold filter name

	Indicates the color which isn’t replaced with the color gray

	Indicates the similar color percentage based on color. The larger the number the larger the similarity (1.0 to 0.1 default 0)

	Indicates the blend percent of gray (1.0 to 0.0 default 0.0)

Love FFmpeg? Grab a copy of FFmpeg For Beginners on Kindle or Paperback to learn over 120 ways to master FFmpeg!

buy now on amazon

(FFmpeg) How to Apply a Vignette to a Video?

A vignette is a fade that is added to the edges of an input. It’s a simple way to add atmosphere or emulate vintage television sets. 

Figure 62.0: vignetting

A vignette can be added without additional parameters as seen in figure 62.0:

  $ ffmpeg -i input.mp4 -vf "vignette" output.mp4 

The vignette filter also has an angle parameter to adjust the angle of the fade. Below is a vignette with a 30 degree angle:

  $ ffmpeg -i input.mp4 -vf "vignette=angle=PI/6" output.mp4  
	Indicates the vignette filter name

angle, a
	Indicates the angle in radians (PI/2 to 0 with default PI/5)

x0, y0
	Indicates the center coordinates

	Indicates the forward or backward mode (forward or backward)

For more information about additional vignette parameters visit:

Love FFmpeg? Grab a copy of FFmpeg For Beginners on Kindle or Paperback to learn over 120 ways to master FFmpeg!

buy now on amazon

(FFmpeg) How to RGB Shift a Video?

RBG shifting is one of the coolest and easiest effects for emulating 3D or add that Vaporwave Aesthetics. With rgbashift, the RGBA pixels can freely shift horizontally and/or vertically.

Figure 61.0: red horizontal shift

In this example, a red horizontal shift is applied to create red/blue 3D, as seen in figure 61.0:

$ ffmpeg -i input.mp4 -vf "rgbashift=rh=-10" -pix_fmt yuv420p output.mp4
Figure 61.1: blue horizontal shift

In this example, a blue horizontal shift is applied, as seen in figure 61.1:

$ ffmpeg -i input.mp4 -vf "rgbashift=bh=10" -pix_fmt yuv420p output.mp4  
Figure 61.2: green vertical shift

In this example, a green vertical shift is applied, as seen in figure 61.2:

$ ffmpeg -i input.mp4 -vf "rgbashift=gv=10" -pix_fmt yuv420p output.mp4

(FFmpeg) How to Invert the Colors of a Video?

FFmpeg has a very simple filter, negate, that inverts the colors of the input. The train station looks really futuristic with this filter on.

Figure 60.0: inverted video

Although this filter is simplistic in use, it has a great effect, below is the command as seen in figure 60.0:

  $ ffmpeg -i input.mp4 -vf "negate" output.mp4  

Love FFmpeg? Grab a copy of FFmpeg For Beginners on Kindle or Paperback to learn over 120 ways to master FFmpeg!

buy now on amazon

(FFmpeg) How to Edit the Saturation of a Video?

Although the hue filter has a saturation variable, FFmpeg also has another filter called vibrance which is used to adjust the color intensity. Both filters give slightly different saturation effects but each has its place.

Figure 59.0: max boosted saturation

In this example, all colors are boosted in the video, as seen in figure 59.0:

 $ ffmpeg -i input.mp4 -filter_complex "vibrance=intensity=2" -pix_fmt yuv420p output.mp4  
Figure 59.1: negative intensity + green saturation

A specific color can also be set to apply a saturation. In this example, a negative intensity with a green saturation is applied. As seen in figure 59.1:

  $ ffmpeg -i input.mp4 -filter_complex "vibrance=intensity=-2:gbal=10" -pix_fmt yuv420p output.mp4  
	Indicates the strength of the saturation boost. Positive value boosts while negative value alters (2 to -2 with default 0)

	Indicates the red balance (10 to -10 with default 1)

	Indicates the green balance (10 to -10 with default 1)

	Indicates the blue balance (10 to -10 with default 1)

	Indicates the red luma coefficient (1 to 0 default 0)

	Indicates the green luma coefficient (1 to 0 default 0)

	Indicates the blue luma coefficient (1 to 0 default 0)

Love FFmpeg? Grab a copy of FFmpeg For Beginners on Kindle or Paperback to learn over 120 ways to master FFmpeg!

buy now on amazon

(FFmpeg) How to extract screenshots from multiple parts of a video (one-liner)?

This question was asked on the FFmpeg Discord. For some reason the person pinged me to answer it so I took a stab at it. Here was the request:

@jdriselvato Hey, I’ve got a question if something is even possible. I want to do. but for multiple seek times and output names (those I guess can be generated from timestamp) with a single pass. Is this possible at all? There is no interval, just “random” times from the video where I want to extract a screenshot

Mr. n

So to clarify, the user was having issues understanding how to chain multiple seeking (-ss) with one input to get random frames from the video. This is possible in a couple of ways. First you must have an understanding how -ss works. It has to be set before the input. What happens here is the input is seeking to a new timestamp for a start location for playback. (for example, the video is 60 seconds long -ss 00:00:10 would jump the start point of the video at the 10-second mark making the video only 50 seconds long in total).

So using that logic, if we set the seeking on the input to get a screenshot out and then applied another seeking with a map the results are going to get tricky, for example:

$ ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 frame_1.png -map 0:v -ss 00:00:10 -frames:v 1 frame_2.png

Here the input is 60 seconds long we automatically start the video at 5 seconds to get the first screenshot but then another 10 seconds is seeded to get a screenshot at the 15th second of the original input. This technically works but you have to do math against the input starting at 5 seconds.

but we are heading in the right direction. the use of -map is what we want to focus on. In this example, we do not do anything to the input but specifically apply seeking to the same map multiple times to get screenshots are specific locations, for example:

ffmpeg -i input.mp4 -map 0:v -ss 00:00:05 -frames:v 1 frame_1.png -map 0:v -ss 00:00:10 -frames:v 1 frame_2.png

This answer was satisfactory and exactly what he wanted to learn. Not bad for waking up only an hour ago.

Here’s an example Mr. N used to manually get this working before working with me to get the above code:

ffmpeg -hide_banner -v quiet -stats -ss 00:45 -i input -ss 00:50 -copyts -vframes 1 output & ffmpeg -hide_banner -v quiet -stats -ss 01:45 -i input -ss 01:50 -copyts -vframes 1 output

Love FFmpeg? Grab a copy of FFmpeg For Beginners on Kindle or Paperback to learn over 120 ways to master FFmpeg!

buy now on amazon

(FFmpeg) How to Convert a Video to Black and White?

Turning a video to black and white is also accomplished by using the hue filter. 

Figure 58.0: black and white video

Setting the saturation value to 0 results in a black and white video, as seen in figure 58.0:

$ ffmpeg -i input.mp4 -vf "hue=s=0" output.mp4 

Challenge: In addition to changing the video to black and white, add a grain filter to make the video look vintage.

Love FFmpeg? Grab a copy of FFmpeg For Beginners on Kindle or Paperback to learn over 120 ways to master FFmpeg!

buy now on amazon