Saturday, 4 July 2020

The Ethics of sources Day 5 - Finding and exploiting hardware and operating system flaws and circuitbent webcams

Welcome back to part 5 of The Ethics of sources, the original talk can be found here - Ethics of Sources Day 5

The reason I first got into making glitch art was whilst experimenting with converting cheap digital cameras to near infra red ( I was still painting then and trying to find new ways of looking at the world) I h found a really really cheap camera given away in a company promotion and having taken a few photographs with it I downloaded the images onto my laptop and noticed that they were in a strange image format called ppm and when I opened them up some of them were really mangled .  ( below is what I consider to be the very first glitch ever made by me )

And from there I started to discover circuit-bending ( the art of making devices malfunction in creative ways ) and through a designer friend ( Thanks Claire Penny) the work of Philip Stearns and specifically his 2012 ' Year of the Glitch' where he takes early Kodak digital cameras and rewires them creatively and records what he does. You can find more about this here  - https://phillipstearns.wordpress.com/tag/year-of-the-glitch/page/2/
And also The work of Rheed Ghazala , considered to be the father of circuitbending. Read more about his work and ideas  and safe ways and methods of circuit-bending which I should state for safety reasons NEVER CIRCUIT BEND A DEVICE DIRECTLY CONNECTED TO MAINS ELECTRICITY  - here Anti-Theory

From there I started to Modify my own cameras based on researching Philip Stearns and Rheed Ghazala and a few other online resources.
And started to film with the results of my experiments for instance this :




The theory and practice of what I'm doing is deceptively simple and largely a process of trial and error and parallels what I'm doing with files through hex editing and data-moshing and one other method I'll discuss further on, but in some ways is more satisfying as I can achieve effects and textures which are uniquely mine .

How do we do this? First find a camera , preferably a cheap old webcam, newer webcams are a lot harder to bend due to the change from large discrete ccds to system on chips which roll the ccd and a few other components into a whole package, though there are ways around it which involve soldering onto or bending pins on the image processing chip. Open the camera up, remove the lense to expose the image sensor, attach webcam to pc and open up whatever webcam viewing software you are using ( so that you see the bends as they happen) , then take short lengths of wire and short circuit between points on the ccd. Note or mark where the best bends are and which ones to avoid , as some bends will either freeze the camera meaning you will have to disconnect and reconnet the usb connector and restart the webcam software , other times you might get a blue screen and restart on windows or crash and restart on Linux . As you can see from the previous picture of the camera I'll then solder onto these points and then attach potentiometers so i can control how much of a bend I want . Eventually I'll mount them so they are more usable and less fragile - like this.


Then I Point them at a source and adjust the pots until I get what I like - a lot of the time this means pointing at a crt monitor ( crt works better than lcd/led , crisper colours and no backlight glare) which is playing back video or TV or using an operating system which has flaws in the way it plays back video ( I never really just use one process)

Go go preaching - (worlds end)

 

This is made with a different camera to the previous video, one of the things about circuit bending is that you get a different look and feel depending on the camera and lens which leads to some unique images which you just can't get with say hex editing or data-moshing alone, regardless of which codec you use so its a good way of getting something that looks different. When everyone uses the same techniques and codecs and methods things can begin to look a little samey, though I could equally say that about painting or other old media , it's how you use it that matters, but circuit bent cameras become uniquely yours .

The sound on this is also by me, made with a circuit bent casio tone pt1 and a diy ring modulator all put together in Audacity I'm always playing around with ideas and I was just interested to see if that would work.I have an uneasy relationship with sound preferring usually to salvage sound from the brokenness of the file, the artifacts that hex editing can create from a file ( but I'll talk about that more in the next post ) .

We could also run the circuit bent camera through processing , but Ill leave that for another day as I've covered some of those techniques elsewhere. 

Circuitbending graphics cards.

I've also been experimenting with bending older graphics cards with mixed results. So far I've been using older pci and agp graphics cards such as an old pci avance logic ( actually one of the best so far) and early ati agp cards - though this method is riskier and can lead to the computer shutting down and causing damage to the card or the computer - I avoid the actual graphics chip and concentrate on the ram chips and short-circuit those and try to capture the output with my vga to composite adaptor and trusty pci pinnacle pc tv rave .

Circuitbending a graphics card 



Or this in black and white 




I also look for damaged cards ( Avance logic)



