C64 open source software development in the 8-bit era

The experience of developing and sharing free/open source software for 8-bit machines in the mid-1980s.

READ MORE
C64 open source software development in the 8-bit era

5 templates for new Python projects

Python Templates

Kick-start your next Python project with the right template and establish good coding practices from day 1.

READ MORE
5 templates for new Python projects

Using Kubernetes for internal infrastructure

K8S dashboard

Tame the chaos of build, SCM, test and other internal development infrastructure with Kubernetes.

READ MORE
Using Kubernetes for internal infrastructure

Obsidian plugin development: cross-platform mobile/desktop testing

Debugging Obsidian

Testing and debugging an Obsidian plugin on multiple platforms.

READ MORE
Obsidian plugin development: cross-platform mobile/desktop testing

Python pip gotchya: 32-bit wheels selected on 64-bit systems if you have Visual Studio command-line environment enabled

pip win32 bug

This pip gotchya can cause difficult-to-troubleshoot errors.

READ MORE
Python pip gotchya: 32-bit wheels selected on 64-bit systems if you have Visual Studio command-line environment enabled

Deploying and using Windows containers with Gitlab CI

gitlab-docker-windows-visualstudio

Configuring a Linux-based Gitlab runner to support Docker-based builds is relatively straight-forward and well-documented. Doing the same with Windows is a bit less so. Here’s how to configure a Windows Server 2019 VM to host Docker-based builds with Visual Studio or other Windows-based tools.

READ MORE
Deploying and using Windows containers with Gitlab CI

Stream Deck icons for Visual Studio and Visual Studio Code

Themeable Stream Deck icon pack for Visual Studio and Visual Studio Code. Download from Github

READ MORE
Stream Deck icons for Visual Studio and Visual Studio Code

Themable icon pack for Stream Deck & Star Wars Squadrons

Themeable Star Wars Squadrons icon pack for Stream Deck. Download from Github

READ MORE
Themable icon pack for Stream Deck & Star Wars Squadrons

Themeable icon pack for Stream Deck Elite

A themeable language-neutral icon pack for Stream Deck with the stream-deck-elite plugin for Elite Dangerous. Download from Github

READ MORE
Themeable icon pack for Stream Deck Elite

Running Jekyll on Windows with Ruby 2.7

On Windows, Jekyll will not run out of the box with Ruby 2.7.x. A few additional steps are required. Unfortunately many of the guides out there are out of date and/or refer to tools that are no longer supported so here are the steps that worked for me as of the time of this post.

READ MORE
Running Jekyll on Windows with Ruby 2.7

Automate your work with the Microsoft Graph API and Python

Microsoft Graph

Automate tasks with Microsoft online apps from the command-line with Python.

READ MORE
Automate your work with the Microsoft Graph API and Python

Build Notes: Android AOSP for Raspberry Pi 3B+ with 7" LCD Touchpanel

Android AOSP on Raspberry Pi 3B+

How get the 7” HDMI touch display working with brobwind’s RPI 3 Android Pie build.

READ MORE
Build Notes: Android AOSP for Raspberry Pi 3B+ with 7" LCD Touchpanel

DevMock: Network Server Mocking Tool

DevMock is a network test tool that allows you to create “mock” servers with HTTP/HTTPS, SSH or telnet/socket interfaces that will provide responses to requests or commands that you define.

READ MORE
DevMock: Network Server Mocking Tool

JSON Web Tokens with Flask and Angular

A simple end-to-end example of using JSON Web Tokens (JWT) for authentication with token refresh in a Python Flask web server with an Angular front-end.

READ MORE
JSON Web Tokens with Flask and Angular

Embedding the Apache MINA sshd server

A simple example of embedding the latest version of the Apache MINA pure Java SSHD server in an application.

READ MORE
Embedding the Apache MINA sshd server

Moving to Github Pages

I’m moving all of my old site content over to Github Pages.

READ MORE
Moving to Github Pages

Fixing the “This PC Can’t Be Upgraded to Windows 10” issue for May update 1903 (for real)

Windows 10 Upgrade Failure

If you are enrolled in the Windows Insider program and have been hit with this message when trying to update to 1903 and none of the various other Googled solutions work, try this one from Windows support forum user “LenniL”:

READ MORE
Fixing the “This PC Can’t Be Upgraded to Windows 10” issue for May update 1903 (for real)

Native Android OpenCV Test

An example of image processing with OpenCV on Android with native code.

READ MORE

Android OpenCV Test

An example of image processing with OpenCV on Android.

READ MORE

MacOS OpenCV Test

An example of image processing with OpenCV on MacOS.

READ MORE

IOS OpenCV Test

An example of image processing with OpenCV on IOS.

READ MORE

Click setup tools example

The Click Python library supports creating command-line applications written in Python with robust argument and option parsing and many other useful features tha go above and beyond what is offered by other packages that attempt to fill the same need. This is a very simple example of a Python command-line utility using Click with a setuptools-based installer.

READ MORE
Click setup tools example

Create a reusable chart component with Angular and D3.js

Angular D3.js

Integrating D3.js with Angular to create reusable chart components. This is an updated version of the original post that covered integrating D3.js (version 4) with Angular 2. This version covers the latest Angular version (currently 4.2.4).

READ MORE
Create a reusable chart component with Angular and D3.js

Vintage C64 computing, OpenCBM and Raspberry Pi

Commodore 64 BSS

Get your C64 online with the help of the Raspberry Pi, OpenCBM and the ZoomFloppy.

