RSSAmplifier

Blog

JamesonNetworks Blog

jamesonnetworks.comRSS feed ↗108 posts

Latest posts

The Asymmetry of AI Attack and Defense

The Asymmetry of AI Attack and Defense Since its inception the internet has facilitated cyber attacks and mandated cyber defense. The internet was designed with resilience in mind, not security. Over time we've added kludges to delude ourselves into thinking we've built secure systems. The reality of what we've created is different. We've created systems so complex that no…

It's A Great Time to Be a Builder

It's A Great Time to Be a Builder I build a lot of software. In addition to this blog, I've written a CI/CD deployment system, personal chat software, personal budgeting software. Lately, I’ve been working on an aggregator of news stories that will take a story by URL, read the text content, format it into markdown, and then deliver the finished article as an epub ebook to my eReader…

Probabilistic vs Deterministic Computing

Probabilistic vs Deterministic Computing In the beginning, there was software. Software was deterministic. You could take some inputs, some source code, run the source code on the inputs, and get outputs. Those outputs, assuming the same starting conditions and computations applied, would end up the same. Multiply that by 1000s of times, and you have the modern software landscape. Abstractions on…

Programming Is Completely Different Now

Programming Is Completely Different Now I started my development journey around 2010. At the time, I was working for a company doing desktop IT support. This was boring. The way I made the work interesting was to automate it as much as humanly possible. I was starting to flirt with programming as a career. I'd always been "good with computers", but had designs on becoming a doctor. It turned…

What a Difference A Year Makes

What a Difference A Year Makes It has been awhile since I've been able to find the time and the motivation to write. The past year has been challenging for me and my family dealing with various health issues. It feels like the hits started around the last time of me posting last year and they really just didn't stop coming. Luckily, things are starting to slow down and we are hitting a…

Retroarch and Mupen64 on Rasberry Pi 5

Retroarch and Mupen64 on Rasberry Pi 5 I've got a birthday weekend coming up with lots of friends and I really wanted to get an emulator box up and going with four controllers so we could play games like we used to in 1996. I've had experience with Retropie since the Pi 3 days, and I figured a small sbc would be perfect for this task. While I've dipped my toes into emulation in the…

A Pancake Recipe

A Pancake Recipe This blog post will be a little bit different from other blog posts that I have created. I need to store a pancake recipe I've been making for my children on Sundays and I don't really have a better, searchable place for it. So, without further ado, here is a nice little pancake recipe: Read more...

Keeping Pace With Software Updates - Introducing the Developer Multitool

Keeping Pace With Software Updates - Introducing the Developer Multitool This blog is hosted on what is a relatively straightforward and standard stack. I use Django + Django Rest Framework for the backend and Angular for the frontend. There is a database hosted on Postgres. Celery runs a backend task box that depends on Redis. If you are keeping count, we are up to 5 critical dependencies. All of…

Tallying Up LOC Contributed

Tallying Up LOC Contributed git log --author="myemail@example.com" --since="365 days ago" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "Added lines: %s\nRemoved lines: %s\nTotal lines: %s\n", add, subs, loc }' Read more...

Evolutionary Git Command - Git Switch

Evolutionary Git Command - Git Switch Having been around for awhile, I've always used the command 'git checkout' to handle everything I do with branches. I was reading through a comments section the other day and discovered that there is a new kid on the block: git switch. Read more...

Rewriting a Git Commit

Rewriting a Git Commit git rebase -r <some commit before all of your bad commits> \ --exec &#x27;git commit --amend --no-edit --reset-author&#x27; Read more...

Environment Variable Files and Commands