Some damaged cards can also have some interesting effects, though they can be tricky to work with as its often hard to get an operating system up and running when you cant see the prompts or instructions onscreen due to artifacting . This is my favourite damaged card so far though ( the only info on the card is the main graphics chip which reads as an Avance logic inc ALG2302.A) 

Don't just use one technique

As I say, I don't just use one technique or method, I will often use a combination of circuitbending, hex-editing, datamoshing, and a newer ( and at the moment primary ) area of research for me misinterpretation through operating system flaws in video playback. This started when I was trying out an operating system called Legacy OS 2017 .

Using old computers and Legacy OS 2017

I have a thing about using old computers in my work, mainly through necessity, I'm sure that's true for most of us, I would love the latest 64 core 128 thread Ryzen , but I just can't afford it so most of my work is made on low end machines. Too see how low end I could go and still make glitch art I happened upon a version of puppy linux called legacy os which was optimised to run on pre pentium 4 machines , it worked reasonably well on a pentium 3 with a small ( when I say small I'm talking about 128mb to 256mb ) amount of ram and a modest graphics card. I also use legacy os to test out machines or check the contents of hard drives, like a lot of Linux distros it will boot from cdrom without the need to install it . 

So one day I was testing out a computer and it had this agp graphics card in it, a radeon hd 3650, and one of my tests when I'm checking out a machine is to look at what video playback is like ( is it fluid , choppy etc) and i was playing back a video in a video player that I spotted called quickplay ( which I have never found in any other distro but this ) when something like this happened( I can't remember what the original footage was , I think me wondering around the farmyard where i used to live I think )

The beast in action 


And it kept on happening, it was reproducible, if I played back video on this machine with this graphics card 

Skullduggery


I tried different graphics cards with the same operating system and the same video and the same video player but no, it had to be this one graphics card and then only some files would actually play mainly mpeg 4, h261, mpeg1/2 and libxvid and other stranger file formats like magicyuv.

Key points 
1) Run legacy os in live mode from an ide cdrom ( it doesn't like sata)
2) Graphics card must be either an agp Radeon Hd3650 , or as I later found a pci-e radeon x300se ( found in a lot of pentium d era dell dimensions ) or a HD 5000 series or HD 7750 ( though I also later discovered if at start up when choosing the display manager you choose xvesa instead of xorg you can replicate some of the effects seen with a radeon card ) 

Choose your display manager 

As I later found it when setting up legacy os at startup you get to choose the display manager , in both xorg and xvesa there is an option to choose either 16 bit or 24 bit colour and that can also give interesting results when using quickplay :

Video playback in quickplay running in 16bit colour


Output is obviously dependent on input - so choice of codec and container matter, for instance this is the same setup as before running xorg in 24bit colour but trying and failing to play a file encoded to h264 in an m4v wrapper encoded by handbrake.


Interestingly many of these faults do not work if you install the operating system to a physical hard drive , especially those found in linux mint bea 2.1 and legacy os 4 mini ( the newer version of legacy os 2017 ) .

Older operating systems can be exploited for glitch art


Older operating systems can be exploited - especially those based on older linux kernels ( 2.6.32 and lower) that have incomplete or incorrect support for certain video cards and / or incomplete support for newer codecs such as H264 and cavs. This can be exploited if we have a supply of older motherboards and a basic knowledge of how to put together a desktop computer plus a supply of older video cards to test , often giving us surprising and unique faults , allied with older versions of vlc and other mediaplayers such as gnome-mplayer. A source for old versions of linux can be found here old versions of linux 

The Video below shows how by feeding a tailored mp4 file to kmplayer in legacy os 4 mini the display can be corrupted and subsequent files played back will retain that corruption - I've recently found a more elegant version of this in Linuxmint bea 2.1 from 2006 which does not rely on this method.

Xorg corruption in legacy os 4 mini




This fault also relies on having any of the Radeon cards already outlined and it looks a little like this ( the display is corrupted right from start up and remains like this throughout playback even if we exit and re-enter the display by restarting it with ctrl alt backspace , unlike legacy os 4 mini which requires that you play the tailored file again ) .


Video playback in linuxmint bea 2.1



The computer this is being played on is also very modest - and old socket 754 winfast from 2005 running an AMD 64 sempron 3000 and 1gb of ram with an Ati radeon hd3650.  And to me this is a much more elegant and useful corruption , though the corruption does vary depending on which ati card you use - contrast the above with the video below which was on a different motherboard but with the same card the motherboard was an msi socket 775 rocking an old Pentium 4 with hyper-threading



