<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Coding on Polaris64&#39;s blog</title>
		<link>https://blog.polaris64.net/tags/coding/</link>
		<description>Recent content in Coding on Polaris64&#39;s blog</description>
		<generator>Hugo</generator>
		<language>en-uk</language>
		
		
		
		
			<lastBuildDate>Sun, 22 Sep 2024 13:46:31 +0200</lastBuildDate>
		
			<atom:link href="https://blog.polaris64.net/tags/coding/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Writing a custom Hugo theme</title>
				<link>https://blog.polaris64.net/post/writing-a-custom-hugo-theme/</link>
				<pubDate>Mon, 24 Aug 2020 18:33:00 +0200</pubDate>
				<guid>https://blog.polaris64.net/post/writing-a-custom-hugo-theme/</guid>
				<description>&lt;p&gt;I am currently in the process of creating this Hugo blog and I decided to create my own theme in order to learn Hugo internals. While testing this theme I of course needed content, so I thought &amp;ldquo;why not document the process of creating the theme as the first post in the blog?&amp;rdquo;. This is that post!&lt;/p&gt;&#xA;&lt;h2 id=&#34;initial-theme-creation-and-set-up&#34;&gt;Initial theme creation and set-up&lt;/h2&gt;&#xA;&lt;h3 id=&#34;first-steps&#34;&gt;First steps&lt;/h3&gt;&#xA;&lt;p&gt;After creating a base Hugo site with: -&lt;/p&gt;</description>
			</item>
			<item>
				<title>Syswall: a firewall for syscalls</title>
				<link>https://blog.polaris64.net/post/syswall-a-firewall-for-syscalls/</link>
				<pubDate>Sat, 16 Feb 2019 22:07:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/syswall-a-firewall-for-syscalls/</guid>
				<description>&lt;h2 id=&#34;links&#34;&gt;Links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/polaris64/syswall&#34;&gt;GitHub repository&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;motivation&#34;&gt;Motivation&lt;/h2&gt;&#xA;&lt;p&gt;A while back I started thinking about software and how it does what it does. Perhaps even more importantly, I started thinking about how we can know what software does, without relying on the software&amp;rsquo;s marketing pitch.&lt;/p&gt;&#xA;&lt;h3 id=&#34;software-analysis&#34;&gt;Software analysis&lt;/h3&gt;&#xA;&lt;p&gt;Software can be good and can also be bad; this is what we know as malware. For malware, a lot of time and effort is spent reverse-engineering the program&amp;rsquo;s machine code in order to figure out what it does and how it does it. This is a highly specialised skill, requiring a huge amount of time and effort to be able to perform this reverse-engineering successfully. We also use virtual machines (VMs) in order to execute untrustworthy executable files in a safe environment in order to limit their effectiveness when performing an analysis.&lt;/p&gt;</description>
			</item>
			<item>
				<title>My Dissertation Project</title>
				<link>https://blog.polaris64.net/post/my-dissertation-project/</link>
				<pubDate>Sun, 28 Dec 2014 14:24:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/my-dissertation-project/</guid>
				<description>&lt;p&gt;&lt;strong&gt;&amp;ldquo;To investigate development of an extensible 2D game engine for use by programmers and non-programmers&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;I am currently working on a final-year university project and dissertation and this blog is used to track my progress. I&amp;rsquo;ll post regular updates as the project progresses so please check back to see what&amp;rsquo;s happening!&lt;/p&gt;</description>
			</item>
			<item>
				<title>Could Emacs Have a Set-up Wizard?</title>
				<link>https://blog.polaris64.net/post/could-emacs-have-a-set-up-wizard/</link>
				<pubDate>Mon, 28 Sep 2020 22:05:00 +0200</pubDate>
				<guid>https://blog.polaris64.net/post/could-emacs-have-a-set-up-wizard/</guid>
				<description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;There have been &lt;a href=&#34;https://www.reddit.com/r/emacs/comments/izrp9n/toward%5Fa%5Fmodern%5Femacs/&#34;&gt;a number of discussions recently about modernising Emacs&lt;/a&gt;. &lt;a href=&#34;https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00797.html&#34;&gt;Some people feel that Emacs is not aesthetically pleasing&lt;/a&gt;, while &lt;a href=&#34;https://www.reddit.com/r/emacs/comments/izrp9n/toward%5Fa%5Fmodern%5Femacs/g6lndo4?utm%5Fsource=share&amp;amp;utm%5Fmedium=web2x&amp;amp;context=3&#34;&gt;others feel that Emacs&amp;rsquo;s default key-bindings put off potential newcomers&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In these discussions, I normally see comments fall into two main groups: -&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;People who are proficient with Emacs and do not want the quest for new users to interfere with their way of using Emacs; and&lt;/li&gt;&#xA;&lt;li&gt;People who want to welcome new users and for Emacs to be used by as many people as possible.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I agree with both groups to some extent. I consider myself a proficient Emacs user who is comfortable with the defaults and with changing them myself where necessary. However, when viewed through the eyes of a beginner, I do see Emacs as intimidating.&lt;/p&gt;&#xA;&lt;p&gt;I strongly agree that Emacs should remain as it is and I wouldn&amp;rsquo;t want to introduce simplifications just to cater to people who might want to use it. I also don&amp;rsquo;t think that Emacs should unnecessarily try to follow the latest trends just to be &amp;ldquo;up to date&amp;rdquo;. I do however think that we can do more to provide a pathway for newcomers to follow, so this post will explore one idea for doing just that.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hidden in Plain Sight: how attackers use obfuscation to hide code</title>
				<link>https://blog.polaris64.net/post/hidden-in-plain-sight-how-attackers-use-obfuscation-to-hide-code/</link>
				<pubDate>Mon, 01 May 2017 19:10:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/hidden-in-plain-sight-how-attackers-use-obfuscation-to-hide-code/</guid>
				<description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Many articles, including my own, make references to code obfuscation. This article takes a look at what this actually is, as well as why it is often used by attackers to hide malicious code.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-obfuscation&#34;&gt;What is obfuscation?&lt;/h2&gt;&#xA;&lt;p&gt;Obfuscation is the process of converting something to a form where its meaning and purpose is less apparent. When related to computer source code, this can be done for many reasons; sometimes &lt;a href=&#34;http://www.ioccc.org/2014/deak/prog.c&#34;&gt;as a challenge&lt;/a&gt;, sometimes &lt;a href=&#34;http://www.ioccc.org/1992/imc.c&#34;&gt;even for art&lt;/a&gt;!. However it can also be used for more sinister purposes which is what we&amp;rsquo;ll investigate today.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Network Editor Progress</title>
				<link>https://blog.polaris64.net/post/network-editor-progress/</link>
				<pubDate>Fri, 03 Apr 2015 11:43:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/network-editor-progress/</guid>
				<description>&lt;p&gt;I have just finished an early alpha version of the tool, called &amp;ldquo;SG2D script editor&amp;rdquo;, which will be used to generate the Python script used to drive the engine.&lt;/p&gt;&#xA;&lt;p&gt;The tool currently has the following features: -&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Node-graph editor similar to Blender&amp;rsquo;s node editor, Unreal Engine 4&amp;rsquo;s Blueprint editor, etc.&lt;/li&gt;&#xA;&lt;li&gt;Ability to add custom functions&lt;/li&gt;&#xA;&lt;li&gt;Multiple game states which all build to custom classes&lt;/li&gt;&#xA;&lt;li&gt;A set of basic language nodes which allow for general Python scripting&lt;/li&gt;&#xA;&lt;li&gt;A set of engine-specific nodes providing a simple interface to the engine&lt;/li&gt;&#xA;&lt;li&gt;Colour coding for readability&lt;/li&gt;&#xA;&lt;li&gt;Pan and zoom controls&lt;/li&gt;&#xA;&lt;li&gt;Loading and saving of networks&lt;/li&gt;&#xA;&lt;li&gt;The ability to run and test the script with the SG2D engine and to view the output&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s a video of the tool in action: -&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/y4rgTLCJz98?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;&#xA;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Web Exploit Detector: NPM module</title>
				<link>https://blog.polaris64.net/post/web-exploit-detector-npm-module/</link>
				<pubDate>Sat, 22 Apr 2017 15:23:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/web-exploit-detector-npm-module/</guid>
				<description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;As a follow-up to &lt;a href=&#34;https://blog.polaris64.net/post/web-exploit-detector-node-js-security-scanner&#34;&gt;the previous article about my Web Exploit Detector&lt;/a&gt;, I am happy to announce that I have just made the project available as an NPM module. This allows the application to be installed, used and updated much more easily than before.&lt;/p&gt;&#xA;&lt;p&gt;This article is intended to be a brief introduction to the Web Exploit Detector as an NPM module, as well as a brief introduction to NPM itself for those that are unfamiliar with it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Engine Python Scripting Interface</title>
				<link>https://blog.polaris64.net/post/engine-python-scripting-interface/</link>
				<pubDate>Sun, 28 Dec 2014 14:55:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/engine-python-scripting-interface/</guid>
				<description>&lt;p&gt;My first development task was to add a scripting interface to the engine. This allows the game logic to be separated from the engine code and loaded in as with any other asset such as a sprite or audio clip.&lt;/p&gt;&#xA;&lt;p&gt;I chose Python for scripting due to its power, flexibility, popularity and ease of integration. I am using IronPython for the .NET support with XNA, but I am being careful not to introduce any .NET dependencies as the engine needs to be portable, and game scripts should be able to be run with any version of the engine. The script itself is loaded during initialisation of a &amp;ldquo;script harness&amp;rdquo; executable, which is the framework under which the game runs in the engine. The engine can of course still be used directly by coding natively in XNA and using the engine assembly as a library.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Browser Scripting and Google Go</title>
				<link>https://blog.polaris64.net/post/browser-scripting-and-google-go/</link>
				<pubDate>Mon, 21 Nov 2011 00:00:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/browser-scripting-and-google-go/</guid>
				<description>&lt;p&gt;The latest era in the so-called &amp;ldquo;Browser Wars&amp;rdquo; seems to be focused largely on JavaScript execution speed. With more and more websites using client-side scripting to enhance functionality (Google Docs, Google Maps, Facebook etc.), the faster these scripts can run the better.&lt;/p&gt;&#xA;&lt;p&gt;Currently the most popular web browsers are Mozilla Firefox, Google Chrome, Microsoft Internet Explorer, Opera and Apple Safari. In JavaScript execution speed benchmarks, currently Chrome is at the top, with Safari, Firefox following closely for second and third and Opera and finally IE losing out with times over double that of the others. But what does this actually mean for the average user? Some websites are evolving past the traditional request-response model and employing a much more real-time and dynamic feel. So called web applications make heavy use of technologies such as AJAX and use client-side scripting to allow everything to run as seamlessly as possible for the user. Web applications like Google Docs and Gmail would not be possible in their current form without heavy use of client-side scripting.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rust WebAssembly and JavaScript: Floyd-Steinberg Dithering</title>
				<link>https://blog.polaris64.net/post/rust-webassembly-javascript-floyd-steinberg-dithering-performance/</link>
				<pubDate>Sat, 20 Jan 2018 13:16:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/rust-webassembly-javascript-floyd-steinberg-dithering-performance/</guid>
				<description>&lt;h2 id=&#34;code-examples&#34;&gt;Code examples&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.polaris64.net/resources/programming/fs%5Fdither%5Fwasm/&#34;&gt;Demo&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/polaris64/floyd%5Fsteinberg%5Fwasm%5Frust&#34;&gt;Rust WASM library and HTML (GitHub)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;Further to my &lt;a href=&#34;https://blog.polaris64.net/post/webassembly-wasm-rust-webgl-mandelbrot-performance-analysis&#34;&gt;recent post&lt;/a&gt; comparing the performance of a WebAssembly module written in Rust to plain JavaScript and WebGL shaders for rendering the Mandelbrot set, I have added an additional example comparing the performance of WebAssembly and plain JavaScript for the Floyd-Steinberg dithering algorithm. &lt;a href=&#34;https://www.polaris64.net/resources/programming/fs%5Fdither%5Fwasm/&#34;&gt;Check out the demo!&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;floyd-steinberg-dithering-algorithm&#34;&gt;Floyd-Steinberg dithering algorithm&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://en.wikipedia.org/wiki/Floyd%E2%80%93Steinberg%5Fdithering&#34;&gt;Floyd-Steinberg dithering algorithm&lt;/a&gt; is used as a way to distribute quantization errors to neighbouring pixels in an image.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Web Exploit Detector: Node.js security scanner</title>
				<link>https://blog.polaris64.net/post/web-exploit-detector-node-js-security-scanner/</link>
				<pubDate>Sun, 16 Apr 2017 19:16:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/web-exploit-detector-node-js-security-scanner/</guid>
				<description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;After detecting some new exploits on one of my web servers, I decided to start work on a new application called the &amp;ldquo;&lt;a href=&#34;https://github.com/polaris64/web%5Fexploit%5Fdetector&#34;&gt;Web Exploit Detector&lt;/a&gt;&amp;rdquo;. This project is open-source and hosted on GitHub, meaning that it&amp;rsquo;s free for anyone to use and, more importantly, anyone can contribute their own rules to make the tool better.&lt;/p&gt;&#xA;&lt;p&gt;I now use this tool on my own servers to check for infections on a daily basis and it works well so far. It is my hope that, given time and the help of others, it can become even more useful and capable of detecting even the most recent of exploits.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Pre-built Engine and Toolkit</title>
				<link>https://blog.polaris64.net/post/pre-built-engine-and-toolkit/</link>
				<pubDate>Sun, 28 Dec 2014 14:36:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/pre-built-engine-and-toolkit/</guid>
				<description>&lt;p&gt;For development of my project I decided to use an engine and set of tools that I have already built: the SG2D engine and the SGDK set of tools.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;SG2D: this is the engine itself, currently running on the Microsoft XNA Game Studio platform, allowing it to run on PC, Xbox, Windows Phone and Linux currently.&lt;/li&gt;&#xA;&lt;li&gt;SGDK: this is a set of tools used currently for asset creation (maps, animated sprites, etc). This will be expanded to provide a visual script-building interface.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;My dissertation project will involve converting these two elements so that they will become an effective tool for game creation for both programmers and non-programmers. This will involve adding a scripting interface to the engine and visual scripting interface to the tool kit. The ultimate goal is to allow designers and programmers to work together using one set of tools.&lt;/p&gt;</description>
			</item>
			<item>
				<title>WebAssembly and Rust: performance analysis</title>
				<link>https://blog.polaris64.net/post/webassembly-wasm-rust-webgl-mandelbrot-performance-analysis/</link>
				<pubDate>Tue, 09 Jan 2018 21:05:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/webassembly-wasm-rust-webgl-mandelbrot-performance-analysis/</guid>
				<description>&lt;h2 id=&#34;code-examples&#34;&gt;Code examples&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.polaris64.net/resources/programming/mandelbrot%5Ftest/&#34;&gt;Demo&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/polaris64/mandelbrot%5Fwasm%5Frust&#34;&gt;Rust library (GitHub)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;I have recently been learning &lt;a href=&#34;https://www.rust-lang.org/&#34;&gt;The Rust programming language&lt;/a&gt; and I absolutely love it! Rust is a systems-level language (like C and C++) which provides compile-time guarantees about memory safety and safe concurrent behaviour. Readers of my &lt;a href=&#34;https://blog.polaris64.net/categories/cybersecurity/&#34;&gt;Cybersecurity&lt;/a&gt; and &lt;a href=&#34;https://blog.polaris64.net/categories/technology/&#34;&gt;technology&lt;/a&gt; blogs will know that I am interested in computer security, and we&amp;rsquo;re reminded on an almost monthly basis at the moment that computer security often leaves a lot to be desired, what with vulnerabilities and exploits of public data sadly being a frequent occurrence. Rust programs simply will not compile when the program contains code which often causes these problems, meaning that bad code can be caught during development rather than later when there is more at stake. This is definitely the way we need to go, so I&amp;rsquo;d recommend anyone with an interest in programming or security to give it a try!&lt;/p&gt;</description>
			</item>
			<item>
				<title>Shared Canvas: the next generation</title>
				<link>https://blog.polaris64.net/post/shared-canvas-tng/</link>
				<pubDate>Sun, 13 Dec 2015 23:37:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/shared-canvas-tng/</guid>
				<description>&lt;p&gt;It has been quite a while since I created the original Shared Canvas, so I decided it was a good time for an upgrade&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;So here is &lt;a href=&#34;http://shared-canvas.polaris64.net/&#34;&gt;Shared Canvas, mark 2&lt;/a&gt;! Well almost; it&amp;rsquo;s still an early alpha and there&amp;rsquo;s a lot still left to do. But feel free to have a play with it in its current state :) Currently multi-user chat and drawing is supported, and multiple rooms (with passwords) can be created.&lt;/p&gt;</description>
			</item>
			<item>
				<title>OpenGL game: Tank Battleground</title>
				<link>https://blog.polaris64.net/post/opengl-game-tank-battleground/</link>
				<pubDate>Fri, 03 Apr 2015 12:10:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/opengl-game-tank-battleground/</guid>
				<description>&lt;p&gt;Here&amp;rsquo;s a new game that I created for a university assignment called &amp;ldquo;Tank Battleground!&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;The assignment required me to create a 3D game which used physics and demonstrated OpenGL and GLSL. I decided to use the idea of an arcade tank game so that I could demonstrate physics for movement (acceleration, velocity and displacement), projectile trajectories, friction, recoil, etc.&lt;/p&gt;&#xA;&lt;p&gt;The game was written from the ground up using C++, OpenGL, GLSL, GLFW, SDL_mixer, FreeImage and FreeType. I first coded a game library (simple engine) and then used that to build the game.&lt;/p&gt;</description>
			</item>
			<item>
				<title>A* Path-finding</title>
				<link>https://blog.polaris64.net/post/a-star-path-finding/</link>
				<pubDate>Thu, 24 Apr 2014 20:35:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/a-star-path-finding/</guid>
				<description>&lt;p&gt;As you may or may not know, I am currently working on a game called Mendel&amp;rsquo;s Farm with the rest of the team at &lt;a href=&#34;https://www.static-games.co.uk/&#34;&gt;Static Games&lt;/a&gt;. Over the last couple of days I have been thinking about various ways of adding AI-controlled actors to the game and how best to make them navigate the farm&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;I decided that path-finding over a grid will be required to achieve this, so I decided to investigate the A* path-finding algorithm. Before implementing it in-game (in UnrealScript) I decided to create a test implementation in JavaScript using HTML for rendering and the UI. I&amp;rsquo;ve uploaded the result here, so &lt;a href=&#34;https://www.polaris64.net/resources/programming/a-star%5Ftest.html&#34;&gt;click here to run the A* test&lt;/a&gt;!&lt;/p&gt;</description>
			</item>
			<item>
				<title>C#: Normal Map Generator</title>
				<link>https://blog.polaris64.net/post/c-sharp-normal-map-generator/</link>
				<pubDate>Mon, 07 Jan 2013 00:54:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/c-sharp-normal-map-generator/</guid>
				<description>&lt;p&gt;For a recent university assignment, I needed to create many different textures for both 3D models and surfaces. I wanted to create normal maps for each of these but I didn&amp;rsquo;t know how to do it.&lt;/p&gt;&#xA;&lt;p&gt;I decided therefore to experiment with different approaches including photographing a surface with light from different sides and by using filters in GIMP and Photoshop. Both techniques worked well and I realised that I could create a program to speed up the process.&lt;/p&gt;</description>
			</item>
			<item>
				<title>C: Commodore 64 Emulator</title>
				<link>https://blog.polaris64.net/post/c-commodore-64-c64-emulator/</link>
				<pubDate>Wed, 27 Jun 2012 09:46:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/c-commodore-64-c64-emulator/</guid>
				<description>&lt;p&gt;This is a work in progress Commodore 64 emulator written from the ground up in C. I&amp;rsquo;m lucky enough to own an original Commodore 64 together with the technical reference manual, and using both of these I was able to create a working emulator.&lt;/p&gt;&#xA;&lt;p&gt;My first step was to code the MOS 6510 processor core. From there I coded the memory manager, the I/O, interrupt handling, the VIC chip etc. All I then needed to do was plug in the original C64 ROMs (Kernal, Character Generator and Basic) and I had bare-bones emulated C64, which was quite a thrill!&lt;/p&gt;</description>
			</item>
			<item>
				<title>C&#43;&#43;: &#34;Malevolent Revenge!&#34;, Linux Allegro Game</title>
				<link>https://blog.polaris64.net/post/c-plus-plus-malevolent-revenge-linux-allegro-game/</link>
				<pubDate>Sun, 11 Mar 2012 00:24:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/c-plus-plus-malevolent-revenge-linux-allegro-game/</guid>
				<description>&lt;h2 id=&#34;downloads&#34;&gt;Downloads&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Linux build: &lt;a href=&#34;https://www.polaris64.net/resources/programming/malevolent%5Frevenge%5Flinux%5Fv1.0.0.zip&#34;&gt;malevolent_revenge_linux_v1.0.0.zip (29.5KB)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Windows build: &lt;a href=&#34;https://www.polaris64.net/resources/programming/malevolent%5Frevenge%5Fwin%5Fv1.0.0.zip&#34;&gt;malevolent_revenge_win_v1.0.0.zip (364.5KB)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Source code: &lt;a href=&#34;https://www.polaris64.net/resources/programming/malevolent%5Frevenge%5Fsrc%5Fv1.0.0.zip&#34;&gt;malevolent_revenge_src_v1.0.0.zip (38.5KB)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;The resource files (bitmaps, music etc), same for Linux and Windows versions, to be placed in the same directory as the executable: &lt;a href=&#34;https://www.polaris64.net/resources/programming/malevolent%5Frevenge%5Ffiles%5Fv1.0.0.zip&#34;&gt;malevolent_revenge_files_v1.0.0.zip (14.6MB)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Building from source in Ubuntu aside from the usual also requires &lt;code&gt;liballegro4.2-dev&lt;/code&gt; and running requires &lt;code&gt;liballegro4.2&lt;/code&gt; and &lt;code&gt;liballegro4.2-plugin-esd&lt;/code&gt;. Running under Windows requires &lt;code&gt;alleg42.dll&lt;/code&gt; (included in the ZIP file) and the MS Visual C++ 2010 runtime, which can be downloaded from &lt;a href=&#34;https://www.microsoft.com/download/en/details.aspx?id=5555&#34;&gt;https://www.microsoft.com/download/en/details.aspx?id=5555&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Delphi (Pascal): 3D Test</title>
				<link>https://blog.polaris64.net/post/delphi-pascal-3d-test/</link>
				<pubDate>Sat, 01 Jan 2011 00:00:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/delphi-pascal-3d-test/</guid>
				<description>&lt;p&gt;This is a program I wrote in Delphi quite a few years ago. I wanted to investigate the principles of 3D graphics so I decided to create this program to explore this.&lt;/p&gt;&#xA;&lt;p&gt;All of the rendering is performed on a pixel-by-pixel basis using my own graphics routines. It is not meant to be a viable 3D engine or renderer; it&amp;rsquo;s far too slow for that due to the fact it uses Delphi&amp;rsquo;s VCL to access graphics memory.&lt;/p&gt;</description>
			</item>
			<item>
				<title>C: SDL 3D renderer</title>
				<link>https://blog.polaris64.net/post/c-sdl-3d-renderer/</link>
				<pubDate>Tue, 01 Feb 2011 00:00:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/c-sdl-3d-renderer/</guid>
				<description>&lt;p&gt;Following on from the &lt;a href=&#34;https://blog.polaris64.net/post/delphi-pascal-3d-test/&#34;&gt;Delphi 3D test program&lt;/a&gt;, I have started to code another 3D renderer, this time in C using SDL. Again my goal is not to create a viable renderer for games, 3D applicatins etc, but rather as an exercise that will teach me more about 3D rendering. I have always been fascinated with how things work, so doing something like this will give me a better understanding to the internals of OpenGL, DirectX graphics etc.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Lishwist (beta)</title>
				<link>https://blog.polaris64.net/post/lishwist-beta/</link>
				<pubDate>Wed, 05 Jan 2022 21:50:00 +0100</pubDate>
				<guid>https://blog.polaris64.net/post/lishwist-beta/</guid>
				<description>&lt;p&gt;I&amp;rsquo;ve just released a beta version of a new project that I&amp;rsquo;ve been working on: &lt;a href=&#34;https://lishwist.polaris64.net/&#34;&gt;Lishwist&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;p&gt;Lishwist is a web app which allows you to create and share wish-lists. There&amp;rsquo;s no registration requirement: just create a new wish-list (called a Wist) and bookmark the page! You can then share the list with others (one share per person) and these people can &amp;ldquo;claim&amp;rdquo; items to mark their intent to get the item for you. People to whom you&amp;rsquo;ve shared your Wist can see who has claimed an item (to avoid people buying the same thing), but you can&amp;rsquo;t see that yourself (so as not to spoil the surprise).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Rust really is a superpower!</title>
				<link>https://blog.polaris64.net/post/rust-really-is-a-superpower/</link>
				<pubDate>Tue, 02 Jan 2024 00:00:00 +0000</pubDate>
				<guid>https://blog.polaris64.net/post/rust-really-is-a-superpower/</guid>
				<description>&lt;p&gt;This is a small post in appreciation of Rust, the programming language, and its ecosystem.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;ve read my other posts you&amp;rsquo;ll know that I have a strong interest in Rust. I have been using Rust for quite a number of years and I have released several posts about it, for example &lt;a href=&#34;https://blog.polaris64.net/post/webassembly-wasm-rust-webgl-mandelbrot-performance-analysis/&#34;&gt;the performance of Rust when compiled to WASM&lt;/a&gt;. I&amp;rsquo;ve also built some software using Rust: &lt;a href=&#34;https://blog.polaris64.net/post/lishwist-beta/&#34;&gt;Lishwist&lt;/a&gt;, &lt;a href=&#34;https://blog.polaris64.net/post/syswall-a-firewall-for-syscalls/&#34;&gt;Syswall&lt;/a&gt; and the &lt;a href=&#34;https://blog.polaris64.net/post/rust-wasm-graphics-library/&#34;&gt;Rust/WASM graphics library&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Verlet Physics Playground</title>
				<link>https://blog.polaris64.net/post/verlet-physics-playground/</link>
				<pubDate>Sun, 22 Sep 2024 12:51:00 +0200</pubDate>
				<guid>https://blog.polaris64.net/post/verlet-physics-playground/</guid>
				<description>&lt;p&gt;I recently started playing around with the p5.js web editor and I created what I called the &amp;ldquo;&lt;a href=&#34;https://editor.p5js.org/polaris64/sketches/xbJhKje3s&#34;&gt;Verlet Physics Playground&lt;/a&gt;&amp;rdquo;. That got me interested in other libraries in other languages that could be used for building real-time simulations like this.&lt;/p&gt;&#xA;&lt;p&gt;The rabbit hole I ended up in first took me to Common Lisp&amp;rsquo;s &lt;a href=&#34;https://github.com/vydd/sketch&#34;&gt;Sketch&lt;/a&gt; library. I love using Common Lisp and I&amp;rsquo;m especially enamoured with the interactive/REPL-driven development workflow. I had a lot of fun rebuilding the p5.js version using Sketch.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
