RSSAmplifier

Blog

Rabidgremlin's Soapbox

Recent content on Rabidgremlin's Soapbox

blog.rabidgremlin.comRSS feed ↗214 posts

Latest posts

NPKILL - nuke old node_modules and .venv directories to free up disk space

Got a ton of old side projects, disk spice getting tight? NPKILL is the tool for you! Just run npx npkill and it will scan your system for node_modules folders, list them by age and size and then you can nuke them with a single keystroke. To clean up your old Python virtual environments just run npx npkill --target .venv and off you go.

Minimal devcontainer with Codex for messing around with AI stuff

This is my minimal devcontainer for playing around with AI stuff, using Codex. It includes Python, uv, Node, gh and the Codex CLI. Running in a devcontainer gives me a clean environment to mess with and further sandboxes the coding agent. To use create a .devcontainer directory in your project and add the following devcontainer.json file: { "name": "Minimal Codex And Dev Container", "image":…

Using Docker to run Manim in Jupyter notebooks

If you want to develop Manim animations easily the a Jupyter notebook makes as great working environment. However it can be fiddly to get set up. Luckily there is a pre-built Docker image that can get you up and running with two simple commands: cd <your working directory> docker run --rm -it -p 8888:8888 -v "%cd%:/manim" manimcommunity/manim jupyter lab --ip=0.0.0.0 In the console you will then…

Using Docker to run Jupyter notebooks

If you are messing with data then, you can&rsquo;t beat a Jupyter notebook as a working environment. Not only are they super easy to use but they are effective ways of sharing your workings and findings. Even better, the Jupyter project have a created a bunch of Docker containers that contain all the tooling you need which, makes getting up and running as simple as running a two simple commands:

Right-sizing User Stories

I was asked by a customer to give a talk about right-sizing user stories. Below is the summary I gave them. This is by no means an original bit of thinking but ideas pulled from a number of sources (1, 2), however it made a nice little summary so I thought I&rsquo;d post it. Form A User Story typically takes the form of: As <type of user> I want <some goal> So that <some reason> So what is the…

Docker: Cleaning up after yourself

I&rsquo;ve been doing a lot of work with Docker of late mostly for creating easy dev and test environments. One of the problems you come across when doing this, is that you land up with all sorts of orphaned images and containers which chew up disk space and systems resources. The following commands will give you a clean slate. Stopping all running containers, removing them and deleting any…

Google IO 2016 Highlights

Last month Google held it&rsquo;s annual Google IO conference. Not really a surprise but it was chock full off conversation and AI based tech which is all the buzz of late. Three bits in particular stood out for me. The first is the demo of Allo, their new chat app. The app itself wasn&rsquo;t particularly groundbreaking but the embedding of their new digital assistant tech (the Google assistant)…

The next two episodes in my creating a 2D game with Unity tutorial

Here are the next two videos in the series: The rest of the videos can be found here

Creating a 2D game using Unity

After much delay I&rsquo;ve finally started recording a series of videos on creating a 2D game using Unity. Here are the first two videos. If you want to play the game then check out the Run Bunny, Run! website Watch all the videos in the series here

Lego Mindstorms Colour Sorting Machine

Built this with the kids last weekend, using the Lego Mindstorms EV3 set they bought be for my birthday. It was the first project we have built without a set of instructions.

How to create a private key for signing Android apps

To create a private key to sign your Android apps with, you need to run the keytool command (installed when you install a Java development kit) as follows. keytool -genkey -v -keystore myandroid.keystore -alias myandroidkey -keyalg RSA -keysize 2048 -validity 10000 -dname "O=Acme Ltd" Replace Acme Ltd with your company name. When the tool runs it will prompt you for a password and then generate a…

Creating an abstract desktop wallpaper in Blender

Writing a game using PICO-8 – Part 2

Finally got over a cold so I could record part 2 of my tutorial :) You can play the game here on the PICO-8 website

Writing a game using PICO-8 – Part 1

My first attempt at YouTube video/tutorial thing. Gonna try to get one of these done a week&hellip;