Error must be repeatable to be useful

A lot of these findings come from my research over the last year into installing and using different Linux distributions, having had a hint of what might be possible through finding the first errors in Legacy OS 2017, these distributions have so far been the most fertile ground for finding errors in video playback due to a combination of buggy hardware support for newer Ati cards and buggy support for codecs in media players. I've documented this research elsewhere ( in the talk given at last years Fubar and in earlier blog posts) and I don't want to repeat that too much as I'm just trying to give and overview rather than a detailed walk through but below are two of my favourite errors, both repeatable and neither relying on specific hardware or cards , that is also something I feel is important, if I find and error I feel that it must be repeatable to be useful .

H264 playback in VLC on Ubuntu 6.06 





This one came as a surprise. I have a series of videos in different formats ready to play on an external hard drive just for this purpose and I loaded up a H264 file into VLC and this happened , the beautiful sliding from right to left which is similar to pixel sorting but more fluid.

The next error was completely unexpected. Before I discovered using cheese webcam booth and later obs-studio as my main capture software I would often use gtk-recordmydesktop to record the output of the malfunctions of whatever OS I was testing at the time running through tvtime viewer which showed the output of the vga to composite adaptor I was using. Now, gtk-recordmydesktop records in ogv format, which has been a common standard for video on the Linux desktop since 2005/6 ? I'm not sure of the exact date but you would think there would be some element of backward compatability but as I discovered newer recordings of ogv in modern versions of Linux played back on older distributions turn into this beautiful Hot mess 

Ogv playback in Gnome-mplayer on Ubuntu 10.04



The next blog post in this series will cover sound.


Thursday, 2 July 2020

Ethics of Sources Day 4 - Divide by stills

Welcome back to part 4 of The Ethics of sources, the original talk can be found here - Ethics of Sources Day 4


I’m calling this blog Divide by stills as we will be Taking a video and dividing it into stills and showing how you can work on the stills through hex editing, convolution and glic – and how different formats break ( cover dds png /ppm )

Now why on earth would we want to take a video and divide it into stills when all we are trying to do is glitch the video ? Primarily control over the process, plus access to different image formats that aren't availablewhen working with video ( though it is possible to encode something like xwd or png or jpeg2000 into video).  The other reason is to achieve readable video at the end which doesn’t require baking, and we can tailor the process at the beginning by only running commands on one or a small number of images before committing to a batch process and for some techniques and formats this actually works better, say if we want to use a format like dds or ppm or even something obscure like sgi – all of these formats have unique qualities when hex edited which you cant get with a video codec.

As an example this is a film I made sometime back in 2017 – this was an original film from 1968 sourced on archive.org, chopped into 34000 individual stills ( xwd format) hexedited then reassembled using ffmpeg. Audio is taken from original converted to cavs, hex edited then captured using audacity on a seperate computer . final video and audio put together with flowblade . Clip below and full video on my peertube channel here

Pretty Broken Things-2017






How do we go about this then lets choose a video ( this is a section of a video of a Ballet by Oskar Schlemmer and elsa Hotzel called ‘the triadic ballet’ ) and then put that in its own folder, this is important as this process generates a lot of stills ( ill often use a scratch disc for larger works)so we will just work on a small 30 sec film through this session .







so lets go ahead and divide this up with this command 'ffmpeg -i ballet.mp4 -vf fps=16 image-%04d.ppm'






So Just to explain that command . ffmpeg -i take ballet.mp4 or whatever video you are using as input , -vf = Create the filtergraph specified by filtergraph and use it to filter the stream , -fps=16 ( we will change that to match the framerate of the video ) as frames per second – output those frames as this string starting from 0001 - = image-%04d.ppm . In simple terms – take this video, divide it into this many stills per second,  as a series of images in ppm format and name them image-xxxx.ppm as you create them starting from 0001. ( ppm is an image format akin to bmp. I find the closer to raw you get the better the results). 


Now we are going to hex edit these stills first with this command which basically searchs for all file types specified in this folder , hex edits them ( as in the previous days talk ) and then redirects the output to a new folder – remember never copy a file onto itself as then all you have is blank files – I also want to keep the file numbering intact for the next step which is important when we put the stills back together (ffmpeg likes a nice orderly sequence of stills).
 
