User Feedback Form Factor!


If a web site has users it is very likely the operators of the website would like to know when a user experiences a problem. Equally as likely if a user has a complaint or notices an error on the website the webmaster wants to know. It is totally amazing how many new web sites I have been to which don’t have a way for me to report some issue I’ve noticed. A couple weeks ago I added a report problem page to my random chat website. The link for that page can be seen right below the chat app. Not a single user has filed out the form, and I am guessing that is not because everything is perfect. I’ll be thinking of ways to try in crease the likely hood someone will report a problem.

Just today I added another way to get user feedback via a contact page. Links to this page replace some dead email and phone links on other places on the site. This should put stranger chat users at ease if they are wondering about the credibility of the site (those broken links were a bit sketch). All in all, these are just a couple minor improvements but I’m hoping that they are improvements that users will notice.

Since this is really meant to be a place for me to talk about the more technical side of the project. Before I do however, that was a nice segue to say that I’ll be adding a news section the the chat site soon. It will be a place to announce features and what not so I can keep this blog technical in nature. The news site will also be another great way for me to stay in contact with users about what’s going on.

Back to the task at hand. Here are some simple tech notes as there is not much exciting happening on these pages; For starts, these are super simple pages.. The forms are just boostrap 4 with a bit of jquey to submit. On the server, I’m sanitizing the form inputs, creating the email with pure python and sending an email to an email account. That’s all mate.

Chat Bots Galor


I’ve been playing with some fun new toys and decided to build a little website. The purpose is to allow people to interact with the chat bots being developed. Behind the scenes I am using python3, aiohttp, chatterbot, and ParlAI. It’s a fun little project and I hope people check it out:

Random Chat Bot

You can choose any subject to chat with the bot about and even give the but a custom name (if that sort of thing makes your feel better). The logs of the chats are saved and posted for review. This first edition is still a bit rough but the chat bot project will server as a nice time filler when needing a break from other things.


Using youtube-dl and ffmpeg to forward streams


youtube-dl is a handy tool for anyone wanting to download or stream videos from youtube and many other sites on the internet. They have pretty decent documentation on how to download videos. You can also use youtube-dl and ffmpeg together to forward video streams and transcode them on the fly. Here is an example of using youtube-dl’s `–exec` option and ffmpeg to stream a video from youtube and forward it to some rtmp location.

youtube-dl -f best \
  https://www.youtube.com/watch?v=gHG9FRSlPxw \
  --exec "ffmpeg -re -i {} -f flv rtmp://localhost:81/test/test";

The previous example works great with youtube but I found issues trying to use youtube-dl’s `–exec` option. Another way of streaming video and audio from youtube-dl to ffmpeg is using a pipe. You can send the contents from youtube-dl to stdout and pipe that to ffmpeg. The following is an example of streaming an mp4 using a pipe.

youtube-dl -f best \
  https://mp4sonly.org/video/foovid.mp4 \
  -o - | ffmpeg -re -f mp4 -i pipe:0 -ar 44100 -f flv rtmp://localhost:1935/test/test'

Compiling Actionscript 3.0 on Debian Linux


I have written before bout Using Apache Flex SDK without Flash Builder.  In this post I will cover how to install Java and the Flex SDK on Debian Linux so you can build your Actionscript 3.0 applications.

Compiling Adobe Actionscript requires Oracle’s Java but Debian 9 ships with OpenJDK by default. In my experience Flex and Actionscript applications require Oracle’s JDK to build. You can install Oracle’s Java 8 JDK and compile your Actionscript projects on Debian stretch. To install Oracle’s java on Debian, download the JDK and accept Oracle’s license agreement. You can download java from Oracle with curl by setting the accept license header. The following bash snippet shows how to instal Java 8 and the Flex SDK on Debian Linux.

$ JDK_URL="http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz"
$ FLEX_SDK_URL="http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip"
$ apt-get install java-package
$ curl -H "Cookie: oraclelicense=accept-securebackup-cookie" \
  "${JDK_URL}" \
  -o jdk-8u144-linux-x64.tar.gz;
$ make-jpkg jdk-8u144-linux-x64.tar.gz
$ sudo dpkg -i oracle-java8-jdk_8u144_amd64.deb
$ curl "${FLEX_SDK_URL}" -o flex_sdk_4.6.zip
$ mkdir -p ~/.local/lib
$ unzip flex_sdk_4.6.zip
$ mv flex_sdk_4.6 ~/.local/lib/

