<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Projects on Andrew Cullis</title><link>https://andrew.cullis.dev/projects/</link><description>Recent content in Projects on Andrew Cullis</description><generator>Hugo -- gohugo.io</generator><atom:link href="https://andrew.cullis.dev/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>Flash Search Engine 🔦</title><link>https://andrew.cullis.dev/projects/flash/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://andrew.cullis.dev/projects/flash/</guid><description>Full-text search engine for Ubuntu written in Go</description><content:encoded><![CDATA[<a href="https://github.com/Andy9oo/flash">
    <img id="github" style="margin: auto" src="https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white" />
</a><br/>
<p>Flash is a full-text desktop search engine, designed to help users find their files. Using preprocessing techniques, flash creates an index that allows the user to search without the need to crawl the filesystem; substantially reducing search times. Flash is written purely in Go to allow for the use of concurrency during preprocessing and search.</p>
<p>There are several other tools that a user can use to search their file system, such as <code>find</code> and <code>grep</code>. These tools work well for specific use cases; however, they each have drawbacks. <code>find</code> can only search for file names, and <code>grep</code> has to crawl the file system for each search.</p>
<p>Flash solves both of these problems, by building an inverted index to perform a full-text search over the file system, without the need to crawl it each time. Comparing its performance to <code>grep</code> (as shown below), <code>flash</code> can search various datasets in near-constant time, well outperforming grep and providing a much better user experience.</p>
<figure>
    <img loading="lazy" src="./grep.webp"/> 
</figure>

<p>In addition to the command line interface shown above <code>flash</code> has a GUI, which was developed using the GTK3 framework, that a user can use to quickly find files. The <code>flash gui</code> command can be bound to any keyboard shortcut to quickly bring up the search box, shown below.</p>
<figure>
    <img loading="lazy" src="./results.webp"/> 
</figure>

<p>To get started with flash, follow the instructions listed on the <a href="https://github.com/Andy9oo/flash">github page</a>.</p>
]]></content:encoded></item><item><title>Inefsin Booking Site 🎣</title><link>https://andrew.cullis.dev/projects/inefsin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://andrew.cullis.dev/projects/inefsin/</guid><description>Online booking site</description><content:encoded><![CDATA[<p>This project was developed for the Inefsin fishing syndicate, to allow members to book cottages online. Members can log in to the website to view available dates on the calendar, and submit booking requests.</p>
<figure>
    <img loading="lazy" src="./inefsin.webp"/> 
</figure>

<p>Admins can review these booking requests in a separate panel and either accept or reject them, emailing users the result.</p>
<figure>
    <img loading="lazy" src="./admin.webp"/> 
</figure>

<p>The project runs as a serverless project, using Google&rsquo;s Firebase and cloud functions as a backend, and Angular for the front-end. In addition to this, SendGrid was used to handle all transational emails, to both admins and users.</p>
]]></content:encoded></item></channel></rss>