My Sabbatical

Here is a list of projects I worked on while on the sabbatical.

Programming

DVD Website

I had myDVDs, a LAMP based web application., set up on a Linux box.

(myDVDs) – http://freshmeat.sourceforge.net/projects/mydvds

It uses hometheaterinfo.com source for DVD data.

Then one of the updates caused the data load to fail. I then tried to move the application to a new Linux box and found that the database credentials were tied to the previous box. I took the PHP code and put together my own version. There was a lot of functionality I really did not use. I ran this version for several years.

I decided I wanted to create my own version keeping it as simple as possible. My requirements were to be able to list out all my DVDs, easy data entry unless I had to manually type in the DVD details, search the list to see if I already owned a DVD.

So the new application would use Go, SQLite,JavaScript, jQuery for AJAX, Docker,JSON,

tools : liteIDE and sqliteman

I followed a tutorial on the Go language in the process setting up the environment. I find that to really learn a programming language it is best to write your own code, that is where you learn what you don’t know and find the limitations of the language. Since Go is a relatively new language, there were not a lot of native libraries. The libraries were usually an existing C library that was wrapped in Go. Since I wanted to keep my application simple I resisted adding libraries. The only library I added was one for SQLite, this would prove to be a stumbling block later. I decided to have two tables, dvds – the data from hometheaterinfo.com and collection – list of my dvds. I decided to carry the detail information rather than just the dvd ids in the collection table. So I started off writing the load data for the collection table. I extracted the data from the existing application in mySQL to a delimited file and wrote a load for it. Then I wrote the load for the DVD list. I had an old copy of the dvd list from hometheaterinfo.com. After having the load working it took quite a while to run the full dataset, so I made a parred down version. I then wrote the code to add dvds to the collection. I then went to hometheaterinfo.com for the latest version of the list and the delimited version was not available. There was an HTML version. I notified the maintainer of the list. I checked back every few days but the delimited version was still not available, the site eventually did have it back. In the mean time, I took the HTML version wrote a Go program to convert it to the delimited version. I now had a current version. Loading the latest DVD list was something I would only do periodically, so I was not that concerned about it taking some time. I coded the UI using Javascript and jQuery for AJAX. I had the ability to search the list by name or UPC, I could then add to the collection by clicking the DVD id. I also added an option to manually add the data. I have some independent DVDs that are not in the list. I then decided I wanted to be able to have the list on my phone so I also provided a JSON download.

Deploying

I have two linux boxes on my LAN. One is an old one running a 32bit Ubuntu version so I would not be able to run Docker. The other I created as the eventual successor, a 64bit Ubuntu. I started to set up the Docker container. The Go binary sits at about 15 MB. Now this is where the added library needed for SQLite rears its head. I cannot use the base Docker to run the application because the library needed is dynamically linked. I could create a Docker image using an existing Ubuntu Server image jumping the size from 15Mb to over 500MB. I then searched and found an option. BusyBox Ubuntu would have most of what I need. I copied the needed libraries to their own folders in the Docker project. I now had a Docker image that was only about 20MB. I then added a data mount. The data mount is where the SQLite file resides and where I stage the latest version of the hometheaterinfo.com DVD list. Once I moved the Docker image from my laptop to my server it came up without a hitch. The only problem I then discovered was that the load of the DVD list was going to take over two days to complete. I then opted to just run the import to SQLite from the command line, which completed in few minutes.

GoLang,SQLite,jquery for AJAX, HTML, CSS hometheaterinfo.com source for DVD data, Docker

Android App – DVD list

I then wrote an Android App to consume the JSON from from the DVD list website. It includes a configuration setup so I could change what computer it points. It has search by title.

Android, Java, SQLite,JSON

Android App consuming the CodeMash JSON

Just after completing the website and Android App CodeMash made the session data available as an API. I wrote a simple app to consume the data and load a local db and display the session data.

Android, Java, SQLite,JSON

Alexa Skill

I worked on an Alexa Skill. I had to think about how the Amazon Echo handles the skill request. Basically it communicates through JSON. It dawned on me that I was trying to think about it as a app but really you have to think about it as a webservice. Now it all clicked, I made progress in creating the skill and then in the process also figured out a different way of handling my data. I decided to write it in python. Python has the ability to take an array and slice it. Which is exactly what I need. Then I should be able to take the slice use the join and have a string to pass to Alexa to speak. I got the skill working on my own echo. Much later Amazon offered developers a new Echo Dot if they publish their first skill. I had not tried to publish my skill but after working through the process my skill is now published and I got a new Echo Dot. The skill is called “Stretch Count” Alexa will count for you while you hold a stretch. I had found that my mind would wander an I would forget my place. This skill keeps me on track. I am not sure how helpful it will be

