My Weblog

  1. Continuous integration for Android with Jenkins, Docker and AWS

    Recently I've been setting up and documenting automated build workflows for each of my projects in Jenkins. The other day it was continuous deployment of my Jekyll website, and now its continuous integration for my Android projects. Read the full article...

  2. Continuous deployment of Jekyll website with Jenkins

    A couple of days ago any update to my website was followed by a quick flurry of manual actions to build and upload the changes. All of this though was a result of misplaced laziness, as I already had Jenkins setup for a bunch of .NET projects. Read the full article...

  3. Hacking together a cheap realtime power usage monitor

    I'm currently in the throws of hacking together a bunch of old laptops into a beowulf cluster, so when I wanted to monitor the cluster's power usage on my computer instead of paying out for a new-fangled gadget I did what I've been doing for the cluster and delved into my box of old electronics. Read the full article...

  4. Workaround for Angular2 event-binding in ag-grid cell templates

    Angular2 feels like a stable framework, but I was recently reminded of its beta status when trying to use the agnostic data-grid ag-grid to detect button clicks in a cell template - a simple enough task in the first Angular. It transpires that since the major re-write ag-grid is unable to access the Angular2 compiler at runtime, preventing it from being able to compile cell templates. Read the full article...

  5. Removing excessive headers in ASP.NET MVC

    In the course of hosting a website on Azure I thought it prudent that, as well as having followed developmental security practices, I ran a few automated security checks; especially since in the case of ASafaWeb it's a super simple process. Read the full article...

  6. Scraping and querying data from websites

    The 21st century has brought with it many technological advances, such as the mass surveillance of swathes of the world's population and light bulbs that can be controlled via a phone. What it still hasn't got around to though - possibly due to more pressing matters like world peace - is allowing data that is displayed on websites to be easily queried; instead we find ourselves at the mercy of website owners and their (hopefully tabulated) data embedded in pages of convoluted HTML. Read the full article...

  7. How ProGuard protects Android applications from reverse engineering

    ProGuard is Java class file shrinker, optimizer, obfuscator and preverifier which is baked into Android Studio's build process. Because it's part of the build process you have to go out your way to see what it actually does to your code and how it would look to someone trying to reverse engineer your application. Read the full article...

  8. PowerShell: Extract the summary table from RoboCopy's log file

    When automating the copying of files with RoboCopy I wanted to be able to interrogate the summary table at the bottom of its log file. Read the full article...

  9. Resizing text to fit into a container on Android

    A recent Android project of mine required the creation of a method for automatically resizing text so that it would fit snugly into a variable sized container. Once the optimum size had been found it could then accurately paint the text on a canvas. Read the full article...

  10. Conquering the Monolith beast with Android MonkeyRunner

    Though it may be generally considered cheating, when I was faced with having to endure repeatedly tapping the beast in the game Monolith on Android I did what every good programmer does and automated the task. Read the full article...

  11. Why you can't recover your KeePass password

    It was a pretty vexing problem I faced; not only had I forgotten my password for the KeePass password manager, but the developer of this tool had made a concerted effort to drastically slow down my efforts when repeatedly guessing what my password could have been via a technique called brute-forcing. Read the full article...

  12. Cracking Maths CAPTCHAs

    Following on from a previous blog post about cracking weak CAPTCHA implementations this time I played around with solving a more novel type of CAPTCHA, one that offers a mathematical challenge rather than the distorted words that we've all grown accustomed to. Read the full article...

  13. Getting Things Done (GTD) in KanbanFlow

    KanbanFlow is a simply decorated website with a clean design and an orientation towards, unsurprisingly, the Kanban methodologies. Thankfully, for someone like myself who likes its clean design, but has a preference for Getting Things Done I was able to shoe-horn GTD into the KanbanFlow website with surpising success. Read the full article...

  14. Cracking weak CAPTCHA implementations

    Asking users to prove that they are not a machine by requiring them to recognise words formed by distorted characters, known as a CAPTCHA, has grown in popularity in recent years; so too have the many implementations that can be easily cracked by a bot intent on automating the submission of swathes of forms or spam comments.... Read the full article...

  15. Map of every KFC restaurant in the UK

    Following on from my article showing how to create a map of every McDonalds restaurant in the UK, I thought that I'd do the same with KFC restaurants. The result of my findings is shown in the map below, which shows all 845 KFC restaurants in the UK... Read the full article...

  16. Undo functionality in paint applications

    I was working on a personal project that involved painting with an HTML canvas and wondered how easy it would be to incorporate 'undo functionality'? So I did a little research to see what people were proposing, and whilst I came across a few suggestions, none of them included an example of an implementation. Therefore I decided to look into the matter myself and share the result. Read the full article...

  17. Visual Studio: Customising Bootstrap at Build time

    I've been using Bootstrap for a number of my personal projects over the past few months and I've frequently found myself customising its theme by either overriding CSS styles or using Bootstrap's customisation tool. The problem is of course that the former lead to more CSS and the latter wasted time. Read the full article...

  18. Using data URIs in PHP

    I'm currently working on a JavaScript application that relies upon the HTML Canvas Element's toDataURL function to transfer the canvas' image data to my PHP API. However finding little functionality in PHP for dissecting/constructing data URIs I decided to write my own PHP class for handling them. Read the full article...

  19. Git Integration With The Bug Genie On Windows

    The project management software The Bug Genie has a useful module which integrates Version Control Systems (VCS) into its Issue Tracker to allow for source-code committals to be linked to tracked issues. Read the full article...

  20. C# ASP.NET MVC 3 Hyperlink Helper

    The other day whilst tidying the views in my personal ASP.NET MVC 3 (C#) project I ended up developing a HTML Helper that creates external hyperlinks, in an attempt to purge my views of hard-coded anchor tags. Read the full article...

  21. Adding an auxiliary input to my portable radio

    Like many people I love listening to podcasts, so when I was finally given permission to bring a small personal radio into a previous job I figured that instead of listening to the radio I'd use it to play podcasts from my iPod... Read the full article...

  22. Remote access to Visual Studio Development Server

    If you wish to extend the ASP.NET Development Server's scope beyond the local host and allow remote access, such as I did when wanting to test a website against a work college's browser, then I've put together a rough guide that will hopefully be of some help... Read the full article...

  23. Map of every McDonald's restaurant in the UK

    The map shows the position of all 1197 McDonald's restaurants dotted around the United Kingdom. Roughly correlating with population density... Read the full article...

  24. Magento: Displaying custom attributes in e-mails

    Recently whilst working on a project that used the Magento e-commerce Platform (version 1.5) I needed to display custom attributes within transactional e-mails. Read the full article...

  25. Ring-pull bowl

    After being inspired by Carlos Montana's "A La Lata" Candy Bowl and realising that I had a draw full of ring-pulls left over from a previous project I set about trying to make my own version of his ring-pull bowl. Read the full article...

  26. Converting a shapefile's projection

    Just recently whilst working on a project that utilized Google Maps I found myself needing to convert the projections for a set of ESRI Shapefiles that I'd acquired from the Ordnance Survey website... Read the full article...

  27. Detecting Ad Blockers

    We've all had experience with Ad-Blockers some time or the other. Whether you are the frustrated website owner trying to earn a little bit of advertisement revenue, or the internet user trying to navigate your way though the plethora of advertisements. Ad-Blockers have become integral part of browsing the web... Read the full article...

  28. Downgrade Dell Inspiron 1525 Laptop to XP

    I was asked by a fed up an owner of the Dell Inspiron 1525 if I could fix her laptop, which had recently acquired a habit of throwing up 'inappropriate material' when she least expected it (along with other less exciting problems). Having regularly worked with Microsoft Vista and all it's uniquely annoying features, and CPU hogging graphics, I thought it most beneficial to downgrade to Windows XP. Read the full article...

  29. How a USB Mug Warmer works

    As the festive period comes to an end I am amazed by how many little toys and gadgets are strewn about the house. Amongst these I found a USB Mug Warmer... Read the full article...

  30. Pocket Graffiti Pen

    The Pocket Graffiti Pen is very easy to make, and allows you to spray your own Pocket Sized Stencils anywhere you want... Read the full article...

  31. Office Booby trap

    This is a fun little Booby Trap that fires objects when a trip wire is pulled. It is made from a few simple items that can be found around the office or home... Read the full article...

  32. Credit-Card Flower Box

    Turn your old Credit-Cards (or any plastic card) into a nice little flower box to grow your own mini flowers in. These are sure to lighten up your fridge, office desk or any other drab place that needs a little of nature's creations to lighten it up... Read the full article...