Getting your C64 online and the OpenCBM working with Raspberry Pi is fairly straightforward, but there is a lot outdated info out there that might make it a bit confusing. This guide rolls up the basics in one place.

READ MORE
Vintage C64 computing, OpenCBM and Raspberry Pi

Implement a RESTful interface with Android Things and Raspberry Pi

Android Things (formerly “Brillo”) is a streamlined version of Android designed for small form-factor and IoT devices. Here is a simple example of a Things app that provides a RESTful web interface to control the state of an LED on a Raspberry Pi GPIO port.

READ MORE
Implement a RESTful interface with Android Things and Raspberry Pi

Lazy-loading content with angular-cli

A quick example of creating a lazy-loaded module with angular-cli.

Lazy-loading can dramatically improve the performance of your Angular 2 application by loading content only when the user requests it. This is a simple example of lazy-loading using angular-cli.

READ MORE
Lazy-loading content with angular-cli

Create reusable chart components with Angular 2 and D3.js version 4

Angular/D3.js

Integrate D3.js (version 4) with the Angular 2 component life cycle to create reusable charts and other visualizations that support animation and dynamic data.

READ MORE
Create reusable chart components with Angular 2 and D3.js version 4

Using Auth0 with Angular 2 and angular-cli

Auth0‘s standard Angular 2 quick-start uses SystemJS and loads the Auth0 Javascript files globally from index.html. That’s fine for demo purposes, but not ideal for production. I’ve created a github repo (and some additional notes in this gist) that demonstrates using Auth0 with an Angular 2 app generated with angular-cli. This example loads Auth0 as modules and lets Webpack bundle it with the rest of your Javascript.

READ MORE
Using Auth0 with Angular 2 and angular-cli

A “shrink-wrap” Python project template and development pattern

Javascript development certainly has its ups and downs, but one of the good things about its ecosystem is the ability to easily share projects and quickly get other developers up and running. With most projects, it is simply a matter of cloning the repo and running “npm install” and you are ready to go without needing anything else pre-installed on your system besides NodeJS/NPM. With python, it’s usually not quite that simple.

READ MORE
A “shrink-wrap” Python project template and development pattern

Cross-platform native 3D rendering engine for Windows, Linux, macOS, iOS and Android.

sg3-legacy

This is an old project that provides OpenGL scene and object management functionality. The goal was to provide a native core graphics library that would run on Windows, Linux, macOS, Android and iOS. It is written in C and provides compatibility wrappers around the OpenGL APIs to account for platform differences.

READ MORE
Cross-platform native 3D rendering engine for Windows, Linux, macOS, iOS and Android.

Python, LDAP and macOS

The Python LDAP packages (python-ldap and pyldap) mostly work on macOS, but if you try to use some options and APIs, you will run into trouble.

READ MORE
Python, LDAP and macOS

JWT authentication with Flask and Angular 2: a simple end-to-end example

JSON Web Tokens are a standard method of securing exchanges between two parties (such as web server app and client) that has a number of advantages over other methods of securing exchanges such as cookie-based sessions – enhanced security, less overhead and statelessness to name a few.

READ MORE
JWT authentication with Flask and Angular 2: a simple end-to-end example

RESTful Flask application quick-start

With the rise of the single-page application (SPA) web front-ends and mobile apps, the backend of many web applications is a collection of RESTful interfaces that provide JSON data rather than generating HTML. The rendering is up to the client side. While there are some drawbacks to this approach (heavier client, slower initial page loads, etc.), there are also a number of advantages, not the least of which is better separation of concerns since the front-end and back-end code are completely independent of one another.

READ MORE
RESTful Flask application quick-start

Cmder tip: enable forward slash completion

Cmder includes better command-line tab completion – normally, paths will be completed using the default Windows path separator, the backslash (“\”). But Windows has recognized the forward slash (“/”) as an optional path separator for a while now and there are instances where this might be desirable, especially if you switch between Windows and Unix-like environments (macOS, Linux) often as I do.

READ MORE
Cmder tip: enable forward slash completion

Debugging pytest in VSCode (without adding files to your project)

For debugging pytest executions, the official VSCode Python extension documentation recommends creating an additional file in your project and setting up a launcher to start the debugger against it. While this is simple, I really don’t like having to modify my project’s code or add source files just to satisfy my editor/IDE.

READ MORE
Debugging pytest in VSCode (without adding files to your project)

Debugging a Flask 0.11 app in Visual Studio Code

Debugging Flask with VSCode

Update July 30, 2017: a new simplified method that works for both Linux/MacOS and Windows with no changes to your Flask project required.

Visual Studio Code with the the Python extension makes for a great Python development environment – especially if you work on blended Python/Javascript web apps. Here’s how to debug a Flask 0.11.x (or later) app without having to add files or modify your project code. See “Solution 2” here for debugging an older version of Flask.

READ MORE
Debugging a Flask 0.11 app in Visual Studio Code

What’s new in Flask 0.11.x?

It had been a while since I last started a Flask-based project, so I decided to have a look at what’s. new in the current release. Earlier this year, Flask and several other Python web development projects were organized under the Pallets Projects open source community and governance model. Along with the move, Flask 0.11 was released with several improvements and new features.

READ MORE
What’s new in Flask 0.11.x?

Creating a web development environment for Windows that doesn’t suck

While it’s true that many open source projects consider Windows a second class citizen, the reality is that it continues to be the operating system of choice for most business environments and many developers find themselves with no alternative. But this doesn’t mean you have to settle for a poor experience.

READ MORE