Sign up

Polaris64's blog

Not verified No WebSub updates No webmention support Not yet validated

Recent content on Polaris64's blog

Generator
Hugo
Public lists
I ♥ RSS
Fetched

Polaris64's blog
Text

Verlet Physics Playground

I recently started playing around with the p5.js web editor and I created what I called the “Verlet Physics Playground”. That got me interested in other libraries in other languages that could be used for building real-time simulations like this.

The rabbit hole I ended up in first took me to Common Lisp’s Sketch library. I love using Common Lisp and I’m especially enamoured with the interactive/REPL-driven development workflow. I had a lot of fun rebuilding the p5.js version using Sketch.

Polaris64's blog
Text

Rust really is a superpower!

This is a small post in appreciation of Rust, the programming language, and its ecosystem.

If you’ve read my other posts you’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’ve also built some software using Rust: Lishwist, Syswall and the Rust/WASM graphics library.

Polaris64's blog
Text

Lishwist (beta)

I’ve just released a beta version of a new project that I’ve been working on: Lishwist!

Lishwist is a web app which allows you to create and share wish-lists. There’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 “claim” items to mark their intent to get the item for you. People to whom you’ve shared your Wist can see who has claimed an item (to avoid people buying the same thing), but you can’t see that yourself (so as not to spoil the surprise).

Polaris64's blog
Text

The UK’s Rising Stake in Semiconductors

Photo by L N on Unsplash.

Last year, the UK government, through the UK Research and Innovation’s programme Strength in Places, granted CSconnected £43.7 million to form “the world’s first Compound Semiconductor Cluster.”

The cluster is a consortium of organisations directly involved with the research, development, and manufacturing of compound semiconductors, which power most technological devices. The programme aims to develop new supply chains for unmanned aerial vehicles and new packaging platforms for emerging communications applications. This funding comes three years after the Cardiff Capital Region cabinet was awarded a £37.9 million investment, this time to establish an advanced semiconductor foundry.

Polaris64's blog
Text

Could Emacs Have a Set-up Wizard?

Introduction There have been a number of discussions recently about modernising Emacs. Some people feel that Emacs is not aesthetically pleasing, while others feel that Emacs’s default key-bindings put off potential newcomers. In these discussions, I normally see comments fa...

Polaris64's blog
Text

Rust/WebAssembly Graphics Library

Introduction

This is a quick post to describe a little Rust crate that I created for fun: a WebAssembly graphics library.

The library is not meant for any serious work; it has no hardware acceleration and is not highly optimised. I created it to help me to learn Rust, WebAssembly, general graphics routines and unit testing and benchmarking in Rust. I’m sharing it mainly for fun, but also with the hope that it might help someone who is learning this type of thing too.

Links

Polaris64's blog
Text

Using Org Mode to keep track of exercise

Introduction

I have been using Org mode to keep a daily journal of useful notes for around a year now. One such type of note is the amount of exercise I’ve done on a particular day. While this is a useful record, I wanted to expand upon it and to produce a table at the end of each month so that I can track how I’m (hopefully) progressing.

This post details how I used Emacs, Org mode and a sprinkling of Elisp to do this.

Polaris64's blog
Text

Writing a custom Hugo theme

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 “why not document the process of creating the theme as the first post in the blog?”. This is that post!

Initial theme creation and set-up

First steps

After creating a base Hugo site with: -

Polaris64's blog
Text

About me and this site

My interests

  • Computing: gaming, programming, hardware, networking, administration
  • Design: websites, 3D modelling, game levels, illustration
  • Photography and photo manipulation
  • Travel: I’ve been to the US, Russia, France, Italy, Switzerland, Holland, Germany, Poland, Czech Republic, Ukraine, Crimea, Georgia, Croatia, Serbia, Bosnia, Cuba, Iceland, Slovakia, Slovenia, Hungary
  • Reading: fiction and textbooks
  • Films
  • Keeping fit: mountain biking and running

Welcome!

Hello, and welcome to Polaris64.net!

This website is intended to be a place where I can show some of my work and also write about the industry and other areas that interest me.

Polaris64's blog
Text

Announcing my new game: Amazing Escape (Shareware)!

I’d like to introduce my new game Amazing Escape, Shareware version! Play online now! Amazing Escape is a top-down survival puzzle game for Android devices and the browser. The shareware version containing the first few levels is available now for free on the Google Play Store! The Game In Amazing Escape, you play as yourself, having found yourself trapped within a set of underground mazes (how unfortunate). Luckily though, you have your trusty torch at hand, so navigating these mazes shouldn’t be altogether impossible.

Polaris64's blog
Text

Syswall: a firewall for syscalls

Links

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’s marketing pitch.

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’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.

Polaris64's blog
Text

Rust WebAssembly and JavaScript: Floyd-Steinberg Dithering

Code examples

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!

Floyd-Steinberg dithering algorithm

The Floyd-Steinberg dithering algorithm is used as a way to distribute quantization errors to neighbouring pixels in an image.