Another interview

Got myself on the radio again last week talking about &ldquo;scrubbing yourself from the Internet&rdquo;. Here is the audio clip: And here is a link to Daily Mail article about the Oblivion tool

Simple script to monitor Postfix

This script uses qshape to print out the details of deferred emails in Postfix. Useful when monitoring delivery issues. #!/bin/sh while: do sudoqshapedeferred sleep30 done

Procedural content generation: Creating a universe

23114, 584, 46931, these three numbers were used to create the entire universe for Elite. Released in 1984, Elite featured cutting edge 3D graphics (with hidden line removal no less) and a rich universe of 2048 planetary systems, spread across 8 galaxies, each with a unique name, offbeat description, technology level, government type and even an economy. It was an instant hit and it set the…

Tutorial: Creating your first Unity Android App [2015 Update]

This is a quick, step by step guide to creating a simple app for Android using Unity. This tutorial is for windows but other then the install instructions it should work for other platforms. By the end of this tutorial you will have created an app that displays a red spinning cube on a blue background running on your Android device. Setup the Android SDK To create an Android app you need to…

Procedural content generation: L-Systems

After watching this fantastic interview with Sean Murray about No Man&rsquo;s Sky I&rsquo;ve been inspired to write a bit about procedural content generation. I&rsquo;ve been tinkering with procedural content generation for years, using it for everything from creating games levels to generating sample data for testing and it is a fascinating subject. So what is procedural content generation?…

Hacking Interview on Radio Hauraki

