Craig Oates: Software https://www.craigoates.net/software The software projects section of craigoates.net xml-emitter en-gb Craig Oates: Software https://www.craigoates.net/images/logo https://www.craigoates.net/software Brittle Fish https://www.craigoates.net/software/view/brittle-fish This project is an open source project hosted on Git.Abbether. Its purpose is to show how to use Console.Waterworks in an F#-only project. The main reason this repository exists is because I wrote Console.Waterworks in C#. My intention at the time was to use it with other C# projects once I finished making it. I had no desire to use or learn F# (or VB for that matter). That was was short-lived, though -- surprise! This is because I actually ended up learning F#... and liking it. I still have not learned VB, though. Please don't judge... I don't have enough time to learn everything. One of the things which stands out when learning F# is the guides for most of .Net is C#-first/only. If you know C#, though, that is not a problem. You just do the ".Net Shuffle" (translate C# to F#) and go on your merry way. With that said, this is tedious and I despise it. There is nothing merry about it. Also, if you do not know C#, I admire your stubbornness to persevere with learning F#. Anyway... Instead of throwing the "F# Section" in a deep corner of Console.Waterworks wiki, I have made this. With that said, I must admit it does come with a compromise. This guide does not talk about the internals of Console.Waterworks. Brittle Fish only provides information about *using* Console.Waterworks in an F# console program. If you want to tinker inside Console.Waterworks, you will need to know C# and use the main Console.Waterworks wiki. ## Pre-Requisites - Visual Studio 2017 (15.8+) - F# (4.1+) - Basic understanding of C# (6.0+) - Console.Waterworks.Net (4.7+) - .Net Core (2.0+) ## Relevant Links - [Brittle Fish Repository](https://git.abbether.net/craig.oates/Brittle-Fish) - [Console.Waterworks Repository](https://git.abbether.net/craig.oates/Console.Waterworks) - [Console.Waterworks.Core Repository](https://git.abbether.net/craig.oates/Console.Waterworks.Core) NuGet Mon, 11 Apr 2022 00:00:00 +0000 Skivvy https://www.craigoates.net/software/view/skivvy This project does all the hard work and gets no respect. Skivvy's main function is to parse and transform data from the CO-API so the CO-Data project can save processing cycles when generating its graphs. I imagine most people will never use this project but if you fancy playing around with the data from CO-API, Skivvy might help you get data into a shape you might prefer. Of course, you can stick to how CO-API gives you the data to begin with. I wrote Skivvy in Python3 and is should be ran from its own virtual environment. It comes with its own 'requirements.txt' file and the project's 'README.txt' file explains how to set one up. Unfortunately, this is not a pretty or sexy project. So, there is no nice images to demonstrate what it looks like, or does for that matter. Skivvy is a data-wrangling project with the purpose of making the task of another project (CO-Data) easier to do. This project very much lives up to its name. ## Relevant Links - [Skivvy's git repository](https://git.abbether.net/craig.oates/skivvy) - [CO-Data's git repository](https://git.abbether.net/craig.oates/co-data) - [CO-Data's website](https://data.craigoates.net/) - [CO-API's website](https://api.craigoates.net/index.html) Utility Mon, 11 Apr 2022 00:00:00 +0000 Prototype Placeholder https://www.craigoates.net/software/view/prototype-placeholder Prototype Placeholder is application which helps its users create placeholder content quickly. It was designed with software developers and designer of digital media in mind. But, it can, also, be used for print-based work flows.  The main focus of Prototype Placeholder at the minute is images but expect to see tools for generating text and various code templates in the future.  Due to this being the first release and a M.V.P., I have made Prototype Placeholder free. However, as more features are added and the application is flushed out, that will no longer be the case. So, if you think this is something which might be even remotely useful, I suggest you take advantage of the fact it is free. ## Screenshots <figure> <img src="/storage/view/craig/media/prototype-placeholder-screenshot-1" alt="Screenshot 1"> <figcaption>Screeenshot1: Prototype Placeholder when using the Light theme.</figcaption> </figure> <figure> <img src="/storage/view/craig/media/prototype-placeholder-screenshot-2" alt="Screenshot 2"> <figcaption>Screenshot 2: Prototype Placeholder when using the Dark theme.</figcaption> </figure> [![Microsoft Store link](https://www.craigoates.net/storage/view/craig/media/ms-store-badge)](https://www.microsoft.com/store/productId/9PFTL6XHP1LD) �� Design Tools Mon, 11 Apr 2022 00:00:00 +0000 Cuboid https://www.craigoates.net/software/view/cuboid <p class="ui-message-warning">Note: This project is no longer active.</p> Cuboid is a WordPress theme for people who want their work to do the talking and not the website. It does this by providing a nice, clean and distraction-free environment. <figure> <img src="/storage/view/craig/media/cuboid-screenshot" alt="Cuboid screenhot"> <figcaption> Cuboid Screenshot - Home page example </figcaption> </figure> ## Theme Information - Licenses Offered: GPL - File Types: PDF, ZIP - File Size: 1.72MB - Layout: Responsive - Minimum Browser Support: IE 11+, Firefox 14+, Chrome 19+, Safari 5.1+, Opera 12+, Edge 14+ - <del>Live Preview</del> - <del>Available at Creative Market</del> WordPress Theme Mon, 11 Apr 2022 00:00:00 +0000 CLI https://www.craigoates.net/software/view/cli <p class="ui-message-warning">Note: This project is no longer active.</p> CLI is a command line theme for WordPress for when you need to bring the retro. Using a CLI terminal, your users can navigate through your content. <figure> <img src="/storage/view/craig/media/cli-screenshot" alt="CLI screenhot"> <figcaption> CLI Screenshot - Home page example </figcaption> </figure> ## Theme Information - Licenses Offered: GPL - File Types: PDF, ZIP - File Size: 4.25 MB - Layout: Responsive - Minimum Browsers: IE 11+, Firefox 14+, Chrome 19+, Safari 5.1+, Opera 12+, Edge 14+ - <del>Live Preview</del> - <del>Available at Creative Market</del> WordPress Theme Mon, 11 Apr 2022 00:00:00 +0000 Amazing Animal Alphabet https://www.craigoates.net/software/view/amazing-animal-alphabet Amazing Animal Alphabet is a children’s quiz. The aim is to guess the type of animal on show. There are twenty-six animals in total, one for each letter of the English alphabet. How many animals do you know? When I began making this game, my intension was to include my niece and nephews in the process. The plan was to show them pictures I drew of the different animals and let them pick which ones to include in the game. I was, also, going to let them pick the style I would use to draw the animals and the GUI parts of the game. I thought it would be empowering for them to see a video game take shape, based on what they said. Can you imagine how you would have felt if someone did that for you? Unfortunately, my grand plan did not materialise like that. They did get to see it but not until the end. Life kept getting in the way and I never got to see them enough to seek there input. Cue the violin... Seeing as I have made it, I thought I would let others have some fun with it. It can be quite nice sitting down with the little rug rats and watch them work out the world around them. So, use the link at the bottom of this page to get a hold of it. As well as the game, I have included an eBook. I figured some of you might find my voice a little grating or weird (not everyone is from Northern England). I am, also, aware of some children's desire to repeat the same thing for hours on end. So, even if you do not mind the voice, having "giraffe" echo for hours on end is enough to drive anyone to rage, madness or both. And, yes; the game comes with an "audio-clue" element. ## Key Features * Track your high score * Amazing art work * Audio recording of each animal’s name ## Screenshots <figure> <img src="/storage/view/craig/media/amazing-animal-alphabet-screenshot-1" alt="Screenshot 1: Start screen"> <figcaption>Screenshot 1:The start screen.</figcaption> </figure> <figure> <img src="/storage/view/craig/media/amazing-animal-alphabet-screenshot-2" alt="Screenshot 2: In-game screen 1"> <figcaption>Screenshot 2: The aim is to teach the alphabet and about animals of the world.</figcaption> </figure> <figure> <img src="/storage/view/craig/media/amazing-animal-alphabet-screenshot-3" alt="Screenshot 3: In-game screen 2"> <figcaption>Screenshot 3: Use the hand drawn image to guess the name of the animal.</figcaption> </figure> <figure> <img src="/storage/view/craig/media/amazing-animal-alphabet-screenshot-4" alt="Screenshot 4: Mobile start screen"> <figcaption>Screenshot 4: App. can squeeze down in size if you need it to. Handy when on a tablet.</figcaption> </figure> <figure> <img src="/storage/view/craig/media/amazing-animal-alphabet-screenshot-5" alt="Screenshot 5: In-game screen 3"> <figcaption>Screenshot 5: Click/tap the audio button to hear how to say the animal's name.</figcaption> </figure> <figure> <img src="/storage/view/craig/media/amazing-animal-alphabet-screenshot-6" alt="Screenshot 6: End of game screen."> <figcaption>Screenshot 6: See if you can beat your highest score.</figcaption> </figure> ## Download Links The game can only run on a Windows (64-bit) desktop machine. There is no installer so you can throw it on a USB stick and use it on anyone's Windows machine. This does not include Windows 10 Mobile or IOT/Compact Edition. The eBook's file size is larger than would usually find because the book is a collection of high-resolution images. There is no "text" per se, like most eBooks. - [Amazing Animal Alphabet Game](https://www.craigoates.net/storage/view/craig/media/amazing-animal-alphabet-win10) (approx. 28 MB) - [Amazing Animal Alphabet eBook](https://www.craigoates.net/storage/view/craig/media/amazing-animal-alphabet-epub) (approx. 18 MB) - [Amazing Animal Alphabet Graphics Projects](https://www.craigoates.net/graphics/view/amazing-animal-alphabet-graphics) (For all the graphics based versions of this project) ���� Games Mon, 11 Apr 2022 00:00:00 +0000 Subway https://www.craigoates.net/software/view/subway <figure> <img src="/storage/view/craig/media/subway-screenshot-1" alt="Form factor image"> </figure> ## About Subway <p class="ui-message-warning">Note: This project is no longer active.</p> Subway is a WordPress theme with a New York feel and an old-school London Tube twist ("Raleway" anyone?). If you want a website with big buttons, easy and clear navigation and lots of colour options, this theme is for you. It, also, looks good on any screen size which is never a bad thing. The main type of site Subway excels at is a blog based one. When you visit the demo. site, you will see why. The site focuses on giving the viewer the content in a quick and clear manner... much like the designs in London and New York. The default colour palette for Subway is (very) grey and this is intentional. One of the goals, whilst designing Subway, was to create or encourage a sense of "make Subway your own". So, one of the things we did was have Subway's default look be "basic". By doing this we are hopeful the user will feel compelled to check out the customisation tools. Speaking of customisation tools... The second thing we did was integrate and extend the built-in WordPress Colorizer. By doing this, the user can make Subway look how they want it to. On top of that, because it is a built-in WordPress feature, there is a good chance you know how to use it. If not, there are already a lot of tutorials and guides (online and off) on how to use it. That is one less thing to learn/worry about. <figure> <img src="/storage/view/craig/media/subway-screenshot-2" alt="Screenshot 1"> <figcaption>Screenshot 1: An example of how Subway could look.</figcaption> </figure> Other features which come with Subway are shortcodes and templates. If you are new to WordPress, do not worry about knowing what they are. They are things which WordPress uses quite a bit so you will learn about them the more you use WordPress. For those who do know what they are, the demo. site has examples explaining what is available (see “Live Preview” link below). In a nutshell... Shortcodes allow you to create Subway themed links (including social-media specific ones). Templates generate information using the extended Customizer settings. Also, on the demo. site, there are more examples of customised versions of Subway. ## Theme Information 1. Licenses Provided: GPL 2.0 1. File Types: PDF, ZIP, (PHP, CSS, JS, PNG, SVG) 1. File Size: 699.21 KB 1. Layout: Responsive 1. Minimum Browser Support: IE 11+, Firefox 14+, Chrome 19+, Safari 5.1+, 1. Opera 12+, Edge 14+ 1. <del>Live Preview</del> 1. <del>Available at [Creative Market</del> ���� WordPress Theme Mon, 11 Apr 2022 00:00:00 +0000 Console.Waterworks https://www.craigoates.net/software/view/console-waterworks ## About Console.Waterworks Console.Waterworks is a NuGet package. It aim is to help you write extendable and command-based console programs in C# and .Net. One of the main struggles with writing software is the need to write "plumbing code". It is the code which does not solve the main problem but it is necessary for us to reach a solution. This is why we all feel frustrated when we need to write it. It feels like we are going the long way round to that dream holiday in the sun. This is qwhy I created Console.Waterworks. I believe we should face frustration when it finds us and only then. Why go looking for it? Amongst other things, Console.Waterworks has this one very handy trick. It allows you to write methods which become a run-time command -- which is quite the time saver. When you use Console.Waterworks, you, also, do not need to parse end-user input. The reason why is because Console.Waterworks does it for you. This means, when people run your program, they type the method name in and your code begins executing. On top of that, Console.Waterworks handles bad input and method parameters, as well. Do not panic if none of what I just said made sense. I threw a lot of information at you in a short span of time. It is okay and not unexpected. Because of this, I have prepared several images showing Console.Waterworks in action. Please feel free to check it out. It should help explain what Console.Waterworks is and how it works. ### Good Input Data Flow <figure> <img src="/storage/view/craig/media/console-waterworks-valid-input-example" alt="Good input example"> <figcaption> Figure 1: If the user enters valid input into the console, Console.Waterworks passes it to your code for processing. </figcaption> </figure> ### Bad Input Data Flow <figure> <img src="/storage/view/craig/media/console-waterworks-invalid-input-example" alt="Bad input example"> <figcaption> Figure 2: If the user enters invalid input into the console, Console.Waterworks will display an error message to the user. </figcaption> </figure> ### Code Example - Validating Input <figure> <img src="/storage/view/craig/media/console-waterworks-demo-1" alt="Code Example 1"> <figcaption> Code Example 1: When good input is entered, your code is executed. When it is not, and error message is displayed. </figcaption> </figure> <figure> <img src="/storage/view/craig/media/console-waterworks-demo-2" alt="Code Example 2"> <figcaption>Code Example 2: When bad input is entered.</figcaption> </figure> --- Another feature Console.Waterworks has is the self-documenting help section. To use it, decorate your "command-methods" in the "Console Commands" class and create a command-method to display it. ### Code Example - Built-in Help <figure> <img src="/storage/view/craig/media/console-waterworks-demo-3" alt="Code Example 3"> <figcaption> Code Example 3: Type 'Help' into the console to see a list of commands and descriptions of what they do. </figcaption> </figure> ### Disclaimer Console.Waterworks is based on the [ConsoleApplicationBase](https://github.com/TypecastException/ConsoleApplicationBase "ConsoleApplicationBase GitHub Repository") repository by [TypecastException](https://github.com/TypecastException "TypecastException's GitHub Profile"). ### Pre-Requisites To use Console.Waterworks, I recommend you meet the following pre-requisites: - You have experience with [C#](https://docs.microsoft.com/en-us/dotnet/csharp/). - You can create a [.Net console program](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/hello-world-your-first-program) in [Visual Studio 2017](https://www.visualstudio.com/vs/). - You have experience with [NuGet](https://www.nuget.org/). - You have Microsoft [.Net Framework 4.7](https://docs.microsoft.com/en-us/dotnet/framework/install/guide-for-developers) or higher. ## Git.Abbether Console.Waterworks is on Git.Abbether. Feel free to check out the source code, clone it and fork it: [Git.Abbether Repository](https://git.abbether.net/craig.oates/Console.Waterworks) NuGet Mon, 11 Apr 2022 00:00:00 +0000 Console.Waterworks.Core https://www.craigoates.net/software/view/console-waterworks-core ## About Console.Wateworks.Core Console.Waterworks.Core is the .Net Core version of Console.Waterworks. They are NuGet packages which help you build MVC-like console programs. To avoid repeating what has already written, I recommend you read the Console.Watereworks overview. They both do the same thing but they target different platforms. You can jump to the Console.Waterworks page by clicking [here](/software/view/console-waterworks). ### Disclosure Console.Waterworks.Core is based on the [ConsoleApplicationBase](https://github.com/TypecastException/ConsoleApplicationBase) repository by [TypecastException](https://github.com/TypecastException). ### Pre-Requisites To use Console.Waterworks.Core, I recommend you meet the following pre-requisites: * You have experience with [C#](https://docs.microsoft.com/en-us/dotnet/csharp/). * You can create a [.Net Core console program](https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio) in [Visual Studio 2017](https://www.visualstudio.com/vs/). * You have experience with [Nuget](https://www.nuget.org/). * You have Microsoft [.Net Core 2.0](https://docs.microsoft.com/en-us/dotnet/core/) or higher. (It has not been tested on ver. 1.0.) ## Git.Abbether Console.Waterworks.Core is on Git.Abbether. Feel free to check out the source code, clone it and fork it: [Git.Abbether Repository](https://git.abbether.net/craig.oates/Console.Waterworks.Core) NuGet Mon, 11 Apr 2022 00:00:00 +0000 Desktop Clock https://www.craigoates.net/software/view/desktop-clock # About Desktop Clock This is a basic WPF program which displays the data and time so it is readable from a distance. Desktop Clock uses a NuGet package called [FluentWPF](https://github.com/sourcechord/FluentWPF). This allows the program to look like a Windows 10 UWP program. The most notable aspects being the translucent chrome and the highlighting of near-by buttons. <figure> <img src="/storage/view/craig/media/desktop-clock-screenshot-1" alt="Screenshot 1"> <figcaption>Screenshot 1: Desktop Clock is a WPF program which looks like a UWP program.</figcaption> </figure> ## Publishing Information If you would like to use, it you will need to build from the source code provided. I did not want to mess around with ClickOnce or any other packaging mechanism. With it being a WPF program, it can run on Windows 7 and 8 machines. ## Future Plans I do not intend to take this any further. It is a simple program which I have running 24/7, floating about on the screen. It sits there and does what I need it to do. Anything else seems like overkill and I do not find myself wanting it to do something extra. Therefore, if you want something adding to it, I recommend you fork it. ## Git.Abbether Desktop Clock is available on Git.Abbether. Feel free to check it out, download it or fork it. [Git.Abbether Repository](https://git.abbether.net/craig.oates/DesktopClock) Utility Mon, 11 Apr 2022 00:00:00 +0000 Smouldering Beach Ball https://www.craigoates.net/software/view/smouldering-beach-ball Smouldering Beach Ball is an open source project, hosted on Git.Abbether. Its aim is to speed up the creation of placeholder images. The intended audience is software developers around the rapid application development (RAD) space. So, if you are building application prototypes or proof-of-concepts, this might be useful. The project as a whole consists of three smaller projects. The first one is a .Net Standard (2.0) library, which is available as a NuGet package. The second one is a console program. Which provides a way to use the library's code outside of a coding environment. The third project is the Test Centre, which houses the library and console program's tests. The source code is all in F# and focuses on .Net (4.7+), for now. With the library being a .Net Standard (2.0) library, it is capable of providing .Net Core features in the future. ## Pre-Requisites * F# (4.5+) * Visual Studio 2017 (15.7+) * .Net Standard (2.0) * .Net (4.7+) ## Smouldering Beach Ball: .Net Standard 2.0 Library (A.K.A. The NuGet Package) This project holds the code which makes it all possible. If you want to add the code from this project into yours, you would add this, as a NuGet. As stated earlier, it is an F# code-base. It, also, uses System.Drawing, not System.Media. This means the brushes you use will need casting back and forth. Another thing to note is the use of colours. You will see/use things like Colors.Red instead of Color.Red. ## Smouldering Beach Ball CLI This is a console program which hooks into the above library code and provides two functions. The first one is to offer a way to interact with the library code without writing any. The second one is to test the code in a project when outside of the library project. With that said, the testing part is more about complementing the Test Centre. To help explain what I mean, here is an image showing how the console program works. <figure> <img src="/storage/view/craig/media/smouldering-beach-ball-screen-shot-1" alt="Figure 1"/> <figcaption> Figure 1: A typical example of how you would use Smouldering Beach Ball CLI. <figcaption> </figure> This project is, also, written in F# and is a .Net 4.7 project. On top of that, I built it using Console.Waterworks. So, if you want to extend this program, I recommend you look into what that is. (It's another open source project I've written.) ## Test Centre This houses all the unit and property tests for the library and CLI projects. The unit tests are written with xUnit and the property tests in FsCheck. Test Centre is a regular .Net library and written in F# -- like everything else in this project. It, also, utilises xUnit's integration in Visual Studio's Test Explorer. This makes it easy to see which tests are passing and failing. ## Relevant Links * [Smouldering Beach Ball Repository](https://git.abbether.net/craig.oates/Smouldering-Beach-Ball) * [NuGet](https://www.nuget.org/packages/SmoulderingBeachBall/) NuGet Mon, 11 Apr 2022 00:00:00 +0000 Wet Pancake https://www.craigoates.net/software/view/wet-pancake Wet Pancake is an open source project, hosted on Git.Abbether. My personal aim for this project was for me to learn F#. With that said, the project's main goal is to generate text using the/a Markov Chain. This is, also, the initial test bed for using Console.waterworks with an F# project. The project has a mixture of C# and F# in it and is a full.Net codebase. So, if you want to run it on Linux or Mac OS, you are going to need Mono. The project, as a whole, consists of three smaller projects. The first is a .Net 4.7 library, which is available as a NuGet package. The second one is a console program. This provides users with a way to use the library code without writing any themselves. The third project is the Test Centre. In here, you will find the tests for the library and console projects. ## Pre-Requisites * Visual Studio 2017 (15.8+) * F# (4.1+) * C# (6.0+) * .Net (4.7+) * FsCheck * xUnit * Console.Waterworks ## Wet Pancake: .Net Library (A.K.A. The NuGet Package) This is a .Net 4.7 library written in F#. If you would like to add code from this repository into yours, you would add this project as a NuGet package. It is worth noting this project (NuGet) comes with a collection of plain-text file (.txt). Wet Pancake uses them as templates to generate text. If you would prefer to use your own, Wet Pancake has the ability to let you do that. ## Wet Pancake CLI This is a console program which hooks into the above library code and it is a C# project, unlike the library. The reason why is because I wanted to see how well Console.Waterworks works with consuming an F# codebase. Seeing as this is/was the first "test", though, I decided to write the console program in C# and hook it up to an F# library... Keep it simple 'n all that jazz. If you are unaware of what Console.Waterworks is, it is another open-source project I have created. In a nutshell, it allows you to write MVC-like console programs -- please note the "like" part. It is, also, available as a NuGet package in the full and core versions of .Net. <figure> <img src="/storage/view/craig/media/wet-pancake-screenshot-1" alt="Figure 1"/> <figcaption> Figure 1: A typical example of how you would use Wet Pancake CLI. </figcaption> </figure> ## Test Centre This houses all the unit and property tests for the library and CLI projects. I have wrote the unit tests with xUnit and the property tests with FsCheck. The Test Centre is a regular .Net (4.7) library and written in F#. It, also, utilises xUnit's integration with Visual Studio's Test Explorer. So, you can see which tests are passing and failing with ease, or at least easier than without Test Explorer. ## Disclaimer This project started out as a test project. It was not my intention for it to grow to what it is now (granted, it is still not massive.) At first, I wanted to see how well the Console.Waterworks NuGet package worked with F# libraries. This meant I needed to learn F#. To do this, I used FsMarkov as a reference/goal to work towards. Because of these factors, the codebase has taken the shape it has. It did not start off with the best development practices. And, the fact, it is now a NuGet package, is a goal which came somewhat after the initial playing period. So, if you find yourself wanting to scream at me for glaring and obvious mistakes, please be kind. Thanks. ## Relevant Links * [Wet Pancake Repository](https://git.abbether.net/craig.oates/Wet-Pancake) * [Wet Pancake NuGet](https://www.nuget.org/packages/WetPancake/) * [Console.Waterworks Repository](https://git.abbether.net/craig.oates/Console.Waterworks) * [FsMarkov Repository](https://blog.taylorwood.io/2015/07/04/markov-text.html) NuGet Mon, 11 Apr 2022 00:00:00 +0000 Death Socket https://www.craigoates.net/software/view/death-socket <figure> <img src="/storage/view/craig/media/death-socket-figure-1" alt="Figure 1"/> <figcaption> Figure 1: You feed an image into Death Socket and it produces a new version of the image with an overlayed grid. </figcaption> </figure> Death Socket is an open source project hosted on Git.Abbether. Its main feature is a NuGet package which helps you add a grid to an image. The main audience for this project is artists – painters illustrators Etc. It is an F# codebase and focuses on .Net 4.7. With that said, Death Socket is a .Net Standard (2.0) library. So, there is no reason why it cannot target/focus on .Net Core in the future. The whole repository consists of three smaller projects. They are a .Net Standard library, a console program and a Test Centre. ## Pre-Requisites - F# (4.5+) - Visual Studio 2017 (15.8+) - .Net Standard 2.0 - .Net 4.7+ - Console.Waterworks <figure> <img src="/storage/view/craig/media/death-socket-figure-2" alt="Figure 2"/> <figcaption> Figure 2: An image before it was passed into Death Socket and after it (a typical example). </figcaption> </figure> ## Death Socket: .Net Standard 2.0 Library (A.K.A. The NuGet Package) This project holds the code which makes it all possible. This is the code you would add to your project (as a NuGet) if you were building a GUI program for example. Here is a quick breakdown of this project: - Written in F# (4.5+). - Uses System.Drawing and not System.Media (I.E. Colors.Red not Color.Red). - Focuses on .Net 4.7+ ## Death Socket CLI This is a console program which hooks into the library code. It provides two functions. The first is to provide a way for you to consume the above library code without writing any. The second is to test/use the code outside of the (.Net Standard) library project context. I should add, the second point is more about complementing the Test Centre than anything else. Here is a quick breakdown of the project and GIF demonstrating how it works. - Written in F# (4.5+). - Uses Console.Waterworks. - Is a .Net 4.7 console program. <figure> <img src="/storage/view/craig/media/death-socket-figure-3" alt="Figure 3"/> <figcaption> Figure 3: An example of how to use Death Socket CLI. </figcaption> </figure> ## Test Centre This project holds all the unit and property tests. It runs tests for the .Net Standard library and the CLI projects. On top of that, you can utilise the Test Explorer in Visual Studio to run the tests. - Written in F# (4.5+). - Is a regular .Net (4.7) library. - Uses FsCheck for property tests. - Uses xUnit for unit tests. - Uses Visual Studio's (15.8+) Test Explorer via xUnit's integration. ## Relevant Links - [Git.Abbether Repository](https://git.abbether.net/craig.oates/Death-Socket) - [NuGet](https://www.nuget.org/packages/DeathSocket/) �� NuGet Mon, 11 Apr 2022 00:00:00 +0000 Paint Grid https://www.craigoates.net/software/view/paint-grid Paint Grid is a program which draws grids on images. Its main audience is artists and people wanting to improve their drawing skills. That last part is very useful when you consider a class full of school children. If you have ever drawn a grid on an image, you will know how drawn out and tedious it can be. On top of that, the tedium only increases when the image size and the number of rows and columns increase. For example, it is not unheard of for a 100x100 grid to take ten/twenty minutes to complete, and this is on a good day. You can quite easily spend over an hour completing this "prep-work" if the image is big enough. This is where Paint Grid comes in... I would find it surprising if you took more than ten seconds to complete the above task, when using Paint Grid. This, also, includes you digging around in your computer's folders to find the image. On top of the speed gains, Paint Grid can change the colour of the grid with the click of a button. Try doing that when you are three-quarters of the way through drawing a grid by hand. You can, also, change the thickness of the grids lines by moving a slider. <figure> <img src="/storage/view/craig/media/paint-grid-screenshot-1" alt="Screenshot 1"/> <figcaption> Screenshot: 1 The image is previewed on the left and you adjust the grid with the controls on the right. <figcaption> </figure> For those interested in coding, I built Paint Grid on top of open source software. I created a project called Death Socket and you can find it on [Git.Abbether](https://git.abbether.net/craig.oates/Death-Socket). Paint Grid uses Death Socket's NuGet package for its main functionality. It (Death Socket), also, comes with a console program as part of the repository. With it, you have access to most of Paint Grid's features. So, if you are someone who prefers to work at the command-line, feel free to head over to Git.Abbether and check it out. As an aside, I have provided a separate (compiled) console program in the "Releases" section. This means you do not need to clone the repository or compile the source code yourself. Now, back to Paint Grid... At the moment, Paint Grid only runs on Windows 10. I plan to extend it to Android, IOS and MacOS in the future but it all depends on how quick/easy it is to update Death Socket. So, for now, all I can say is keep and eye out for future announcements. [![Microsoft Store link](/storage/view/craig/media/ms-store-badge)](https://www.microsoft.com/store/apps/9PG4L1B5SJCC) Design Tools Mon, 11 Apr 2022 00:00:00 +0000 In Plain Sight Mobile https://www.craigoates.net/software/view/in-plain-sight-mobile <figure> <img src="/storage/view/craig/media/ips-mobile-screenshot-1" alt="Screenshot 1: Typical look of program."> <figcaption>Screenshot: How the program typically looks.</figcaption> </figure> In Plain Sight Mobile encrypts and decrypts text and emojis and that's pretty much it. With that said, it does allow you to do certain things. The most notable one is it enables you to visualise what you're encrypting/decrypting. Unlike app's which include it as a feature amongst many and don't go into detail about it. Although, that's still better than those which don't offer any encryption at all. Which is another thing In Plain Sight Mobile enables you to do. You can now post encrypted messages in public places. And, if the people reading it know the passphrase, they can decrypt it -- allowing you to hide messages *in plain sight*. For those interested in the technical side of things, here are a couple of bullet points: - The encryption implementation uses the Advanced Encryption Standard (A.E.S.)[1]. - I did this using the Bouncy Castle Crypto Library[2]. To use it, you will need to follow these three steps: <figure> <img src="/storage/view/craig/media/ips-mobile-screenshot-2" alt="Screenshot 2: A quick overview of how to run the application."> <figcaption>Screenshot 2: A quick overview of how to run the application.</figcaption> </figure> 1. Enter a passphrase (1); It must be no shorter than twelve characters. 2. Enter what you want encrypting/decrypting into the text box (2). 3. Press either the Encrypt or Decrypt button (3). Bonus Step... 4. Press the Copy button (4) to message so you can paste it into what you want (social media, e-mail, Notepad Etc.). **When you are decrypting a message, the passphrase must match the one used to encrypt it. This is what allows you to post messages in public.** <figure> <img src="/storage/view/craig/media/ips-mobile-screenshot-3" alt="Screenshot 3: In Plain Sight matches the system colour."> <figcaption>Screenshot 3: In Plain Sight matches the system colour.</figcaption> </figure> <figure> <img src="/storage/view/craig/media/ips-mobile-screenshot-4" alt="Screenshot 4: Adaptive GUI."> <figcaption> Screenshot 4: In Plain Sight Mobile has no problem sharing the screen with other programs. </figcaption> </figure> [![Microsoft Store link](/storage/view/craig/media/ms-store-badge)](https://www.microsoft.com/store/apps/9NJFFBF2THPT) ## Footnotes 1. [Wikipedia article on A.E.S.](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) 2. [Bouncy Castle's Website (C# A.P.I.)](https://www.bouncycastle.org/csharp/) Utility Mon, 11 Apr 2022 00:00:00 +0000 In Plain Sight https://www.craigoates.net/software/view/in-plain-sight <p class="ui-message-warning">Note: This project is no longer available on the Microsoft Store.</p> <figure> <img src="/storage/view/craig/media/ips-desktop-screenshot-1" alt="Screenshot 1: A quick overview of how to run the application."> <figcaption>Screenshot 1: How the program typically looks.</figcaption> </figure> In Plain Sight encrypts and decrypts text and emojis and that's pretty much it. With that said, it does allow you to do certain things. The most notable one is it enables you to visualise what you're encrypting/decrypting. Unlike programs which include it as a feature, amongst many, and don't go into detail about it. Although, that's still better than those which don't offer any encryption at all. Which is another thing In Plain Sight enables you to do. You can now post encrypted messages in public places. And, if the people reading it know the passphrase, they can decrypt it -- allowing you to hide messages *in plain sight*. **In Plain Sight is compatible with In Plain Sight Mobile [1].** A message encrypted in one can be decrypted in the other -- and vice-versa. <figure> <img src="/storage/view/craig/media/ips-desktop-screenshot-2" alt="Screenshot 2: You can use the desktop and mobile versions interchangeably."> <figcaption>Screenshot 2: You can use the desktop and mobile versions interchangeably.</figcaption> </figure> For those interested in the technical side of things, here are a couple of bullet points: - The encryption implementation uses the Advanced Encryption Standard (A.E.S.)[2]. - I did this using the Bouncy Castle Crypto Library[3]. To use it, you will need to follow these three steps: <figure> <img src="/storage/view/craig/media/ips-desktop-screenshot-3" alt="Screenshot 3: Quick guide."> <figcaption>Screenshot 3: A quick guide on how to use In Plain Sight.</figcaption> </figure> 1. Enter a passphrase (1); It must be no shorter than twelve characters. 2. Enter what you want encrypting/decrypting into the text box (2). 3. Press either the Encrypt or Decrypt button (3). Bonus Step... 4. Press the Copy button (4) to message so you can paste it into what you want (social media, e-mail, Notepad Etc.). As an aside, when you are decrypting a message, the passphrase must match the one used to encrypt it. This is what allows you to post messages in public. <del>Microsoft Store link</del> ## Footnotes 1. You can get In Plain Sight Mobile by clicking [here](https://www.microsoft.com/store/apps/9NJFFBF2THPT). 2. [Wikipedia article on A.E.S.](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) 3. [Bouncy Castle's Website (C# A.P.I.)](https://www.bouncycastle.org/csharp/) Utility Mon, 11 Apr 2022 00:00:00 +0000 Shortcut Learner https://www.craigoates.net/software/view/shortcut-learner Shortcut Learner is a console program for storing and viewing your personal collection of shortcuts. I wrote it in Python3 and it uses 'Rich' to present the collection in a nicely formatted manner (in the terminal). <figure> <img alt="Screenshot 1" src="/storage/view/craig/media/shortcut-learner-1"/> <figcaption> Screenshot 1: How Shortcut Learner usually looks in my terminal. </figcaption> </figure> ## Pre-Requisites To use Shortcut Learner, I recommend you meet the following: - You have experience with Python3. - You can create a virtual environment in Python. - You know how to install packages with Pip -- via 'requirements.txt'. - Comfortable with Linux -- This is not tested on MacOS or Windows. - Comfortable using a terminal and Bash. - **(Optional)** Comfortable creating a Python binary using PyInstaller. - **(Optional)** Familiar with Rich (Python library). Shortcut Learner stores you shortcuts as a markdown (.md) file. So, you can alter, copy and backup the data in anyway you see fit. Shortcut Learner, also, provides an option to add a new shortcut to your collection from within the terminal. This mean you never need to go searching for the file, load it into an editor add the new shortcut, close the file and get back to what you were doing. This is even more useful if you are already in the terminal. The aim of this project is to help you learn shortcuts which are **relevant to you**. I find I do not need to learn every shortcut in a program but it is always difficult to separate the ones you want from the ones you do not. They are always in a giant cheat-sheet/poster or part of a big list within the program itself. Because of this, I almost always never bother learning the shortcuts unless it becomes annoying enough not to. With Shortcut Learner, I can quickly add a one-line note to my shortcuts collection and get back to what I was doing. And, because I have used 'Rich' (to render the markdown in the terminal), you can use markdown formatting to make it easier to read your collection. <figure> <img alt="Screenshot 2" src="/storage/view/craig/media/shortcut-learner-2"/> <figcaption> Screenshot 2: A layout example. </figcaption> </figure> <figure> <img alt="Screenshot 3" src="/storage/view/craig/media/shortcut-learner-3"/> <figcaption> Screenshot 3: Another layout example (yes, I know I every screenshot has used lists. Feel free to not use lists in your set-up). </figcaption> </figure> A perk (amongst many) with storing your shortcuts collection in a markdown file is you can adopt a 'quick-in and prune/curate later' approach. You do not always need information to look nice, you just need it to hand. This means you can have the markdown file open in your editor and add to it throughout the day (looking pretty) or add a quick note via the terminal two minutes before the end of your shift and tidy it up when you get in the next day. Remember to use the markdown features which work for you. You can remove shortcuts from the list once you have committed it to memory... ## Relevant Links - [Shortcut Learner Git Repository](https://git.abbether.net/craig.oates/shortcut-learner) - [Rich project's GibHub repository](https://github.com/willmcgugan/rich) - [PyInstaller](https://www.pyinstaller.org/) (For creating a binary with the project's source-code) Utility Mon, 11 Apr 2022 00:00:00 +0000 CO-API https://www.craigoates.net/software/view/co-api <p class="ui-message-warning">Note: This project is no longer active.</p> This is a tech-heavy project aimed at software developers. If 'JSON' and 'API' mean nothing to you, you are probably best skipping this page. Otherwise, CO-API is a RestAPI which provides serves this site's (craigoates.net) meta-data. I made the API out of curiosity. I wanted to see things like what day of the week I completed most of my work on and what has been my most productive year so far. I began doing this in a manual fashion (I.E. accessing the database and writing SQL statements) and did not save the results. I did not save them because I considered each look-up as a one-off type of thing. After the third time of doing this, I decided I should make this a bit easier for myself -- or repeatable at least. So, I began saving the results of the look-ups but then I thought about it and -- much faffing later -- CO-API was created. By doing this, I can now attach this data to various endpoints (proof-of-concept app's, 'fake data', charting libraries Etc.) and so can you. I created CO-API with Swagger and the output is in JSON. The site, also, has a preview feature (courtesy of Swagger) so you can see what the data looks like without writing a line of code. It, also, provides details of various schemas so you can map the data to the appropriate datatype your end (again, courtesy of Swagger). <figure> <img alt="CO-API Screenshot 1" src="/storage/view/craig/media/co-api-screenshot-1"> <figcaption>Screenshot 1: Use the site to see the list of calls you can make.</figcaption> </figure> <figure> <img alt="CO-API Screenshot 2" src="/storage/view/craig/media/co-api-screenshot-2"> <figcaption>Screenshot 2: Use the website to demonstrate what the data looks like when you call it.</figcaption> </figure> An example of this API being used is in another project of mine called CO-Data. It produces graphs to show the meta-data for work I have published to this (craigoates.net) site. That CO-Data is an open-source project so you can modify the code to your liking -- or use it as a reference for working with the data provided by CO-API. ## Relevant Links - <del>CO-API Website</del> - <del>CO-Data Website</del> - [CO-Data Project Page](/software/view/co-data) - [CO-Data Repository](https://git.abbether.net/craig.oates/co-data) - [Swagger Website](https://swagger.io/) RestAPI Mon, 11 Apr 2022 00:00:00 +0000 CO-Data https://www.craigoates.net/software/view/co-data [CO-Data](https://git.abbether.net/craig.oates/co-data) started out as a website I developed to graph the data from this site. I wrote it in Python and use the [Bokeh](https://bokeh.org/) library to produce the charts. I never got it past the initial proof-of-concept phase, and it only displayed data for the Art section of this site. Furthermore, I lost interest in it because the charts became finicky once browsers started to include heightened privacy and security defaults (no third-party cookies, HTTPS as default Etc.). I could have integrated the Bokeh stuff into the site to alleviate some of the problems but I never got around to that. It was, also, slow which forced me to develop [Skivvy](https://git.abbether.net/craig.file:///mnt/data-shed/abbether/research-and-development/projects/return-to-ritherdon/ritherdon-archive-info.mdoates/skivvy) (no longer active). I should add here I re-wrote this (craigoates.net) website and used a different database and schema after starting CO-Data and Skivvy. This meant I needed to update the code for both of those projects and I never found the motivation to do so. Because of this, they kinda lingered and their digital-bits were left to rot. With all that out of the way, I can now say I've repurposed CO-Data as a [literate-programming](https://en.wikipedia.org/wiki/Literate_programming) project. It still focuses exploring this site's data, it's just without the website part. The project now uses [org-mode](https://orgmode.org/) and [Common Lisp](https://lispcookbook.github.io/cl-cookbook/). Both are heavily tied to [Emacs](https://www.gnu.org/software/emacs/) but you can use other programs -- like [Visual Studio Code](https://code.visualstudio.com/) with its [Alive](https://github.com/nobody-famous/alive) plug-in -- if you prefer something else. <figure> <img src="https://www.craigoates.net/storage/view/craig/media/co-data-literate-programming-screenshot" alt="Example of literate programming in Emacs."> <figcaption> Fig. 1: An example of what a literate program looks like in Emacs. </figcaption> </figure> At the time of writing (December 2023), I'm using this project as a way to compare Common Lisp and Python for *data science* (using the term very loosely here) whilst using org-mode and Emacs. If I'm able to get the data out with Common Lisp, you will find this project will continue using Common Lisp. If you've read this and the [code](https://git.abbether.net/craig.oates/co-data) is in Python, that means I couldn't get Common Lisp to do what I needed, and I've not updated this page to reflect that. Over time, I would like to do annual reviews and see how the trends in my output changes, over said time. It's not quite the *live update* of the project's previous guise. Having said that, it does make interacting with the data more purposeful (for me at least). One last thing, I've included a *clean* version of this site's database in the [CO-Data Git repository](https://git.abbether.net/craig.oates/co-data). I exported the data as a CSV file so feel free to explore the data yourself. With the data sitting in a CSV file, you can open it in [Microsoft Excel](https://www.microsoft.com/en-gb/microsoft-365/excel) or [LibreOffice](https://www.libreoffice.org/) if that's more your thing. Data-Visualisation Mon, 11 Apr 2022 00:00:00 +0000 Return to Ritherdon: Light Meter https://www.craigoates.net/software/view/return-to-ritherdon-light-meter <p class="ui-message-warning">Note: This project is no longer active.</p> ## Return to Ritherdon Overview Before I describe what 'Light Meter' and 'Return to Ritherdon' are, I though it would be best to give you some extra context surrounding it. 'Return to Ritherdon' was an arts-based two year residency, funded by Arts Council England. Nicola Ellis devised the residency alongside Ritherdon & Company Ltd. and Castlefied Gallery. Ritherdon is a manufacturer of metal enclosures and based in Darwen, Lancashire, U.K., Castlefied is an art gallery in Manchester, U.K. and Ellis is an artist. She is, also, based in Manchester. Use the links below for more information on those listed above: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) **Note:** *The residency has finished and the information of this page is more for archive purposes than anything else.* ## Light Meter Light Meter is one of three smaller projects which form the 'Personal Flash in Real-Time' series of artworks. The other two projects are 'Midpoint' and 'Relay'. The 'Personal Flash in Real-Time' artworks are one of numerous artworks displayed in the 'No Gaps in the Line' (2021) exhibition, hosted in Castlefied Gallery. For more information on the exhibition, artworks (from the galleries perspective) and other projects use the following links: - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature, shows images of a welding booth and the lights in the gallery) - [Light Meter](https://git.abbether.net/return-to-ritherdon/light-meter) (Git repository) - [Midpoint](https://git.abbether.net/return-to-ritherdon/midpoint) (Git repository) - [Relay](https://git.abbether.net/return-to-ritherdon/relay) (Git repository) Light Meter is more a device than a software program -- which deviates from my usual stuff in this section. The aim of the Light Meters (devices) is to take light readings from the welding booths in Ritherdon and send them to Midpoint (running on a server in 'cloud'). These readings are then used by the Relays (devices) in the gallery. I paired each Light Meter (device) to a specific Relay (device), so 'Relay One' only dealt with the light reading taken by 'Light Meter One'. <figure> <img alt="Return to Ritherdon Overview" src="https://www.craigoates.net/storage/view/craig/media/return-to-ritherdon-overview"> <figcaption>'Personal Flash in Real-Time' is one of numerous artworks produced during the 'Return to Ritherdon' residency.</figcaption> </figure> <figure> <img alt="Personal Flash in Real-Time Overview" src="https://www.craigoates.net/storage/view/craig/media/personal-flash-arch"> <figcaption>Each Light Meter was paired to a Relay via Midpoint.</figcaption> </figure> Unfortunately, the repository this page links to includes only the software and the 3D models (for printing). You will need to buy a Raspberry Pi and other electronic hardware yourself if you want/need to recreate this project. To help with this, I've created a Git repository which contains a more comprehensive rundown of the project's spec's and requirements at the links below: - [Return to Ritherdon Documentation (rtr-docs)](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home Page) - [Light Meter Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/light-meter/rtr-light-meter.md) I wrote the software in Python and tested it on Raspberry Pi OS (formerly Raspbian). The project, also, assumes access to the I/O library for the Pi's GPIO pins. Because of this, I don't know if the code will run on anything else. ## Links Collection Below is a list of all the links dotted throughout this page: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature) - [Light Meter](https://git.abbether.net/return-to-ritherdon/light-meter) (Git repository) - [Midpoint](https://git.abbether.net/return-to-ritherdon/midpoint) (Git repository) - [Relay](https://git.abbether.net/return-to-ritherdon/relay) (Git repository) - [Return to Ritherdon Documentation (rtr-docs)](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home Page) - [Light Meter Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/light-meter/rtr-light-meter.md) IOT Mon, 11 Jul 2022 19:28:46 +0000 Return to Ritherdon: Midpoint https://www.craigoates.net/software/view/return-to-ritherdon-midpoint <p class="ui-message-warning">Note: This project is no longer active.</p> ## Return to Ritherdon Overview Before I describe what 'Midpoint' and 'Return to Ritherdon' are, I though it would be best to give you some extra context surrounding it. 'Return to Ritherdon' was an arts-based two year residency, funded by Arts Council England. Nicola Ellis devised the residency alongside Ritherdon & Company Ltd. and Castlefied Gallery. Ritherdon is a manufacturer of metal enclosures and based in Darwen, Lancashire, U.K., Castlefied is an art gallery in Manchester, U.K and Ellis is an artist, also, based in Manchester. Use the links below for more information on those listed above: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) **Note:** *The residency has finished and the information of this page is more for archive purposes than anything else.* ## Midpoint Midpoint is one of three smaller projects which form the 'Personal Flash in Real-Time' series of artworks. The other two projects are called 'Light Meter' and 'Relay'. The 'Personal Flash in Real-Time' artworks are one of numerous artworks displayed in the 'No Gaps in the Line' (2021) exhibition, hosted in Castlefied Gallery. For more information on the exhibition, artworks (from the galleries perspective) and other projects use the following links: - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature, shows images of a welding booth and the lights in the gallery) - [Light Meter](https://git.abbether.net/return-to-ritherdon/light-meter) (Git repository) - [Midpoint](https://git.abbether.net/return-to-ritherdon/midpoint) (Git repository) - [Relay](https://git.abbether.net/return-to-ritherdon/relay) (Git repository) Midpoint is a REST API built with Flask and written in Python. It's purpose was to act as the *midpoint* between the Light Meters (in Ritherdon) and the Relays (in Castlefied). It would receive light readings from the Light Meters in Ritherdon's welding booths and serve those readings to the Relays in Castlefied. <figure> <img alt="Return to Ritherdon Overview" src="https://www.craigoates.net/storage/view/craig/media/return-to-ritherdon-overview"> <figcaption>'Personal Flash in Real-Time' is one of numerous artworks produced during the 'Return to Ritherdon' residency.</figcaption> </figure> <figure> <img alt="Personal Flash in Real-Time Overview" src="https://www.craigoates.net/storage/view/craig/media/personal-flash-arch"> <figcaption>Each Light Meter was paired to a Relay via Midpoint.</figcaption> </figure> This project is less hands-on than the other two projects (Light Meter and Relay). You don't need to buy additional hardware like a Raspberry Pi and other electrical components. If you set-up a EC2 instance on AWS, you're half-way there with this one *-- he says like everyone knows how to do that*. For more information on this project's spec's and requirements, please use the following links: - [Return to Ritherdon Documentation (rtr-docs)](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home Page) - [Midpoint Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/midpoint/rtr-midpoint.md) Because of the project's time-frame and budget, I only had time to test this on Ubuntu 18.04 and Nginx. I don't know likely it is for this project's software to run on other environments. ## Links Collection Below is a list of all the links dotted throughout this page: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature, shows images of a welding booth and the lights in the gallery) - [Light Meter](https://git.abbether.net/return-to-ritherdon/light-meter) (Git repository) - [Midpoint](https://git.abbether.net/return-to-ritherdon/midpoint) (Git repository) - [Relay](https://git.abbether.net/return-to-ritherdon/relay) (Git repository) - [Return to Ritherdon Documentation (rtr-docs)](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home Page) - [Midpoint Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/midpoint/rtr-midpoint.md) Web Tue, 12 Jul 2022 03:15:22 +0000 Return to Ritherdon: Relay https://www.craigoates.net/software/view/return-to-ritherdon-relay <p class="ui-message-warning">Note: This project is no longer active.</p> ## Return to Ritherdon Overview Before I describe what 'Relay' and 'Return to Ritherdon' are, I though it would be best to give you some extra context surrounding it. 'Return to Ritherdon' was an arts-based two year residency, funded by Arts Council England. Nicola Ellis devised the residency alongside Ritherdon & Company Ltd. and Castlefied Gallery. Ritherdon is a manufacturer of metal enclosures and based in Darwen, Lancashire, U.K., Castlefied is an art gallery in Manchester, U.K. and Ellis is an artist. She is, also, based in Manchester. Use the links below for more information on those listed above: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) **Note:** *The residency has finished and the information of this page is more for archive purposes than anything else.* ## Relay Relay is one of three smaller projects which form the 'Personal Flash in Real-Time' series of artworks. The other two projects are 'Light Meter' and 'Midpoint'. The 'Personal Flash in Real-Time' artworks are one of numerous artworks displayed in the 'No Gaps in the Line' (2021) exhibition, hosted in Castlefield Gallery. For more information on the exhibition and artworks (from the galleries perspective) and other two projects, use the following links below: - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature, shows images of a welding booth and the lights in the gallery) - [Light Meter](https://git.abbether.net/return-to-ritherdon/light-meter) (Git repository) - [Midpoint](https://git.abbether.net/return-to-ritherdon/midpoint) (Git repository) - [Relay](https://git.abbether.net/return-to-ritherdon/relay) (Git repository) Relay is more a device than a software program -- which deviates from my usual stuff in this section. The aim of the Relays (devices) was to control a selection of lights, in the gallery, based on the readings from taken with the Light Meter devices, in the factory. If one of the staff members in Ritherdon (factory) was welding, the corresponding Relay would turn its series of lights on. If no-one was welding, the lights would either remain off. <figure> <img alt="Return to Ritherdon Overview" src="https://www.craigoates.net/storage/view/craig/media/return-to-ritherdon-overview"> <figcaption>'Personal Flash in Real-Time' is one of numerous artworks produced during the 'Return to Ritherdon' residency.</figcaption> </figure> <figure> <img alt="Personal Flash in Real-Time Overview" src="https://www.craigoates.net/storage/view/craig/media/personal-flash-arch"> <figcaption>Each Light Meter was paired to a Relay via Midpoint.</figcaption> </figure> I wrote the software for the Relay project in Python. One of the requirements for the project was the inclusion of a Raspberry Pi. So, the project has only ran on Raspberry Pi OS (formerly Raspbian) and assumes access to the Raspberry Pi's I/O library, for its GPIO pins. On top of that, this project -- like Light Meter -- required a bit of soldering and 3D printing. This made this project a bit hands-on than my usual stuff. Unfortunately, the repository this page links to includes only the software and the 3D models (for printing). You will need to buy a Raspberry Pi and other electronic hardware yourself if you want/need to recreate this project. To help with this, I've created a Git repository which contains a more comprehensive rundown of the project's spec's and requirements at the links below: - [Return to Ritherdon Documentation (rtr-docs)](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home Page) - [Relay Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/relay/rtr-relay.md) <figure> <img alt="Installed lights in gallery, controlled by the Relay devices" src="https://www.craigoates.net/storage/view/craig/media/return-to-ritherdon-installed-relay-lights"> <figcaption>The lights installed in the gallery, controlled by the Relay devices.</figcaption> </figure> ## Links Collection Below is a list of all the links dotted throughout this page: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature, shows images of a welding booth and the lights in the gallery) - [Light Meter](https://git.abbether.net/return-to-ritherdon/light-meter) (Git repository) - [Midpoint](https://git.abbether.net/return-to-ritherdon/midpoint) (Git repository) - [Relay](https://git.abbether.net/return-to-ritherdon/relay) (Git repository) - [Return to Ritherdon Documentation (rtr-docs)](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home Page) - [Relay Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/relay/rtr-relay.md) IOT Tue, 12 Jul 2022 03:32:31 +0000 Return to Ritherdon: Light Wave https://www.craigoates.net/software/view/return-to-ritherdon-light-wave <p class="ui-message-warning">Note: This project is no longer active.</p> ## Return to Ritherdon Overview Before I describe what 'Eyes and Ears' and 'Return to Ritherdon' are, I though it would be best to give you some extra context surrounding it. 'Return to Ritherdon' was an arts-based two year residency, funded by Arts Council England. Nicola Ellis devised the residency alongside Ritherdon & Company Ltd. and Castlefied Gallery. Ritherdon is a manufacturer of metal enclosures and based in Darwen, Lancashire, U.K., Castlefied is an art gallery in Manchester, U.K. and Ellis is an artist. She is, also, based in Manchester. Use the links below for more information on those listed above: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) **Note:** *The residency has finished and the information of this page is more for archive purposes than anything else.* ## Light Wave and 'Personal Flash in Real-Time' Artworks Light Wave was a support project to help test and monitor the 'Light Meter' devices in Ritherdon (factory). It (Light Wave) provided about a minutes worth of streamed light-reading data from the factory and displayed the readings as animated line graphs. 'Light Meter' is one-of three projects which come together to form the 'Personal Flash in Real-Time' artworks -- which were part of the 'No Gaps in the Line' exhibition, hosted at Castlefied Gallery. If you would like to know more about the exhibition and artworks, please use the following links: - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature, shows images of a welding booth and the lights in the gallery) <figure> <img alt="Light Wave screenshot 1" src="https://www.craigoates.net/storage/view/craig/media/light-wave-screenshot-1"> <figcaption>Screenshot of Light Wave's full graphical user interface.</figcaption> </figure> <figure> <img alt="Light Wave screenshot 2" src="https://www.craigoates.net/storage/view/craig/media/return-to-ritherdon-light-wave-screenshot-2"> <figcaption>Both welding booths readings can differ by quite a bit.</figcaption> </figure> I wrote Light Wave in Python and it relies heavily on the Matplotlib library. Unfortunately, this project wasn't initially part of the project so there was not much in terms of budget or time to develop it. I built it on a whim -- to begin with -- to help me test and monitor the 'Personal Flash in Real-Time' artwork *system*. So, it's very basic and a bit awkward to install on new systems. I managed to get it working on Windows but it was awkward. Obviously, it 'works on my machine' (Debian, Linux). For the project's Git repository and documentation, please use the links below: - [Light Wave Git Repository](https://git.abbether.net/return-to-ritherdon/light-wave) - [Return to Ritherdon Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home page) - [Light Wave Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/light-wave/light-wave.md) - [Matplotlib Install Notes](https://matplotlib.org/stable/users/installing/index.html) ## Links Collection Below is a list of all the links dotted throughout this page: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature, shows images of a welding booth and the lights in the gallery) - [Light Wave Git Repository](https://git.abbether.net/return-to-ritherdon/light-wave) - [Return to Ritherdon Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home page) - [Light Wave Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/light-wave/light-wave.md) - [Matplotlib Install Notes](https://matplotlib.org/stable/users/installing/index.html) Monitoring Tue, 12 Jul 2022 03:56:24 +0000 Return to Ritherdon: Eyes and Ears https://www.craigoates.net/software/view/return-to-ritherdon-eyes-and-ears <p class="ui-message-warning">Note: This project is no longer active.</p> ## Return to Ritherdon Overview Before I describe what 'Eyes and Ears' and 'Return to Ritherdon' are, I though it would be best to give you some extra context surrounding it. 'Return to Ritherdon' was an arts-based two year residency, funded by Arts Council England. Nicola Ellis devised the residency alongside Ritherdon & Company Ltd. and Castlefied Gallery. Ritherdon is a manufacturer of metal enclosures and based in Darwen, Lancashire, U.K., Castlefied is an art gallery in Manchester, U.K. and Ellis is an artist. She is, also, based in Manchester. Use the links below for more information on those listed above: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) **Note:** *The residency has finished and the information of this page is more for archive purposes than anything else.* ## Eyes and Ears and 'Personal Flash in Real-Time' Artworks Eyes and Ears is a dashboard program for monitoring the state of the 'Personal Flash in Real-Time' series of artworks. The artworks were part of the 'No Gaps in the Line' exhibition (2021), hosted in Castlefied Gallery. Each piece in the series was responsible for detecting when a member of staff in Ritherdon (factory) was welding and relaying that information to Castlefied (gallery) by turning a set of lights on and off. If someone was welding, the lights would turn on and vice-versa if no-one was welding. <figure> <img alt="Eyes and Ears screenshot" src="http://www.craigoates.net/storage/view/craig/media/eyes-and-ears-screenshot-1"> <figcaption>How the dashboard looked when all the devices were off.</figcaption> </figure> If you would like to know more about how I the 'Personal Flash in Real-Time' artworks were made, or more about the exhibition itself, please the following links: - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature, shows images of a welding booth and the lights in the gallery) - [Light Meter](https://git.abbether.net/return-to-ritherdon/light-meter) (Git repository) - [Midpoint](https://git.abbether.net/return-to-ritherdon/midpoint) (Git repository) - [Relay](https://git.abbether.net/return-to-ritherdon/relay) (Git repository) I wrote Eyes and Ears in C# and is a UWP application so it only works on Window 10 or above. It's intended use was for it run on a Windows 10 tablet off to the side -- allowing people to glance at it throughout the day to make sure it was the whole system was working. I, also, gave it some text-to-speech tricks so people in earshot could hear when a device powered up or down for the day -- or an error occurred. If you would like to see the code and documentation for this project, please use the links below, - [Eyes and Ears Git Repository](https://git.abbether.net/return-to-ritherdon/eyes-and-ears) - [Return to Ritherdon Documentation (rtr-docs)](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home Page) - [Eyes and Ears Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/eyes-and-ears/rtr-eyes-and-ears.md) ## Links Collection Below is a list of all the links dotted throughout this page: - [Nicola Ellis](http://www.nicolaellis.com) - [Ritherdon & Company Ltd.](https://ritherdon.co.uk) - [Castlefied Gallery](https://www.castlefieldgallery.co.uk/) - [Arts Council England](https://www.artscouncil.org.uk/) - [No Gaps in the Line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Gallery's exhibition page) - ['Personal Flash in Real-Time Exhibition'](https://www.castlefieldgallery.co.uk/wp-content/uploads/2021/01/Nicola-Ellis-and-Ritherdon_No-gaps-in-the-line_Extended-Handout_Personal-flash-in-real-time.pdf) (Galleries Exhibition literature, shows images of a welding booth and the lights in the gallery) - [Light Meter](https://git.abbether.net/return-to-ritherdon/light-meter) (Git repository) - [Midpoint](https://git.abbether.net/return-to-ritherdon/midpoint) (Git repository) - [Relay](https://git.abbether.net/return-to-ritherdon/relay) (Git repository) - [Eyes and Ears Git Repository](https://git.abbether.net/return-to-ritherdon/eyes-and-ears) - [Return to Ritherdon Documentation (rtr-docs)](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Home Page) - [Eyes and Ears Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/eyes-and-ears/rtr-eyes-and-ears.md) Montoring Tue, 12 Jul 2022 04:25:45 +0000 Charts https://www.craigoates.net/software/view/charts <figure> <img src="/storage/view/craig/media/charts-heading-image" alt="Charts Heading Image"/> </figure> ## Overview Charts is a website which helps users create interactive charts without writing a single line of code. To use it, you simply upload a spreadsheet (a .csv or .tsv file) and await the results. The website, also, stores you charts so you can access them from anywhere on the internet (firewalls permitting). Each chart is stored as a .html file which means you can easily share them with others. It's as simple as attaching them to email. ## Technical Overview, with a Slight Detour I built this website with Common Lisp and Caveman2 and the charting features in Python and Bokeh. The reason for the mix-n-match approach is because I didn't intend to write a website. And, if I'm being honest, I didn't intend to write a Python program, either. A friend asked me to look at some data and help access/open it on the computer. The actual aim was to create a chart and that was easy enough to do in something like Microsoft Excel or Libre Office Calc; So, task complete. Great Success! Moving on... ...and this project is a consequence of me moving on. I had a bit of free time at the end of a day -- a Tuesday if I recall correctly. So, I wrote a Python script (with Bokeh) to make a chart with said data. I noticed I could write a CLI program so I didn't need to change the Python script every time I wanted to change something or produce a new chart. From there, I realised I could build a website which could call said CLI program which meant my friend, or whomever, could create their own charts without me. This was not 'all part of the plan'. I got carried away and here we is where I/we/us/you landed. One of the reason for wanting to create a chart with Bokeh was its fancy interactive features. The charts in Microsoft Excel and Libre Office Calc tend to be static or cumbersome to deal with -- at least in my experience. Charts created with Bokeh, though, have the default ability of zooming in and out of the chart and moving around within it. I have used it before, as well. For more information of the technologies used, please use the links at the end of this page. I wrote the website in Common Lisp because I felt like it. There is no technical argument for or against it. I just felt like it. I used Caveman2 because that's what I know best -- of all the Common Lisp web frameworks/libraries. <figure> <img src="/storage/view/craig/media/charts-workflow-summary" alt="Charts Workflow Summary"/> <figcaption> Upload a spreadsheet, fill out a form and Charts will do the rest. </figcaption> </figure> <figure> <img src="/storage/view/craig/media/charts-stored-files" alt="Charts Stored Files Screenshot"/> <figcaption> Charts stores your charts as .html files so you can access (or delete) them anywhere on the internet and shared them as simply as attaching them to an email. </figcaption> </figure> ## Project Limitations At the time of writing (August 2022), the website can only produce line charts. This is because the **initial aim** was to create a line chart. With that said, the website can technically call different Python programs (if I write them) which can produce different types of charts. I might expand the types of charts the website can produce but I don't want to promise anything. I might get bored or distracted by some new shiny thing. I did build this on a whim after all. The website proudly declares, > Turn your spreadsheets into interactive charts, without writing a single line > of code. Because of this, it can only use a subset of Bokeh's functionality and it needs to assume certain things about how you organised your data. If you need the more elaborate features of Bokeh, this website is not for you. You will most likely need to write some Python yourself. The Bokeh project, also, has some documentation on using Bokeh with Jupyter (if Jupyter is and it's more your thing). The (Charts) website only accepts Comma-Separated Value and Tab-Separated Value files (.csv and .tsv). You will need to export your Microsoft Excel (.xls) and Open Document Formats (.ods, .odt Etc.) files before you can upload them to the server. I don't know how likely this is to change. This one is not really a limitation but it should help clarify an assumption you might have. The website stores your charts for you (as .html files) but it doesn't store the spreadsheets you upload. As soon as the website has created your chart, it will delete the spreadsheet. In case you're wondering, you can delete the .html on the server if you want. <figure> <video controls> <source src="/storage/view/craig/media/charts-interactive-chart-ex" type="video/mp4"> Your browser does not support this video format. </video> <figcaption> Charts made with Bokeh have built-in interactive features. You can zoom in and out with your mouse/track-pad, focus on a particular section and move around the chart with ease. </figcaption> </figure> ## Why the Website is Called 'Charts' but its Git Repository says 'hot-line' When I created the Git repository, I called it 'hot-line' because I thought I was being clever -- and I didn't intend to make it public. The data I was originally handed included the change in temperate of a metal whilst it was being welded and the desired chart was a line chart. Welds tend to occur in straight lines, also. So, the 'line' from the weld was 'hot' and the 'line' chart noted how 'hot' the temperate got. Yes, I agree, I should have been named Witty McWitteringham. I called it 'Charts' here because I didn't want to by a new domain name, at least not at the time of writing (August 2022). On top of that, 'hot-line' doesn't really help describe what the website is about. So charts.craigoates.net it is but I'm not entirely comfortable with keeping the charts.craigoates.net URL or 'Charts' name. Because of that, I tend to view 'hot-line' as a 'project' name now. ## Links - [Charts Home Page](https://charts.craigoates.net) - [Chart's Git Repository](https://git.abbether.net/craig.oates/hot-line) (A.K.A. hot-line) - [Bokeh's Main Website](https://www.bokeh.org) - [Bokeh's Doc's Website](https://docs.bokeh.org) - [Jupyter Notebooks](https://jupyter.org/) - [Using Bokeh in Jupyter Notebooks](https://docs.bokeh.org/en/latest/docs/user_guide/jupyter.html) - [Caveman2's Git Repository](https://github.com/fukamachi/caveman) - [Common Lisp Cookbook](https://lispcookbook.github.io/cl-cookbook/) Plotting Mon, 15 Aug 2022 16:43:28 +0000 Ritherdon Charts https://www.craigoates.net/software/view/ritherdon-charts <figure> <img src="https://www.craigoates.net/storage/view/craig/media/rith-chart-daily-totals" alt="Daily Totals"/> <figcaption> Figure 1. Daily totals for Light Meter 1 and Light Meter 2 </figcaption> </figure> [Ritherdon Charts](https://git.abbether.net/return-to-ritherdon/ritherdon-charts) is a (mostly) Python-based data-exploration project. It explores the data recorded by the *Personal Flash in Real-Time* artworks, made by [Nicola Ellis](http://www.nicolaellis.co.uk). The *Personal Flash* artworks recorded the light levels in the welding booths in [Ritherdon](https://ritherdon.co.uk/), during the [No gaps in the line](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) exhibition, hosted at [Castlefield Gallery](https://www.castlefieldgallery.co.uk). With this project, I've taken those reading (from the Light Meters) and produced a collection of charts for Nicola -- and you -- to review. The charts are produced using [Python](https://www.python.org/)'s [Bokeh](https://bokeh.org/) library. I've, also, used [Bash](https://www.gnu.org/software/bash/) scripts, [Awk](https://www.gnu.org/software/gawk/manual/gawk.html) and [ripgrep](https://github.com/BurntSushi/ripgrep) for some data processing tasks. Oh, [Pandas](https://pandas.pydata.org/) and [Numpy](https://numpy.org/) are sprinkled into the mix, as well. Below are a few examples of the types of charts the data produced. <figure> <img src="https://www.craigoates.net/storage/view/craig/media/rith-chart-lm2-2021-07-22" alt="LM2 Readings (2021-07-22)"/> <figcaption> Figure 2. Readings from Light Meter 2 for 22<sup>nd</sup> July 2021 </figcaption> </figure> <figure> <img src="https://www.craigoates.net/storage/view/craig/media/rith-chart-lm1-hr-totals" alt="LM1 Hourly Totals"/> <figcaption> Figure 3. Total readings per hour for Light Meter 1 </figcaption> </figure> <figure> <img src="https://www.craigoates.net/storage/view/craig/media/rith-chart-lm1-overlay" alt="LM1 Overlayed"/> <figcaption> Figure 4. Light Meter 1's daily readings overlaid on top of each other </figcaption> </figure> This project isn't directly related to the [Return to Ritherdon](https://www.nicolaellisandritherdon.com) project. So, you won't find it in the [rtr-docs](https://git.abbether.net/return-to-ritherdon/rtr-docs) repository. The work done in this project is just a bit of fun after the fact. Data-Visualisation Thu, 28 Dec 2023 21:19:54 +0000 Ritherdon Archive https://www.craigoates.net/software/view/ritherdon-archive <figure> <img src="https://www.craigoates.net/storage/view/craig/media/rith-arc-search-01" alt="Ritherdon Archive Search Feature"/> <figcaption> Figure 1. The beginnings of the Nicola Ellis and Ritherdon Archive. </figcaption> </figure> [Ritherdon Archive](https://git.abbether.net/return-to-ritherdon/ritherdon-archive) is essentially a website ran by [Nicola Ellis](http://www.nicolaellis.com). Its purpose is to preserve as much data/context/output from the *Return to Ritherdon Project* as possible. If you would like to know more about the *Return to Ritherdon Project*, use the following links: - [Nicola Ellis, Return to Ritherdon: Photographs and Paintings](https://issuu.com/castlefield_gallery/docs/final_edit_nicola_ellis_return_to_ritherdon_photog) (A digital book of the about the project) - [*No gaps in the line* Exhibition](https://www.castlefieldgallery.co.uk/event/nicola-ellis-solo-exhibition-coming-in-2021/) (Art exhibition at Castlefield Gallery) - [Nicola's personal website](http://www.nicolaellis.com/2022/nicola-ellis-and-ritherdon-co-ltd-no-gaps-in-the-line/) (more images and information about the artworks she made) - [rtr-docs](https://git.abbether.net/return-to-ritherdon/rtr-docs) (Mostly project documentation for the *Personal Flash in Real-Time* artworks with *Return to Ritherdon* information mixed in) From my point-of-view, the Ritherdon Archive is a blogging site. Or, one of the main aims of the project was to provide something akin to *WordPress Basic*. Nicola wanted something which operates like [WordPress](https://wordpress.com/) without all the features she never touches. This is the result. I wrote the site in Common Lisp and used SQLite database. One of the main reasons for using SQLite was its portability. This (Ritherdon Archive) website includes a purpose-built 'snapshot' feature which makes it easier to back up the site's data -- as well as export it. <figure> <img src="https://www.craigoates.net/storage/view/craig/media/ritherdon-archive-snapshot-1" alt="Snapshot Feature 1"/> <figcaption> Figure 2. Take *snapshots* of the website's data at that moment of time. </figcaption> </figure> <figure> <img src="https://www.craigoates.net/storage/view/craig/media/ritherdon-archive-snapshot-2" alt="Snapshot Feature 2"/> <figcaption> Figure 2a. Restore and download snapshots. </figcaption> </figure> Another aspect of archives -- which determines how useful they are -- is how easy it is to find stuff in it. Because of this, I've integrated [Meilisearch](https://www.meilisearch.com/) into the site. This means viewers of the site can fuzzy search its contents. It's, also, an optional feature. <figure> <img src="https://www.craigoates.net/storage/view/craig/media/rith-arc-search-02" alt="Fuzzy Search Feature"/> <figcaption> Figure 3. Use the (optional) fuzzy search feature to find things on the website. </figcaption> </figure> I've included an in-built 'filter search' feature if you don't want to run a Meilisearch instance. The *filter* is not as fancy as the Meilisearch features, but it helps the site's viewers to quickly find a particular blog post. <figure> <img src="https://www.craigoates.net/storage/view/craig/media/rith-arc-filter-01" alt="Filter Feature Screenshot"/> <figcaption> Figure 4. The site has a *filter* feature which you can use if you don't want to use the *(optional)* fuzzy search features. </figcaption> </figure> While the Ritherdon Archive project has a specific purpose, the code for this site is a good starting-point to create a more generalised blogging site. If you know Common Lisp and are familiar with [Caveman2](https://github.com/fukamachi/caveman) and [Mito](https://github.com/fukamachi/mito), feel free to fork the project. Blog Thu, 28 Dec 2023 21:52:33 +0000