<?xml version="1.0"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
	<channel>
		<title>Alex Baines - Projects</title>
		<link>http://abaines.me.uk</link>
		<description>This page lists various projects of mine (programming and otherwise) that don't 
strictly belong in the games section, though several are related.
</description>
		<language>en-gb</language>
		<lastBuildDate>Sun, 11 Nov 2018 17:08:15 +0000</lastBuildDate>
		<copyright>2018 Alex Baines</copyright>
		
		<item>
			<title>CGIQuotes — C WebApp for storing & viewing quotes</title>
			<link>http://abaines.me.uk/projects/cgiquotes</link>
			<description>&lt;p&gt;This is a C program using &lt;a href=&quot;https://en.wikipedia.org/wiki/Common_Gateway_Interface&quot;&gt;CGI&lt;/a&gt;
to serve a quote database website. It was written to replace the gist storage
that was previously being used by &lt;a href=&quot;/projects/insobot&quot;&gt;insobot&lt;/a&gt; and provide a
nicer viewing experience.&lt;/p&gt;

&lt;p&gt;Quotes are stored in flat files with a simple format, which can be edited via
authenticated POST requests. CGIQuotes then makes each file, and each line within,
available via http in several different formats: raw, html, csv and json to
facilitate easy integration with other people’s projects.&lt;/p&gt;
</description>

			<pubDate>Tue, 01 Aug 2017 00:00:00 +0000</pubDate>
			<guid>/projects/cgiquotes</guid>
		</item>
		
		<item>
			<title>MiniGBS — GameBoy chiptune player</title>
			<link>http://abaines.me.uk/projects/minigbs</link>
			<description>&lt;p&gt;This is an ncurses music player for .gbs chiptune files. The UI shows the
realtime values of the GameBoy’s audio registers, highlighting values
as they change; The pitch and octave of the wave &amp;amp; square channels are also shown
in more traditional form, using the letters A though G, and numbers 0-9.&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/minigbs.gif&quot; alt=&quot;MiniGBS screenshot&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It has fairly intuitive controls for volume, toggling channels, changing the
tempo, etc, and sounds pretty accurate for most of the tracks that I’ve
tested. It also works with “Prehistorik Man”, which uses some tricks
that other players don’t properly emulate, though it won’t currently work with
a few tracks that expect to do their own cycle-based timing.&lt;/p&gt;

&lt;p&gt;With the name &lt;em&gt;Mini&lt;/em&gt;GBS, it was designed to have a pretty small code footprint;
The bulk of it is ~1.5k lines spread between 2 c files. Currently it doesn’t
come bundled with any songs, so you’ll have to find them yourself, but I have
started working on a GB sound driver and hope to make some original .gbs music
available in the future!&lt;/p&gt;

</description>

			<pubDate>Thu, 16 Mar 2017 00:00:00 +0000</pubDate>
			<guid>/projects/minigbs</guid>
		</item>
		
		<item>
			<title>Insobot - Modular C99 IRC bot</title>
			<link>http://abaines.me.uk/projects/insobot</link>
			<description>&lt;p&gt;Insobot is an IRC bot I started creating a while back, originally insprired by
other markov chain bots such as ChronalDragon’s (as far as I know unreleased) chronal_robot.&lt;/p&gt;

&lt;p&gt;After writing the original simple version in C++, I was interested in trying a
project in pure C, and decided to expand Insobot into a modular structure
and rewrite the markov chain functionality as one module for the new architecture.&lt;/p&gt;

&lt;p&gt;Today Insobot has many more modules, for creating alias/macro commands, retrieving
info from the twitch.tv API, expanding youtube/twitter links, storing quotes in 
a gist on github, as well as letting people know the schedule for Handmade Hero.&lt;/p&gt;

&lt;p&gt;The main Handmade Hero community bot, hmd_bot, is based on insobot’s code with a 
few additional modules added, and some removed.&lt;/p&gt;

&lt;p&gt;The markov chain module still remains the most noteworthy part of insobot though,
leading to quite a few humourous moments, some of which I pointed out in 
&lt;a href=&quot;/updates/dares-bots-port-oh-my#insobot&quot;&gt;this update&lt;/a&gt;.&lt;/p&gt;
</description>

			<pubDate>Mon, 25 Jan 2016 00:00:00 +0000</pubDate>
			<guid>/projects/insobot</guid>
		</item>
		
		<item>
			<title>Basic SDL/OpenGL Game Engine</title>
			<link>http://abaines.me.uk/projects/game-engine</link>
			<description>&lt;p&gt;This is a game engine that I’ve been creating recently using SDL2 and modern
OpenGL 3+ techniques.  &lt;br /&gt;
(I’m also trying to keep it compatible with OpenGL 2.1 as long as you have the 
right extensions.)&lt;/p&gt;

&lt;p&gt;I know everyone seems to say that you shouldn’t make your own engine, but I find
making the engines and systems just as fun, if not more so, than actually making
the games that they’re made for. I’m also doing it to learn about new-school
OpenGL and the various things that go into making a game from scratch.&lt;/p&gt;

&lt;p&gt;Some of its current features:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Configuration variables + functions.&lt;/li&gt;
  &lt;li&gt;In-game console / command-line interface to access them.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fully&lt;/strong&gt; rebindable controls (including all the CLI text-input related keys).&lt;/li&gt;
  &lt;li&gt;Unicode text handling / rendering (Not complete, combining characters will break it).&lt;/li&gt;
  &lt;li&gt;Can reload all OpenGL state at any time.&lt;/li&gt;
  &lt;li&gt;Uses VBOs, VAOs and ARB_vertex_attrib_binding for vertex specification.&lt;/li&gt;
  &lt;li&gt;Custom macro-based automatic GL extension loading.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Maybe one day I’ll actually make a game with it…&lt;/p&gt;