Polaris64's blog
Text

WebAssembly and Rust: performance analysis

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 beha...

Polaris64's blog
Text

Hidden in Plain Sight: how attackers use obfuscation to hide code

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.

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!. However it can also be used for more sinister purposes which is what we’ll investigate today.

Polaris64's blog
Text

Web Exploit Detector: NPM module

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.

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.

Polaris64's blog
Text

Web Exploit Detector: Node.js security scanner

Introduction

After detecting some new exploits on one of my web servers, I decided to start work on a new application called the “Web Exploit Detector”. This project is open-source and hosted on GitHub, meaning that it’s free for anyone to use and, more importantly, anyone can contribute their own rules to make the tool better.

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.

Polaris64's blog
Text

WordPress Hacks: jQuery JS script injection

Introduction

In the second of my series of articles about different exploits seen for WordPress sites, I discuss a particular attack that causes all pages on an infected site to redirect to a page of the attacker’s choice, which in this case was an affiliate link. This attack involves adding malicious code to jQuery .js files based on the assumption that jQuery is probably going to be included in every page request.

Polaris64's blog
Text

Introduction to the Cybersecurity blog

The Cybersecurity blog is a place where I can write about all topics relating to online security, web-based attacks, “hacking”, exploits, vulnerabilities, penetration testing, etc.

In my work I operate many servers which are connected to the Internet, for myself, my company and my clients. Having a server connected to the Internet exposes it to a huge threat from online evildoers, and I see a fair share of this on a daily basis.

Polaris64's blog
Text

WordPress Hacks: functions.php Backdoors

Introduction

I recently noticed that a number of our client sites had some suspicious code added to the top of the functions.php file for each of the installed themes. This is an investigation into this code and details of how to remove it.

I am making this information available in the hope that it will be a useful resource for anybody that suffers this attack on their own WordPress sites. I strongly believe that by making this information public I can help others to combat these types of attacks. So, I hope you find the following analysis useful!

Polaris64's blog
Text

Shared Canvas: the next generation

It has been quite a while since I created the original Shared Canvas, so I decided it was a good time for an upgrade…

So here is Shared Canvas, mark 2! Well almost; it’s still an early alpha and there’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.

Polaris64's blog
Text

What is Consciousness?

Photo © Shutterstock Introduction Throughout the ages, philosophy and science has grappled with the concept of consciousness. This intangible yet fundamental aspect of every single human life has defied all attempts at being comprehended, understood and scientifically defin...

Polaris64's blog
Text

"Amazing Escape": Mobile Game in UE4

For another university assignment, I was tasked to create a mobile game using Unreal Engine 4. The game concept could be anything, but it couldn’t be a first-person game or a shooter. I came up with the idea of a top-down maze game where the player must collect keys in order to escape at the exit.

The maze is extremely dark and filled with malevolent statues which creep up on the player when the player is not looking. The player has a torch which often is the only source of illumination.

Polaris64's blog
Text

OpenGL game: Tank Battleground

Here’s a new game that I created for a university assignment called “Tank Battleground!”

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.

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.

Polaris64's blog
Text

Network Editor Progress

I have just finished an early alpha version of the tool, called “SG2D script editor”, which will be used to generate the Python script used to drive the engine.

The tool currently has the following features: -

  • Node-graph editor similar to Blender’s node editor, Unreal Engine 4’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’s a video of the tool in action: -

Polaris64's blog
Text

Move'm: Student Housing Reviews

Move’m is a housing review site specifically aimed at students and student accommodation all over the UK. It empowers students by allowing them to review student properties, landlords and letting agents, the overall goal being to provide students with a useful resource when looking for places to live and for landlords and agents to provide the best service possible!

The site was designed by the owners of Move’m Ltd and was developed by myself.

Polaris64's blog
Text

Engine Python Scripting Interface

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.

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 “script harness” 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.

Polaris64's blog
Text

Pre-built Engine and Toolkit

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.

  • 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). This will be expanded to provide a visual script-building interface.

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.

Polaris64's blog
Text

My Dissertation Project

“To investigate development of an extensible 2D game engine for use by programmers and non-programmers”

I am currently working on a final-year university project and dissertation and this blog is used to track my progress. I’ll post regular updates as the project progresses so please check back to see what’s happening!

Polaris64's blog
Text

"Weeping Angel": game model and sculpt

This is a “Weeping Angel” from Dr. Who that I modelled for a university assignment. The task was to create a low-polygon model suitable for a game (1,500 polygons maximum). The model had to include high-frequency detail so the base mesh (created in Blender) was exported to ZBrush for sculpting. Normal, ambient occlusion and cavity maps were then applied to the base mesh to provide the extra fidelity required while maintaining the low polygon count.

Polaris64's blog
Text

Microsoft's NoIP takedown

As I am writing this article I already know that you won’t be able to read it… Why is that? Well at the time of writing, No-IP.com’s services have been severely compromised meaning that DNS lookups for www.polaris64.net will always fail. So why don’t No-IP fix this problem? ...