Last Friday I got to do live radio for the first time! Since I didn&rsquo;t come across as a complete idiot I thought I&rsquo;d share the clip with everyone. The subject was hacking and the clip was recorded during the breakfast show on Radio Hauraki. Unfortunately I miss-heard the question about the Whaleoil hack and landing up talking about the likely attack vector for The Fappening (the August…

Project Frankensapien – Part 1

Years ago I was given a shiny, silver Robosapien. It&rsquo;s an awesome humanoid robot controlled and programmed with an infrared remote. Unfortunately with 90+ commands and functions the remote is pretty cumbersome. So I always intended to see if I could put something together to control him from a PC, but I never got around to doing it. My 5 year old is in his first year of school and since he…

Random pic: Morning Moon

It looked a lot bigger to the naked eye&hellip;

Tech Tip: Start a simple web server

Python ships with a handy little web server that will serve up the files in the folder from which it is run. This is really handy for development. Run the following command to start the server: python -m SimpleHTTPServer Or if you are using Python 3, run: python -m http.server

Y is for YouTube facts and figures

YouTube has changed the way we watch and shared videos so I thought that I would collate some fun facts about YouTube for this post. First off YouTube was created by 3 PayPal employees: Chad Hurley, Steve Chen, and Jawed Karim. The site was officially launched in 2005 and this was the first video ever uploaded to it (a video of Jawed at the zoo): A year later YouTube was purchased by Google for…

Z is for Zentraedi

In the mid 80&rsquo;s my tweenish self was introduced to something that blew my mind and that was Robotech. I (and most of the western world) had not encountered Japanese animation or Anime before. With it&rsquo;s complex story arc, the alien Zentraedi intent on wiping out humanity, cool transforming robots and awesome mass battles, I was hooked. When the story started to span generations of…

U is for Unity

If you want to make games, Unity is a tool you should look at. It allows you to easily create games (both 3D and 2D) for a variety of platforms including Windows, Linux, Mac , Web , iOS, Android and Windows Phone. It also has a free version and if you ever need the pro version it is reasonable cheap to buy or subscribe to. Check out some of the features in the upcoming version:

V is for Velocity

Physics based games, especially on mobile devices have become de rigueur. It&rsquo;s pretty amazing what can be done with some simply math. I recently came across this game mechanics site which provides short examples of different game mechanics, algorithms and effects. Many of these are of course physics based and involve velocity. Some of my favorites: Basic spaceship motion Lunar lander…

W is for White Rabbit

I&rsquo;m late, I&rsquo;m late , I&rsquo;m Late&hellip; with this blog post :(

X is for lots of things

It turns out X is for quite a lot of things: In mathematics, &lsquo;x&rsquo; is commonly used as the name for an independent variable or unknown value. &lsquo;x&rsquo; is used to signify the multiplication operation when a more appropriate glyph is unavailable. As a result of its use in algebra, X is often used to represent unknowns in other circumstances (e.g. Malcolm X). In the Cartesian…

T is for Taxes (and delayed blog posts)

Been working on my taxes so have been a bit slack in posting However I thought that I would share this graph which shows where all your tax money was planned to go for 2013&frasl;2014 (if you are New Zealander that is): Source http://www.interest.co.nz/news/64515/budget-2013-summary-all-spending-plans Pretty much what you&rsquo;d expect, Social Welfare: 27%, Health: 17.7%, Education: 15.3% which…

S is for Strange conversations

I use public transport religiously. It means we are a one car family which saves a bucket of money and helps out the environment to boot. Even better I get to walk about 40 minutes a day which helps with the waistline! But there is an added &ldquo;bonus&rdquo; and that is: strange conversations with strangers. Over the years I have had some seriously good ones, point in case, two days ago I was…

Q is for ???

Well, I was going to blog about Quaternions and how Unity really makes it easy to do 3D stuff without you having to have a deep understanding of math but I ran out of time! So instead here are a list of things starting with Q that I had no idea existed Quassin Quassin is a white bitter, crystalline substance extracted from the quassia tree. It is one of the most bitter substances found in nature…

R is for Role Playing Games

Traylix waited, he wasn&rsquo;t nervous but he was pretty sure that something was about to go wrong; it always did. He glanced over to the prince and the two marines standing further down the alley. They all wore long, shapeless cloaks with the hoods up, as did he. Hopefully this subterfuge would deprive any would-be assassins an obvious target. From up the street Traylix heard the sound of a…

P is for Productivity in New Zealand

It costs 40c to produce every dollar in New Zealand which, is pretty astounding figure. A report released this week by the New Zealand Productivity Commission tries to determine why New Zealand&rsquo;s GDP per capita is generating over 20% below the OECD average when (based on it&rsquo;s broad policy settings) it should be generating 20% above the OECD average. It identifies a number of causes:…

O is for Open Source I use (and create)

Today I thought I&rsquo;d go through some of the Open Source software that I regularly use. The Open Source movement is a interesting one, basically it calls for the source code of software to be released alongside the software. This allows anyone who can (or needs to) to modify the software and pass these changes back to the community thus benefiting all. Traditionally Open Source products have…

N is for Ni

Busy day, so no deep and meaningful post today :( Instead I give you a clip from one of the funniest movies ever:

M is for Monkey – the evilest testing tool around

I do a heaps of Android development and whilst it appears straightforward there are quite a lot of subtleties, particularly when dealing with threads and UI updates, that generate all sorts of app crashes. Unfortunately these race conditions are often very hard to reproduce. Thankfully (and evilly) we have the monkey testing tool. Set it loose and it frantically taps and swipes away, switching…

L is for Logo and wee little turtles

Logo was one of first programming languages (after BASIC) that I really learned in depth. The most famous aspect of Logo is its turtle graphics which simulates a tiny turtle to which you can give commands such as forward, backward, left turn and right turn. As the turtle moves on the screen it draws a line behind it. With its graphical feedback, turtle graphics is an ideal way to introduce people…

K is for Kinect Fusion & 3D selfies

I&rsquo;d thought I&rsquo;d give the Kinect Fusion demos a try. Kinect Fusion allows you to take 3D scans of things by waving your Kinect around. It&rsquo;s designed to work with the desktop/Windows version of the Kinect but I&rsquo;d thought I&rsquo;d give it a go with the Kinect from my old XBox 360. Turns out it works pretty well. The resolution is pretty low but if you were using one of the…

J is for Jasper – control anything with your voice

So I bought a Raspberry Pi a couple of months ago and I&rsquo;ve been having all sorts of fun trying out different things. I&rsquo;ve created a wifi packet sniffer to track mobile devices and turned it into an arcade game machine, all sorts of interesting things. Jasper is going to be my next weekend project. It basically lets you build your own J.A.R.V.I.S (from the IronMan movies). Here is a…

I is for Insel – an fantasy setting I’m working on

Insel is a fantasy setting I&rsquo;ve been working on for a role playing game. Imagine a island covered by a crowded, renaissance city surrounded by a vast ocean. In all of history no one who has left the island has ever come back. Metal is plentiful and intricate &ldquo;clockwork &rdquo; machines power the society. Food and &ldquo;wood&rdquo; is grown from fungus and giant mushrooms which are…

H is for Hosted network

Windows 7 and above has a neat feature called hosted networking. This allows you to turn your laptop into a wireless access point. This is very useful if you want to share your laptop&rsquo;s Internet connection with other wireless devices or (the reason I use it) for testing. To set up a network open a command prompt and run the following commands netsh wlan set hostednetwork mode=allow…

G is for Games I own

The last decade has seen a renaissance in board gaming. The Internet and crowd funding platforms such as Kickstarter have made it particularly easy to publish a game and 1000s of new games are released each year. For this post I thought I&rsquo;d go over my collection and talk about the games I own. Battlestar Galactica This game is based on the recent TV series. The players are the humans trying…

F is for Feature Driven Development

Feature Driven Development (FDD) is my favorite Agile methodology. I have been using it for a number of years and it works really, really well. Here is a quick intro to FDD that I wrote a while back. An introduction to Feature Driven Development Feature Driven Development (FDD) is an Agile software development methodology. It provides a simple 5 step process that focuses on the delivery of quality…

E is for Elastic band contraption

My eldest (currently 5) is big on &ldquo;making&rdquo; inventions&rdquo; and experiments. Last weekend he desperately wanted to invent something with engines. Not having any engines handy I figured we could perhaps do something with elastic bands. Googling didn&rsquo;t turn up anything too exciting but I did come across a picture of something from my childhood: a cotton reel with and elastic band…

D is for DNS

Alright, I thought I&rsquo;d do a quick blog on the DNS or the Domain Name Service? Why? Well because without it the Internet as we know it would not work and subversion of the DNS system is how Turkey recently blocked access to Twitter, Facebook and YouTube so it&rsquo;s very topical! First off you need to know that every computer connected to the Internet has a unique numeric address, kinda like…

C is for Code

I believe that everyone should be able to program a computer! Now I can see you all rolling your eyes but bear with me for a moment. We live in the Information Age, computers are everywhere and computer literacy is a skill everyone needs. Unfortunately most people stop short, learning to drive a computer but not really learning to use its full potential. Now don&rsquo;t get me wrong, I&rsquo;m not…

B is for Blender

I have tinkered with 3D graphics for years, using POV-Ray in the mid nineties and later Hash Animation:Master. However these tools were pretty limited or not widely supported and commercial tools costed (and still do) a small fortune which put them out of reach of hobbyists. So I was very excited when Blender was released in 2002 . With its commercial features and it being free (open source) the…

A is for Apathy

I started this blog way back in 2001, the 2nd of October 2001 to be exact (according to the Way Back Machine) However in the last year or so I&rsquo;ve been very slack at posting anything (other then my automated tweet logs). This is a shame because my blog does get a fair bit of traffic (about 5000 unique visitors a month) and contains popular posts such as my Creating your first Unity Android…

Tech Tip: Change AngularJS template delimiters

I have recently been doing some development with the Bottle Python web app framework. Unfortunately it&rsquo;s simple template system uses the same template delimiters as Angular (&ldquo;{{&rdquo; and &ldquo;}}&rdquo;). Worse you cannot change these delimiters in Bottle. Fortunately you can change them in Angular using the following: var myApp = angular.module('talkpoint', [],…