As I said previously, never copy a file onto itself , but what if I have a dozen or say 3000 files to work with ? Well this is what this script achieves – although in this version its set up for hex-editing it can be modified to do something like pixel sorting or pretty any much any command line script you can pipe to.

This is what this script ‘ find . -type f -name '*.ppm'|while read filename; do echo ${filename};xxd -p ${filename} | sed 's/cade/18/g;s/0a/0b/g;s/00/00/g;s/0/0/g' | xxd -r -p >/home/ian/Desktop/ballet/modified/${filename}; done’ does
find . -type f -name '*.ppm' = look in this folder find files with .ppm extension
|while read filename; do echo ${filename};xxd -p ${filename} | sed 's/cade/18/g;s/0a/0b/g;s/00/00/g;s/0/0/g' | = read the filename feed it into xxd which turns it into a hexadecimal stream which is then read by sed which changes the values you specify between the //
xxd -r -p >/home/ian/Desktop/ballet/modified/${filename} = use xxd to turn that stream back into an ordinary file then write that file to the folder specified after the >
; done - = this script is a loop so it checks if there are more files to do if not it exits if there are it returns and finds a new file to work on .
Ouch !
So simply put it looks for files with the extension you choose , hex-edits them then outputs the new file to a separate folder. This what it looks like in action.






Once that script has run we can look into the output folder and look at at the files in an image viewer – now I have imagemagick installed and we could open them up with imagemagick’s image viewer ( if the file is very damaged often imagemagick will be the only viewer that works). Get Imagemagick through your package manager on Linux or here - Get Imagemagick here

 

Imagemagick really is one of the best command line based image manipulation programs you will find . Often hex edited files are damaged and it's a good idea to bake the files in a similar way to how we would bake video and to do that we will use this command ( mogrify is part of imagemagick )



Bake files with mogrify



 

Lets put all of that back together with ffmpeg -i image-%04d.png -c:v libxvid -q 9 ballethex.avi this basically reverses the process we did earlier turning the stills back into video sequentially starting at the lowest file number to the highest.

So the first time I ran this with the png's I created using mogrify  it didn't work, for some reason ffmpeg didn't like the format of the png files so it just halted so then I ran the same command but specified the ppm originals and it worked .

Some re-assembly required 



 

But what does it look like ?






I could go back and change some of those values in the original bash script if I don't like the initial results or the files are just unreadable – I'd tend to run this a couple of times before I get something I really like but I’m happy with this as an example .Trying different image formats will yield different results and that's what its all about, experimentation. Just be aware that if you use longer files you will generate more images and the script will take longer and fill more hard-drive space. For larger projects I have often generated upwards of 70000 images and had to divide the video into groups of 10000 stills just to be able to manage the process without the disc succumbing to a large amount of churn ( the disc struggling to read and display the output ) , A scratch disc is a good idea . 

Convolution
Having looked a little at that lets look at something slightly  different - convolution, I'm not going to cover it too deeply as its quite a complex concept and I don't want to muddy the waters of understanding a good place to start is here though https://en.wikipedia.org/wiki/Kernel_(image_processing) )

Essentially its  moving across an image with a grid comparing and changing values – the true master of this technique is Kunal Agnohotri – this next section is an abbreviated form of what he does but on the command line using imagemagick and mogrify. 
There are a couple of different matrices I’ve used in my work for example this video where I've used some of the technique I just outlined and a fair few others – nothing I make is just one technique its a combination.




But for our purposes today we will just run this ( you can cut and paste and run this in a terminal in the folder where your images are )

'for i in {1..2}; do mogrify -morphology Convolve '3x3:

-100, 5, 100,
100, 5, -100,
-100, 5, 100 ' *.ppm;echo $i; done'

what does this do well its a little complicated and I don’t want to muddy understanding so simply put imagine that your image is a grid of squares say 640x480 , this script starts at the top of the file in a 3x3 grid sliding along and comparing values that it sees multiplying locally similar entries and summing putting the new value back down into the file as it passes . Lets look at it at work on the folder of images we created earlier before we hex edited them . ( notice that this changes the actual files with no backsies – you could redirect them into a new folder but this is just a quick example ) 




 


 We could run this on a batch of already glitched files and get this:



 


Now this isn’t the greatest of results but tweaking the values in the convolution matrix can result in some pretty startling results though I would suggest looking up Kunals' work if you want to get down and dirty with a nice gui ( I just like doing things basically and command-line)

