<?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>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!&#xA;Initial theme creation and set-up First steps After creating a base Hugo site with: -</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>Links GitHub repository Motivation 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.&#xA;Software analysis 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.</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>&amp;ldquo;To investigate development of an extensible 2D game engine for use by programmers and non-programmers&amp;rdquo;&#xA;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!</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>Introduction 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.&#xA;What is obfuscation? 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 as a challenge, sometimes even for art!</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>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.&#xA;The tool currently has the following features: -&#xA;Node-graph editor similar to Blender&amp;rsquo;s node editor, Unreal Engine 4&amp;rsquo;s Blueprint editor, etc. Ability to add custom functions Multiple game states which all build to custom classes A set of basic language nodes which allow for general Python scripting A set of engine-specific nodes providing a simple interface to the engine Colour coding for readability Pan and zoom controls Loading and saving of networks The ability to run and test the script with the SG2D engine and to view the output Here&amp;rsquo;s a video of the tool in action: - There&amp;rsquo;s still a lot of work to do, so watch this space for more updates soon!</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>Introduction As a follow-up to the previous article about my Web Exploit Detector, 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.&#xA;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.</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>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.&#xA;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 .</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>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.&#xA;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.</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>Code examples Demo Rust WASM library and HTML (GitHub) Introduction Further to my recent post 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. Check out the demo!&#xA;Floyd-Steinberg dithering algorithm The Floyd-Steinberg dithering algorithm is used as a way to distribute quantization errors to neighbouring pixels in an image.</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>Introduction After detecting some new exploits on one of my web servers, I decided to start work on a new application called the &amp;ldquo;Web Exploit Detector&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.&#xA;I now use this tool on my own servers to check for infections on a daily basis and it works well so far.</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>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.&#xA;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. SGDK: this is a set of tools used currently for asset creation (maps, animated sprites, etc).</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>Code examples Demo Rust library (GitHub) Introduction I have recently been learning The Rust programming language 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 Cybersecurity and technology 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.</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>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;&#xA;So here is Shared Canvas, mark 2! 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.</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>Here&amp;rsquo;s a new game that I created for a university assignment called &amp;ldquo;Tank Battleground!&amp;rdquo;&#xA;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.&#xA;The game was written from the ground up using C++, OpenGL, GLSL, GLFW, SDL_mixer, FreeImage and FreeType.</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>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 Static Games. 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;&#xA;I decided that path-finding over a grid will be required to achieve this, so I decided to investigate the A* path-finding algorithm.</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>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.&#xA;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.</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>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.&#xA;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!</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>Downloads Linux build: malevolent_revenge_linux_v1.0.0.zip (29.5KB) Windows build: malevolent_revenge_win_v1.0.0.zip (364.5KB) Source code: malevolent_revenge_src_v1.0.0.zip (38.5KB) The resource files (bitmaps, music etc), same for Linux and Windows versions, to be placed in the same directory as the executable: malevolent_revenge_files_v1.0.0.zip (14.6MB) Building from source in Ubuntu aside from the usual also requires liballegro4.2-dev and running requires liballegro4.2 and liballegro4.2-plugin-esd. Running under Windows requires alleg42.dll (included in the ZIP file) and the MS Visual C++ 2010 runtime, which can be downloaded from https://www.</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>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.&#xA;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.</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>Following on from the Delphi 3D test program, 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.</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>I&amp;rsquo;ve just released a beta version of a new project that I&amp;rsquo;ve been working on: Lishwist!&#xA;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.</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>This is a small post in appreciation of Rust, the programming language, and its ecosystem.&#xA;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 the performance of Rust when compiled to WASM. I&amp;rsquo;ve also built some software using Rust: Lishwist, Syswall and the Rust/WASM graphics library.</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>I recently started playing around with the p5.js web editor and I created what I called the &amp;ldquo;Verlet Physics Playground&amp;rdquo;. That got me interested in other libraries in other languages that could be used for building real-time simulations like this.&#xA;The rabbit hole I ended up in first took me to Common Lisp&amp;rsquo;s Sketch 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.</description>
    </item>
  </channel>
</rss>
