Author: virantha

28 Dec

Final Version of the Enigma in Amaranth HDL

1   Optimized Enigma Implementation

The first part of this series described the background of the Enigma Cipher Machine with the following datapath:

plugboard

Complete encryption/decryption path

In this post, I'll wrap up this series with the final, optimized version, building on the work from Part 2.

You can find …


22 Dec

Version 1 of the Enigma in Amaranth HDL

1   Enigma Implementation

The first part of this series described the background of the Enigma Cipher Machine with the following datapath:

plugboard

Complete encryption/decryption path

In this post, I'll take a quick dive into how I implemented a simple version of it using Amaranth HDL. While there is a …


19 Dec

An Enigma I Cipher Machine on Skywater 130nm Via TinyTapeout

gds

My final GDS for the Enigma machine (source available on github)

I stumbled across TinyTapeout offering very low cost chip shuttles last month, and decided I had to get on their next shuttle in March 2025. For the early-bird pricing of US $150, you can design and tapeout a (small …


01 Apr

Client-specific DNS and DHCP settings with Dnsmasq and Edgeos / Edgerouter

I have my Edgerouter configured to hand out static leases for all my network clients using Dnsmasq, which also automatically puts an entry into the DNS with the client name. The Edgeos configuration for this is relatively straightforward:

dhcp-server {
...
    shared-network-name LAN1 {
        authori …

20 May

Best Docking Stations for Apple MacBooks - Thunderbolt 3 or USB-C?

The state of I/O standards these days can be confusing, even for experienced engineers, and this article attempts to explain some of the intricacies involved in picking the right docking station for your needs.

I recently upgraded my five year old MacBook Pro to a newer model with Thunderbolt …


04 Apr

LEGO®'s new SPIKE Prime BluetoothLE Controlled Robotics Kit

Note

Updated 4/9/19 with some new information regarding the sensors from newly available datasheets.

Lego® just announced their brand-new (as of April 2019) robotics education kit, the SPIKE …


30 Mar

BrickNil - Control LEGO Bluetooth Sensors and Motors with Python

BrickNil [*] provides an easy way to connect to and program LEGO® Bluetooth hubs (including the PoweredUp Passenger Train 60197 and Cargo Train 60198 sets, and the Lego Duplo Steam Train 10874 and Cargo Train 10875 ) using Python on OS X and Linux. This work was inspired by this EuroBricks thread …


30 Mar

Setting up a Raspberry Pi with Python 3.7+ using Ansible

Here's a set of Ansible playbook files to do an unattended compile of Python 3.7+ with SSL on a headless wifi-connected Raspberry Pi. A recent project of mine (bricknil) uses 3.7, and it was a little frustrating to get the default 3.5 upgraded on my Raspbian image …


28 Sep

Part 3 - Building a Fast Event-Driven Simulator for Concurrent Systems of Hardware Processes Using Curio and Python 3.6

This is the third in my series on using Curio to build an event-driven simulator for hardware processes. The first two parts can be found here: Part 1, Part 2. We're going to use the simulator framework to implement a distributed and concurrent hardware palindrome checker in less than 50 …


27 Sep

Part 2 - Building a Fast Event-Driven Simulator for Concurrent Systems of Hardware Processes Using Curio and Python 3.6

This is the second in my series on using Curio to build an event-driven simulator for hardware processes. (see Part 1 for the first article)

1   Enhancing the Simulator Framework

Now, we're going to make this framework a little bit more robust and less verbose when defining the system. In …


22 Sep

Part 1 - Building a Fast Event-Driven Simulator for Concurrent Systems of Hardware Processes Using Curio and Python 3.6

In this post, the first in a series of three, I'm going to show you how to build an elegant simulator of a concurrent system using the amazing Curio library from David Beazley that's built on Python 3.6's async coroutine features. I hope it'll provide a nice intro to …


28 Nov

How to use Python to generate extensions with a GUI for Moneydance 2017

This post describes some of my experiences writing a python extension for Moneydance, a cross-platform personal finance manager (an alternative to Intuit Quicken). I was originally attracted to this product because it runs on a Mac (albeit using a Java look and feel), uses Direct Connect to download transactions from …


07 Nov

PhotoKeeper: Usage guide

This script will take a source directory (say the contents of a flash card from a camera), scan all the image/video file EXIFs, and sort them into date-based folders in a user-specified directory. It will optionally only copy files that have not already been copied (deduplication per folder). Photo …


13 Oct

FundsGather -- A starter framework for scraping financial information

Currently, this program supports downloading transactions from Maryland's 529 College Savings plans and exporting to QIF, for import into your financial software like Quicken, Banktivity, or MoneyDance. An OFX/QFX plugin is also in the works.


06 Jul

Getting started with the Pokemon Trading Card Game (TCG) for parents

Growing up, I missed the window where Pokemon and its associated card game were hugely popular; I suppose my parents caught a lucky break, but then again, they did have to deal with my Transformers and GoBot toys all over the house!

As of 2016, I'm not sure if Pokemon …


23 Jun

Elegant command line parsing in Python using docopt, schema, and yaml

Both for my work and personal use, I tend to develop many command-line Python scripts that are very data-driven and configurable. In Python, it's pretty trivial to use argparse to support complex argument and option structures, and then use the integration with configparser to allow one to write files that …


07 Apr

[UPDATED] Reverse engineering the remote control protocol for the Nissan LEAF (the new Nissan EV protocol)

Note

This is an update to my earlier post on the Nissan Leaf remote telematics. Nissan had taken their API offline in February 2016 to address the security vulnerabilities, and this post details how to connect to the new API that went into place in early April.

1   Nissan Connect …


10 Mar

An Example Provisioning of HACKT on a Centos 7 VM using Vagrant and Ansible

I recently needed to get an open-source circuit toolkit (HACKT)compiled and deployed on my local system. I already knew the C++ source compiled and installed fine on Linux, and didn't want to jump through the hoops to get it running on my Mac 10.11 (El Capitan) system, so …


12 Jan

Reverse engineering the remote control protocol for the Nissan LEAF (the new Nissan EV protocol)

1   Nissan Connect EV

Note

Update April 2016: Nissan has updated their API calls to actually use the user login information to authenticate instead of just the VIN. You can see a summary of the newer API in my new post here.

For those of you with a Nissan LEAF …


07 Apr

OneResumé - Usage Guide

OneResumé is a data-driven resumé generator for text and Microsoft Word documents. Write your resumé content in YAML and quickly and easily generate multiple versions and formats of your resumé using this program.

© Virantha Ekanayake. Built using Pelican. Modified svbhack theme, based on theme by Carey Metcalfe