</description>

			<pubDate>Thu, 01 Jan 2015 00:00:00 +0000</pubDate>
			<guid>/projects/game-engine</guid>
		</item>
		
		<item>
			<title>Audacious bass spectrum</title>
			<link>http://abaines.me.uk/projects/audacious-bass-spectrum</link>
			<description>&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/spectrum.gif&quot; alt=&quot;Audacious bass spectrum screenshot&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This is a modification of the Cairo spectrum vizualisation plugin for the 
&lt;a href=&quot;http://www.audacious-media-player.org/&quot;&gt;Audacious media player&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It focuses on only the bass frequencies and creates a smooth line graph
reminiscent of the old style of Monstercat videos.&lt;/p&gt;

&lt;p&gt;The code uses the &lt;a href=&quot;http://www.fftw.org&quot;&gt;FFTW3 library&lt;/a&gt;, along with example code 
provided &lt;a href=&quot;http://www.fftw.org/pruned.html&quot;&gt;here&lt;/a&gt; on their website.&lt;/p&gt;
</description>

			<pubDate>Mon, 01 Dec 2014 00:00:00 +0000</pubDate>
			<guid>/projects/audacious-bass-spectrum</guid>
		</item>
		
		<item>
			<title>LibNRG - Networking for Real-time Games</title>
			<link>http://abaines.me.uk/projects/libnrg</link>
			<description>&lt;p&gt;LibNRG (Networking for Real-time Games) is a C++ library that I first started
working on for my third-year project at university. It aims to provide an
easy-to-use interface built on UDP sockets for use in fast-paced multi-player games.&lt;/p&gt;

&lt;p&gt;The initial version that I finished at uni worked pretty well, but there was 
still lots of room for improvement, so I’ve continued to work on it occasionally 
since then.&lt;/p&gt;

&lt;p&gt;The current version is a bit better, with more useful features like the Message 
RPC mechanism, but the library isn’t finished and I’m not sure it ever will be.&lt;/p&gt;

&lt;p&gt;It’s open source under the zlib license though, so you can take a look / use it 
/ make changes or improvements as you see fit. Patches, pull requests and 
suggestions are welcome.&lt;/p&gt;

&lt;p&gt;I’ve also made the specification and final report that I produced at uni 
available below.&lt;/p&gt;

</description>

			<pubDate>Mon, 31 Mar 2014 00:00:00 +0000</pubDate>
			<guid>/projects/libnrg</guid>
		</item>
		
		<item>
			<title>Messing with LMMS</title>
			<link>http://abaines.me.uk/projects/messing-with-lmms</link>
			<description>&lt;p&gt;I was messing around with &lt;a href=&quot;http://lmms.sourceforge.net/&quot;&gt;Linux Multimedia Studio&lt;/a&gt;
ages ago and made a remix of the Tetris theme. I found that I still had the
project file lying around, so I’ve cleaned it up a bit and put it on soundcloud.&lt;/p&gt;
</description>

			<pubDate>Thu, 06 Jun 2013 00:00:00 +0000</pubDate>
			<guid>/projects/messing-with-lmms</guid>
		</item>
		
		<item>
			<title>Creating abaines.me.uk</title>
			<link>http://abaines.me.uk/projects/abaines.me.uk</link>
			<description>&lt;p&gt;For anyone interested, I made this site using &lt;a href=&quot;http://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;,
which is a static site generation tool, mainly intended for blogs. With a bit of
hackery I’ve made it work for generating this set of posts in the “other” section,
as well as the items in the games section from a set of markdown files.&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;&lt;img src=&quot;/img/jekyll.png&quot; alt=&quot;Jekyll Logo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The site is also open source, you can find the pre-statically-generated version
on github &lt;a href=&quot;https://github.com/baines/baines.github.com&quot;&gt;right here&lt;/a&gt;. The site is
also currently hosted from github’s servers using their pages system that
incorporates jekyll, so that the site is automatically regenerated whenever
I make a commit - isn’t that nice!&lt;/p&gt;
</description>

			<pubDate>Thu, 06 Dec 2012 00:00:00 +0000</pubDate>
			<guid>/projects/abaines.me.uk</guid>
		</item>
		
		<item>
			<title>Bomberman AI Bot</title>
			<link>http://abaines.me.uk/projects/bomberman-ai</link>
			<description>&lt;p&gt;This is a really basic multi-player bomberman AI bot that I wrote for a 
&lt;a href=&quot;https://github.com/UWCS/bomberman-progcomp&quot;&gt;competition&lt;/a&gt; held
by the &lt;a href=&quot;https://uwcs.co.uk/&quot;&gt;University of Warwick Computing Society&lt;/a&gt; (UWCS).&lt;/p&gt;

&lt;p&gt;It’s written in Java and communicates with a server using the protocol documented
in the UWCS github repo linked above.&lt;/p&gt;

&lt;p&gt;It won the competition by quite a margin, but only because the other competitors
never dropped any bombs and only did random walks. (Zed0’s bot didn’t even go
that far iirc :p).&lt;/p&gt;

</description>

			<pubDate>Mon, 08 Oct 2012 00:00:00 +0000</pubDate>
			<guid>/projects/bomberman-ai</guid>
		</item>
		
	</channel>
</rss>
	