Glic ( Glitch image codec)

what can I say about glic ? It is beautiful to work with allows you to save presets and just works – at this point ill just run on the stills we created earlier it and talk about the interface and what it does and how to use it where to get it ? First you will need the processing environment which is available for Linux, Mac and Windows Get processing here

And you will need the Glic image processing script Get glic here

 Using Glic 



 



Now we've made a whole bunch of glitched stills we need to turn them back into video ( well I do you could just work with stills and sort through for the best ones) and Processing has a handy script which will allow you to turn the stills back into video and it works like this 




 

The end result 



 

In the next post I will be talking about Finding and exploiting hardware and operating system flaws to make glitched video , and a short introduction to circuit bent webcams and how I use them in my work.












Wednesday, 1 July 2020

The Ethics of Sources - Day 3 - ffmpeg and hex editing


  FFmpeg and hex-editing 
 
Welcome back to part 3 of The Ethics of sources the original talk can be found here - Ethics of Sources Day 3

Following on from the previous blog  I mentioned a command-line trick for editing values in a text file , sed , short for stream editor which if you remember looks something like the command below in bold. If you want to find what else sed is capable of just type in man sed in a linux terminal or there is a handy online page from those nice people at gnu.org here : Sed

  sed 's/-1/-2/g;s/0/32/g;' test.json > testhex.json

What this command does is search sequentially through a file from beginning to end looking for in the first instance the value -1 and replaces that with the value -2 this part 's/-1/-2/g , then redirects the output ( the > sign ) to a new file as copying the original onto itself results in a blank file , redirection is useful for all sorts of reasons not least of which is that you can redirect the output to a different directory which becomes handy if you are working on a lot of files ( which I'm going to be covering in another talk).


Now you can use the same command to say mess up a video file so lets go ahead and do that on one of the files we captured on Monday – adbreak .webm ( notice the extension, this points to the file being googles vp8 codec which is in fact what cheese webcam booth captures with) , navigate to the folder the file is in and open a terminal and issue this command :

  sed 's/-1/-2/g;s/0/32/g;' adbreak.webm > adbreaksed.webm 





We can open the end result in say VLC, as you can see though VLC wont play it, so lets try mpv , yep it plays but not well ( something else to consider is that different video players react differently to the same file – a hex edited file may not play in vlc but will in mpv , but mpv may not show the file as it is it may try to correct it so it plays as it should without damage ) but not much information there – webm and vp8 can be quite finicky with what you do to it so lets change some values ( remember we are still treating it as a text file at this point in some ways what we are doing is similar to the The wordpad effect )

So that didn't work so well but as we have the command in the terminal we can just flick the command back up using the arrow key and change some values.
Maybe these 'sed 's/oa/ob/g;s/0/0/g;' adbreak.webm > adbreaksed.webm'




When we play that back in VLC ( and it plays this time as VLC can actually read the file)  you can see its  much better more blocky and broken but still readable. 
 
Which raises the question how readable do we want a video ( or image or sound piece) to be ? Well from my point of view unless you are going for complete abstraction you need to have something left of the original to give people something to hold onto . But I also don’t think people are going to watch a whole video, I certainly don’t make them with linear viewing in mind , given the way that we exist online our viewing is by its nature fragmentary, we don’t just watch a whole movie, we watch a clip of it on YouTube or a meme made from it or even a still. I don't make videos intending them to be seen as a complete thing they are part of the ocean of information we float in
Given that we are treating the file as a text file does that mean its just a text file then. Well, with this command line script we are treating the video as a text file , and this does work but not with any great subtlety , as a video file is much more than just a text file, we need to change the script
  Hex – editing

Hex editing is one of the key methods that I use in my work , its a way of manipulating a file be it video or image or sound , in a way that reflects the true structure of the file by changing hexadecimal values avoiding those we know are essential for the file to be readable ( headers and footers etc ). We can look at and manipulate a file in a hex editor like bless, and its a good idea to begin with to look at how a file is constructed, just to get a feel for what to target and what to avoid. 
But I prefer to use a command-line editor like xxd which is fast and because in the bash terminal I can recall command with the replay function easy to change values quite quickly on the fly for example lets take the previous video and do multiple changes to the file while its playing in VLC on a loop.
And before we get into using xxd and the command above lets open a terminal and issue the command 'xxd -p adbreak.webm' to see exactly what a file looks like to xxd



