Building a Stand-alone JTAG FPGA Flasher

By Nulltek

Field Programmable Gate Arrays (FPGAs), are powerful programmable logic devices that are commonly used in high-performance / high-complexity low-volume electronic designs. FPGAs differ from many other programmable electronic devices, such as micro-controllers, as the software deployed to them doesn’t “execute”. This software actually configures the structure of the FPGA hardware, such that it can perform…

Creating modern C++ API docs using Sphinx on Read-the-Docs

By Nulltek

C++ is a language thats popularity has dwindled over the last decade. With the rise of powerhouse high level languages such as Javascript, Ruby and Python, alongside the advances in modern day compute hardware, it can be difficult to justify using a language like C++. There are a few exceptions such as extremely performant critical…

Rock Pi S 3D CAD and 3D Printed Enclosure

By Nulltek

I’ve had some fun this weekend designing a cheap remote backup server for my parents based on Armbian running on a Rock Pi S (stay tuned). However for such a versatile little SBC, there is a surprising lack of free CAD models in the wild. So, since I needed to design a simple housing for…

Designing Cheap ZoneMinder Network Cameras

By Nulltek

ZoneMinder is an open-source project used for managing and monitoring DIY surveillance systems. While this system is almost 2 decades old, it’s still actively maintained by a fairly large group of contributors. There are plenty IP cameras that can be picked up fairly cheaply, however when it comes to long term network security for these…

Dissecting an Aliexpress Scam

By Nulltek

Its not unusual to be thoroughly underwhelmed by the performance of any electronics acquired via aliexpress. The sellers often take some pretty optimistic liberties when it comes to performance specifications. This “12V 6A” switch mode power supply I purchased was no exception, I was curious, perhaps if I could even get 36W of power out…

Low-cost Hardware System Test using Jenkins in a CI pipeline.

By Nulltek

Continuous integration is a practice common in software development where a server will be used to build and test projects when changes are made. Historically these builds occurred over-night (‘nightly builds’), however with modern infrastructure this is no longer necessary. In current times CI servers build when triggered on VCS push hooks, or pull requests.…

Reflecting on Advent of Code 2020 Challenge

By Nulltek

I found out about the advent of code annual challenge from some workmates who were raving about how much fun they were having solving these daily tasks. Initially I wasn’t particularly interested in completing it myself since my spare-time was already saturated with projects, however my competitive alter-ego had other plans. So… 12 days behind…

Real-World Performance of Python LRU Caching

By Nulltek

Within the functools standard library, there is a treasure trove of easy-to-implement decorators to improve your functions. One of these decorators is the least-recently-used (LRU) cache. This handy function wrapper will remember the run-state of the latest x number of distinct function calls, this is handy when you have an time-expensive function that is regularly…

Building Specific Python Versions from source on Linux Mint 20

By Nulltek

If you come from a background in windows, and are an avid python developer, you may be used to chopping and changing python base installations. It can be quite jarring transferring to Linux development where python is much more closely integrated with the OS, and you generally don’t want to be using the system python…

Solidworks – mechanically accurate gearbox

By Nulltek

As an advocate of opensource, I’ve been using freecad as my day-to-day modeling software in recent times, which is actually a very powerful tool once you know how to use it. However in my professional and educational career, I have a wealth of experience using Solidworks. Looking back through some of my university backups I…