Amazon Skill, AWS lambda function, Python

Langton’s Ant

I decided to try my hand at Langton’s Ant.

Javascript, HTML,Canvas

Godot

Years ago to get back into Java, I wrote a simple video game. I had found out about the Godot game engine and decide to port the game to it. Godot has a scripting language very similar to Python. I made several videos of showing the progress.

Godot, FontForge

Phaser

While doing the Godot work I also played with Phaser. Phaser is a Javascript library for writing games for the Web. I put together a page to try out different things. I wrote a sprite tester screen to see how a sprite sheet would animate. I made the graphics in Inkscape.

HMTL, Javascript, Phaser,Canvas,Inkscape

Python AI

I followed along with a video course I got in a Humble Bundle. The course was called “Python Artificial Intelligence Projects for Beginners.” I set up my main computer with the required libraries. I tracked down the data sets and ran almost all the code. Some of the processing was going to take way too long. I found it all interesting but I think it would too easy for someone to claim they are an AI expert and apply some of the techniques to get an answer, but they might not have the knowledge and experience to understand if the answer is even near to correct. I think over the next few years as AI increases in popularity there will be a number of people who “do AI” but not really know it. T

Python, Pynum,

Chuck

http://chuck.cs.princeton.edu/
I started looking into programming ChucK. Chuck is a strongly timed and concurrent language for music and audio. It is similar to C/Java with enough differences to make you question everything. I found that following along in a ChucK manual was better than trying to piece a coherent strategy from the website. The manual is systematic where the website would be better for reference.

Other

Some other projects I have done include a Android Podcast player. Coding some in PICO-8 , which is a fantasy game console. I wrote a check in application for my family reunion. Setup nginx for web development.

Courses

Great Courses

Science of Mindfulness

Elements of Jazz

Story Telling

Modern Electronics

Writing Great Fiction

Our Night Sky.

Building Great Sentences

Change and Motion (Calculus)

Udemy

Infinite Painter on Android

Blender Course 3D Modeling

Mastering Sculpting in Blender

Books

Essential Blender – Roland Hess

Animator’s Survival Kit – Richard Williams

Making Games With JavaScript by Christopher Pitt

The DC Guide to Creating Comics Inside the Art of Visual Story Telling – Carl Potts.

Understanding Comics by Scott McCloud

James Joyce – The Dubliners.

Figure Drawing for Comics and Graphic Novels by Daniel Cooney

Pale Blue Dot by Carl Sagan

The Hardware Hacker by Andrew “bunnie” Haung

Mitch Byrd’s Notes to Draw From.

Cartooning The Art and Business. Mort Gerberg

Art

Digital paintings,

Character drawings on my blog,

I created blender animation with my EOTR waving for Christmas.

I created a New Years blender animation

Nerd stuff

I set up an micro controller to work with Alexa /Amazon Echo

I learned a little about WebGL and WebAssembly

Attended CodeMash 2018 – four days

precompilers

FPV Drones

Alexa Skills

Blender 3D for Makers and Game Developers

Build an Arduino

Vic-20 revisted

Soldering projects

learn to solder kit, amplifier kit from Carl’s Electronics, oscilloscope kit, function generator kit, digital clock kit, LED Strobe Kit

I wrote an automation and robots article for my site

VCV Rack – https://vcvrack.com/

Arduino boot loaders

worked on guitar amp – repaired speaker.

I repaired iRiver E100 headphone jack

I designed and built an LED panel light

I built a Robot Car kit.

I assembled 3D Metal Model – F4U

I rebuilt aVM for keeping track of finances.

Dabbled with Wemos using Fauxmo

I built an 8 foot LED light for my living room.

I made videos called “Gary’s Gadgets” on youtube.

I moved my websites from an old linux platform to a newer linux platform one of the sites was WordPress

2 Comments on “My Sabbatical”

  1. I have no idea what most of that means. Sounds like you are enjoying yourself and that is what matters.

Comments are closed.