Now lets use that command above in a loop and look at the resulting file



Now at the end of all of that lets bake that file with ffmpeg (although I suggested yesterday that handbrake and mencoder were the best methods for baking files lets have a look at what using ffmpeg on this damaged file doesit might work , sometimes it does , sometimes it doesn't)
Lets bake it with FFmpeg





And lets look at it  after baking. 



Now what is that command doing ? Lets break it down: the first part is fairly simple , xxd – p tells xxd to read the file adbreakhex.webm into standard output as a plain hexdump the | symbol pipes the output of xxd into whatever command or script is after the pipe , which in this case is sed , sed replaces the values we tell it to the output of sed is then fed through another pipe back into xxd to be turned back into its original form then the redirector symbol > outputs that into a new file we call adbreakhex.webm , its very important when using this method not to copy a file back onto itself or you will end up with a zero bytes file and will lose that file unless you have made a copy elsewhere . 
Now what goes between the two pipes is up to you it could be sed , it could be something else there are various things you could do ( for instance this is a script for batch pixel sorting ' find . -type f -name '*.png'|while read filename; do echo ${filename}; pxlsrt brute ${filename} /home/ian/texture2/${filename} --min 20 --max 30 --vertical --smooth --reverse --method hue ; done' which requires the installation of ruby , ruby stuff from synaptic plus this gem from here https://github.com/GlitchTools/pxlsrt).
This method is fast and clean but you have to have an understanding of how each codec will break to use this effectively so lets run through some codec types and see how they differ – I'm going to use the same file over and again just for comparison

Computational cost

Just as a side note – there is a computational cost in some of these codecs , in that some files take a lot longer to encode and need beefier hardware , longer files can take hours literally , depending on the age and speed of your computer , for instance msvideo1 will take a lot longer to encode than libxvid – a lot of time making glitch art is more about waiting around for the computer to finish an encoding run so match the codecs you use to the computer you have. And there is also size to take into account – how much hard-drive space do you have , rawvideo obviously takes a lot of space but then so does ogv and even webm when playing with high bitrates and quality .

As a side note with libxvid and a few other codecs you can add in or subtract from the file ie make it bigger or smaller using this method , libxvid responds especially well to this for instance ( xxd -p adbreak.avi | sed 's/0808/808/g;' | xxd -r -p > adbreaklibxvidhex.avi

so this is how different file formats look when using this method .

 First libschroedinger

 



 

H261



 

H265(hevc)


 
(This one is quite blocky and angular with a lot of horizontal break out striping and odd sideways stripes) 
Libxvid




Libxvid – interestingly with this one I subtracted from the file ie did a 0808 to 808 swap reducing the size of the file which led to something akin to datamoshing.
Msvideo1




Msvideo1 – Is the dinosaur of codecs and microsofts original video format. I love this one its quite cartoony and you get these beautiful almost echoes going on and that strange pixellated early 90’s feel
Snow



 
Snow is possibly the most beautiful of all codecs when hex edited, but its also one of the most abstract - often the artifacts you get bear no relation to whats happening in the video or the movement involved.
Lets take a look at my workflow and really push a file to its ends . I'll use one of the files I downloaded the other day, transcode it from h264 to h261 using ffmpeg , hex-edit it using the examples I've given transcode and bake it, then run it through Kaspar ravels tomato script that I talked about yesterday and show real time video of the processes as they happen and then some of the final result. 90% of glitch is waiting around for the computer to finish doing what you asked it to do , sometimes it seems like its doing nothing and then you get to poke it and hope you haven't broken the process halfway thru !
 Realtime glitching 



Add fresh Tomato



 
Edit in Flowblade




And the final film finished (short version)

 



 

The final film ended up being about 4 hours long , an unexpected side effect of tomato is that it can often timestretch a film, I did edit it down to 50 minutes in flowblade but then the file ended up being over 1gb in size and on rural broadband thats just not going to be viable for upload ( even over 4g) so I went with the original tomatoed file thus the length but I'm okay with that. The editor I'm using to edit this is called Flowblade find that here ( linux only as far as I know ) its my editor of choice -  https://jliljebl.github.io/flowblade/

 

The next blog post will be about Dividing by stills .























So ya gotta shiny new mac and want to run linux scripts?

 So, you've sold your soul to the devil and bought a shiny new or second hand ( in my case ) mac book pro ( with the shiny new apple sil...