You should now have the Java JDK and the Flex SDK installed and be able to compile your Actionscript 3.0 applications on Debian Linux.

Using Apache Flex SDK without Flash Builder


Adobe Flash Builder costs money and (as far as I can tell) is basically just an eclipse plugin which calls into into the Apache Flex SDK. I used Flash Builder to get up to speed with what all is going in the Flash world these days. I had to sign up with for a trial when I installed it. The trial expired and I was left with a couple projects I was unable to access. This post describes the steps I took to build Flash Builder projects without Flash Builder. The solution decided to go with was to use the Apache Flex SDK and it’s Ant tasks.

The reason I’m looking into Flash in the first place is to get some streaming video and audio going. These days Adobe’s RTMP and RTMFP protocols are quickly becoming replace by open standards like WebRTC. For that reason, and because I generally shy away from IDEs,  I decided to forego the proprietary Adobe license and figure out how to build my projects using only the open source Apache Flex SDK. After starting down this path, I quickly realized there seems to be a standard way others do this using the Apache Ant build tool.

Installing the flex sdk on OSX consists of simply downloading the SKD’s zip file and extracting it to the folder of your choosing. There are probably several ways of installing the Apache Ant. I already use homebrew so choose to just run:

brew install ant

At this point all the dependencies needed required to compile a Adobe Flex Builder project without Flex Builder should be satisfied. Assuming the default project layout which should look something like this:



The process of adding an Ant build if fairly simple. You’ll add build.properties and build.xml files to the root of the project. The build.properies file should define anything which might change in different build environments. In this this case, the location of the Flex SDK is something that will probably be different from one build machine to the next.


# change this to your Flex SDK directory path

# this points to your project's src directory
# {$basedir} is a default variable that can be used in any Ant
# and it points to the project's root folder [ flex_ant_pt1_Tasks ]
in this case
SRC_DIR =${basedir}/src

# points to the project's libs directory
LIBS_DIR =${basedir}/libs

# this is the folder we want to publish the swf to
DEPLOY_DIR = ${basedir}/bin-debug


The build.xml file contains the actual build instructions for Ant which are described as a series of steps similar to a Makefile but in fancy XML.


<project name="testClient" default="wrapper">
   <property file="build.properties" />
   <taskdef resource="flexTasks.tasks" classpath="${FLEX_HOME}/ant/lib/flexTasks.jar"/>
   <target name="init" depends="clean">
      <mkdir dir="${DEPLOY_DIR}" />
   <target name="compile_swf" depends="init">
      <mxmlc file="${SRC_DIR}/testClient.mxml" output="${DEPLOY_DIR}/testClient.swf">
         <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
         <source-path path-element="${FLEX_HOME}/frameworks"/>
   <target name="wrapper" depends="compile_swf">
        <html-wrapper title="testClient" file="testClient.html" height="100%" width="100%" application="app" swf="testClient" history="true" express-install="true" version-detection="true" output="${DEPLOY_DIR}"/>
    <target name="clean">
      <delete dir="${DEPLOY_DIR}" />

After this run ant and the build too will build the project.

I’ve created and example project on github to illustrate the process.

Installing Flash Builder on Mac OS Sierra


Installing Flash Builder Pro 4.7 on Mac OS Sierra 10.12.4

Here are a few notes about installing Flash Builder Pro on OSX. Adobe Flash Builder 4.7 software is a development environment for building games and applications using the ActionScript language and the open source Flex framework. Using Flash Builder can help you get up to speed with the latest from Adobe and Flex, however it does cost money. There are alternatives if you want to use Flex without paying for the flash builder license. If the license is an issue look at the open source Flex SDK.

  • Install the Creative Cloud desktop app  which requires you to make Adobe Creative Cloud account.
  • Install Flash Builder Pro from the create cloud app.
  • Install Java 6 for OSX
  • Create a script to run flash builder with java 6. Open the file /Applications/Adobe Flash Builder 4.7/runs.sh and enter these contents:
/MacOS/Adobe\ Flash\ Builder\ 4.7 -vm /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
  • Make the script executable: chmod +x /Applications/Adobe Flash Builder 4.7/runs.sh

You can now launch Flash Builder Pro via the run.sh script. 🙂