Environment Variable Files and Commands export $(grep -v &#x27;^#&#x27; conf_file | xargs) && my_command Read more...

Creating a VM using Ansible

Creating a VM using Ansible Today we’ll look at a piece of automation I’ve been working on over the last few months. Inspired by the ease at which I can spin up AWS instances with custom software using the AWS SDK, my goal was to port that functionality into my homelab environment. To accomplish this, I combine ansible with some python and shell scripting in order to automate creating new machine…

Wrangling Software Complexity with FAI and Ansible

Wrangling Software Complexity with FAI and Ansible Over the last few months, I’ve been working on my local development stack. My previous blog post was about how modern software is driving me crazy. Since then, I’ve worked to modernize the way that I interact with software to get better gains from scaling my own work. This was all spurned by needing to move off of Ubuntu 20.04 for my production…

The Pace of Released Software Versions is Making Me Hate Software

The Pace of Released Software Versions is Making Me Hate Software So far today I&#x27;ve spent hours working to update a python project that was gathering a little bit of dust. My aim was to get it deployed to the latest version of Python, Django, and Angular. My preferred stack up until this point has been Django Rest Framework for web services and Angular as an SPA for clients. I maintain…

Avoiding Dependency Conflicts When Upgrading Angular

Avoiding Dependency Conflicts When Upgrading Angular There are a lot of times when upgrading Angular that certain libraries I&#x27;m using aren&#x27;t released when new versions of angular are released. My current example is trying to use ng2-file-upload. The library tends to lag behind angular releases and the install of it starts to require forcing dependencies. You can override the angular…

The Bash Wait Command

The Bash Wait Command Today I needed a script that would copy a file from AWS, but I needed to make sure script execution would stop until the file was copied. I discovered the &#x27;wait&#x27; command and used it like this: Read more...

Distribution Options for Cross Platform Python (Django) Apps - Part 1

Distribution Options for Cross Platform Python (Django) Apps - Part 1 I&#x27;m working on a method of distribution for a python application which I want to distribute in a cross-platform manner with the least headache possible. My goal is to target *nix environments, however, supporting both MacOS and BSD would be a huge plus. My application is a Django app which uses DRF and includes an Angular…

Ignoring Local Changes Via Git

Ignoring Local Changes Via Git In one of my repos, I want to make some changes to a file locally, but I want to make sure those changes don&#x27;t make it into my change set. My solution is to use git update-index. I can do so with the following command: Read more...

Updating Angular's Minor Version

Updating Angular&#x27;s Minor Version Today I was working on updating my angular minor version for a hobby project. I needed a command to quickly update and synchronize all of the deps to make my life a little easier. I found the following stack overflow post: Read more...

Tracking Down a Rogue Byte Order Mark (BOM)

Tracking Down a Rogue Byte Order Mark (BOM) AWS provides a service called EMR (elastic map reduce). This service is essentially a hadoop cluster configured via the AWS SDK which can run a series of steps. The steps that it run can either be homegrown jar files or commands / scripts passed to custom jars provided by Amazon. We are using the hadoop cluster to process very large data files (upwards…

A Useful SystemD Alias

A Useful SystemD Alias function follow() { sudo journalctl -u "$1@$1-*" -f -n 10000 } Read more...

Tailing a Log in Powershell

Tailing a Log in Powershell Get-Content -Path "C:\path\to\log-file.log" -Tail 50 -Wait Read more...

Leveraging AWS Secrets to Remove Hard Coded AWS Access Tokens

Leveraging AWS Secrets to Remove Hard Coded AWS Access Tokens We all know that AWS tokens are a source of potential breaches. In fact, it&#x27;s been <a href="https://www.bleepingcomputer.com/news/security/thousands-of-github-aws-docker-tokens-exposed-in-travis-ci-logs/">reported</a> and <a…

Using the C# SDK to Copy S3 Files Between AWS Instances

Using the C# SDK to Copy S3 Files Between AWS Instances This can be accomplished using the C# SDK and a method that will take our two client instances, our src and destination bucket information, and then performing a mulitpart upload in order to move the bits from one bucket into the other. Read more...

Converting an SVG to a PNG Using The Browser

Converting an SVG to a PNG Using The Browser A part of a change I was making involved exporting a PNG from the browser to a native email client using the Ionic Framework. My source image was an SVG file, and the SVG file did not render appropriately in many email clients. Since the SVG did not work, I needed to convert the SVG to a PNG file. I was able to do this using only natively available…

Migrating from Cordova to Capacitor - Part I

Migrating from Cordova to Capacitor - Part I At my job one of my responsibilities is maintaining an Ionic framework app that we use to deliver content to various customers. The app was built using Ionic 3 and over time has migrated to latest Angular and ionic 5. Over time, some cruft has built up in the Cordova world, and Google&#x27;s movement to the Level 31 API at a minimum means that some…

Solving a Cordova Build Issue

Solving a Cordova Build Issue When running the command to add android assets to a cordova build, once those assets are loading I see an error in which the Android SDK cannot be found using Android Studio. The solution is to specify the SDK location in a Properties File. Read more...

Thinking In APIs: Part I

Thinking In APIs: Part I Today I want to discuss what it means to both "think" in APIs and design software with an API in mind. A lot of what I&#x27;m going to discuss here will combine thinking from Test Driven Development with the knowledge I have gained from a decade of working on designing APIs. When a software developer works on any piece of software, they are designing an API that will will…

Pruning Docker

Pruning Docker So the other day my docker build server ran out of disk space. Usually, I use the following command to reduce its disk space usage: Read more...

Tracking Down Disk Space Usage

Tracking Down Disk Space Usage I&#x27;d like to start off by giving credit to the following SO post: Read more...

Removing the Clutter from a New Edge Tab

Removing the Clutter from a New Edge Tab If you are anything like me, you get into a programming flow and your productivity blooms. Once this happens, anything that seeks attention becomes a liability to that productivity. The worst offender is the Edge browser Microsoft provides. Edge, by default, will display a news feed whenever you open a new tab. So if you are working on a problem and you are…

Github's UI Based Conflict Resolution Can Cause Problems

Github&#x27;s UI Based Conflict Resolution Can Cause Problems When using the Github web-based conflict resolution, a user can mistakenly have branches merged that they did not intend to merge. Because the mistake occurs on the source-of-truth copy of the repository, a user does not have a chance to correct the issue before other team members could pull the errant branch. Github&#x27;s live editing…

Angular Issue Updating a Library from Version 10 to 13

Angular Issue Updating a Library from Version 10 to 13 I ran into a bug over the weekend updating some Angular dependencies in a few different projects. The Code Blogs has both a Django server component and an Angular library component that people can use to build a content management system. It powers this blog! Read more...

Visual Block Editing With Vim

Visual Block Editing With Vim It&#x27;s possible and easy to edit in block mode with Vim. The tricky part that I always forget is the fact that you need to use the Visual Block mode. You can enter this mode using the key combo: Read more...

The RIGHT Way to Install Pip on Windows

The RIGHT Way to Install Pip on Windows Download Python from Python.org site and then add the path of the Pip.exe which is installed with Python to your user&#x27;s PATH environment variables. You don&#x27;t need to use the pip install script from pypa.io. The pip executable is installed with the released version of Python. Read more...

Cryptic Errors I've Seen as a Complete Noob in Objective C

Cryptic Errors I&#x27;ve Seen as a Complete Noob in Objective C In my free time I&#x27;m working on implementing a low level spec that involves encoding and decoding strings with a custom alphabet. While this doesn&#x27;t sound too challenging, the reality is I&#x27;m a UI developer by trade, and lately I&#x27;ve only done work on state management and untangling insane webpack and Angular build…

Finding Your iPhones Unique Identifier (UDID)

Finding Your iPhones Unique Identifier (UDID) In Xcode goto Window -> Devices and Simulators with the device connected. The UDID is displayed on the device dialog as Identifier. Read more...

A Note for Others Pulled from the Play Store

A Note for Others Pulled from the Play Store <ul> <li>Remove an offending APK 100% by rolling the new version over the top of all release tracks</li> <li>Some Appeal links from Google <a href="https://support.google.com/googleplay/android-developer/troubleshooter/2993242?hl=en&ref_topic=3453554">do not work</a>. A working link is <a…

A Poor iOS Build Error With The New Build System

A Poor iOS Build Error With The New Build System Today I ran into an error building a SwiftUI project with Xcode. The error I received was a bit obfuscated, so I thought I&#x27;d mention it in case anyone else runs into it. Read more...

A Nice Powershell Extension Replace One Liner

A Nice Powershell Extension Replace One Liner dir *.html | rename-item -newname { [io.path]::ChangeExtension($_.name, "anyExtension") } Read more...

Creating Zip File Archives with Python

Creating Zip File Archives with Python Over the weekend I was working on creating an archive of folders and files that I store in a Django Rest Framework based application. I use Python on the backend and mount a directory that is stored on a NAS. I&#x27;ve been SSHing into the server to pull the files and logs that the DRF app creates, but I wanted to change this so I could do everything through…

The Anatomy of a Failed Software Project

The Anatomy of a Failed Software Project At this point in my career, I&#x27;ve participated in numerous projects. I&#x27;ve ended up working on projects that became abject failures. This post will try to capture what I think ultimately led to the project failures and try to lay out advice to future or current programmers on challenging products that have a chance of collapsing. Every collapsing…

Reflections on Ten Years of Programming (Part 1)

Reflections on Ten Years of Programming (Part 1) This will be series on all of the knowledge I have gained over the course of ten years in programming. I&#x27;m going to try and start with some of the largest topics and then move onto simpler items. The first and foremost piece of advice I can give upcoming developers is: Read more...

A Nicer Git Log

A Nicer Git Log git config --global alias.lg "log --color --graph --pretty=format:&#x27;%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset&#x27; --abbrev-commit" Read more...

Reactive Forms: The Continued Guide

Reactive Forms: The Continued Guide Angular forms are awesome! I&#x27;ve been using reactive forms in everything that I do, and I feel like the forms ecosystem for Angular is one of the strongest arguments to use it, and only it, when you start to build a front end project. Today, I&#x27;m going to walk through an example of creating a form for myself using a method that I think everyone should…

Q/A: Passing Data Between Components

Q/A: Passing Data Between Components New to angular and cant for the life of my figure out how to pass a button press between two sibling components. I essentially have a button on a header component that I want to change the width of a div on a side-menu component. Read more...

I'm Excited About SQRL

I&#x27;m Excited About SQRL SQRL is a protocol developed and released in the open by Steve Gibson of GRC from the period of 2013 to 2019ish. During that time, several aspects of the open protocol have been changed or adjusted since it&#x27;s initial inception. I&#x27;m an avid listener of Security Now! and I&#x27;ve been hearing Steve tell the SQRL story for many years. This past weekend, I got…

Is the AsyncPipe Useful?

Is the AsyncPipe Useful? For an introduction to the AsyncPipe, check out this article: Read more...

Prerendering Pages Server Side with Angular

Prerendering Pages Server Side with Angular Over the course of the last week, I&#x27;ve been working on trying to get my blog to render entries on the server, rather than forcing the pages to render in the browser through Angular. There are a lot of promising developments in the world of server side rendering with Angular as the platform, however, my experience has been that none of these…