Python WHL naming and platforms

Experimenting with Pypy, I wanted to try Panda3D - while its WHL builds OK,
attempting to install it generates an error about the platform -

$ pip install ./panda3d-1.10.0-cp35-cp35m-linux_x86_64.whl
panda3d-1.10.0-cp35-cp35m-linux_x86_64.whl is not a supported wheel on this platform.

Pypys CPython support keeps improving so I wanted to try it anyway - on the Panda3D forum I got a suggestion to try renaming the package.
A post on tensorflow[1] shows how to get pips supported python platforms, here's a snippet to list them:

$ python -c "import pip; print('\n'.join(['-'.join(platform) for platform in pip.pep425tags.get_supported()]))"

Here is some output for pypy3

$ python -c "import pip; print('\n'.join(['-'.join(platform) for platform in pip.pep425tags.get_supported()]))" | sort
pp3510-none-any
pp3510-none-linux_x86_64
pp3510-none-manylinux1_x86_64
pp3510-pypy3_510-linux_x86_64
pp3510-pypy3_510-manylinux1_x86_64
pp3-none-any
py350-none-any
py3510-none-any
py351-none-any
py352-none-any
py353-none-any
py354-none-any
py355-none-any
py356-none-any
py357-none-any
py358-none-any
py359-none-any
py3-none-any
py3-none-linux_x86_64
py3-none-manylinux1_x86_64

Unfortunately, the WHL doesn't work yet, even after renaming:

$ cp panda3d-1.10.0-cp35-cp35m-linux_x86_64.whl panda3d-1.10.0-pp3510-pypy3_510-linux_x86_64.whl
$ pip install ./panda3d-1.10.0-pp3510-pypy3_510-linux_x86_64.whl
Processing ./panda3d-1.10.0-pp3510-pypy3_510-linux_x86_64.whl
Installing collected packages: panda3d
Successfully installed panda3d-1.10.0
$ python -c "from panda3d.core import *"
Traceback (most recent call last):
File "", line 1, in 
ImportError: /home/stu/.virtualenvs/pypy-nightly-py3.5/site-packages/panda3d/libp3interrogatedb.so.1.10: undefined symbol: PyExc_ImportError

While this doesn't work, it's enough info to report a bug [2] - if that gets fixed then there are bound to be others, alternately it might just work.

[1] https://github.com/tensorflow/tensorflow/issues/7552
[2] https://bitbucket.org/pypy/pypy/issues/2664/panda3d-pyexc_importerror

Script to get Pypy nightly builds

Started a script to download Pypy nightly builds and create virtualenvs for them. https://gist.github.com/stuaxo/5d4c0363317a875617271a6d424abbba

Virtualenvs are at ~/.virtualenvs where virtualenvwrapper can find them and named by pypy branch - e.g.

pypy-nightly-trunk
pypy-nightly-py3.5
Downloads only happen when there are new builds, and will resume if they were interrupted.

Install favourite Windows apps with a Chocolatey Gist

I'm a big fan of the chocolatey package manager for Windows. While not perfect, it still saves a bunch of time.

Many people build meta-packages that install everything they need, but I feel this pollutes the package namespace. As an alternative, I've prototyped a gist that can be pasted and run to install packages I use.

https://gist.github.com/stuaxo/84480ee204a203002f59b68ffbfe82f9

Being a batch file, it's not as clean as.. well almost anything. Powershell would be a sane choice here, but I don't use Windows enough to justify learning it. There's also something quite fun about twisting batch files to do what you want. Hopefully this is useful for anyone that wants to use gist to store their own package list.

Dronetronics VJ Set, Taipei.

Here is a pic from my first VJ outing, for Dronetronics, in Taipei, back in December. IMG_0340_4-cropped Lars from Dronetronics got in contact 2 hours before the gig, to see if I had anything for a gig at a studio not far away.   I quickly repurposed my smilies test vis (see previous post) to be suitable for Drone Music.
  • Removing the smilies
  • Added functionality to change the graphic when a button was pressed
  • Removed the OSC control - due to how sensitive the APC Mini sliders were, it looked quite amateurish (as they pick up every jolt as you move).
  • Put in new graphics (here, I only had time to find some black and white ideograms of a skull and a 'warning') sign plus an "X" I drew in the two minutes before the gig.
  • Added an option for graphics to wrap around (in the taxi on the way to the gig).
In the end, it was a great learning experience VJing for the first time, from the tech through to the setup. With thanks to Dronetronics and the studio crew at UUMouth Studio.   Sourcecode for the vis will go up shortly.

Year Of Code

I spent a year on my own projects (+ travelling).   The focus was on creative coding and the tech around it, from learning about bezier curves and opengl, through to OSC and MIDI. Here are some of the things I was lucky enough to work on.

Modern OpenGL, OpenGLES and WebGL

I tried to devour every opengl, webgl and opengl es tutorial I could find.    The open source drivers turn out to be very strict, which found a number of bugs in tutorials, which I was later able to fix... Staring at a blank screen gives you a real appreciation for how good we have it in higher level tutorials. It was a real eye-opener how to see how much opengl has changed recently, which makes for a steep learning curve.

Shoebot.

Python Creative Coding Environment

Shoebot received many patches, including support for livecoding, porting to Gtk 3 and lots of work to make it easier to install.

In the runup to Libre Graphics Meeting 2016 we are continuing to consolidate this work.

VJing for Dronetronics in Taipei

Putting everything together, VJ'd for local Drone band "Dronetronics". The first vis was built with only 2 hours notice (!) so repurposed the Smilies vis, into something more appropriate for the dronetronics sound. The second vis was built in nodebox-gl and made heavy use of the image filters and effects it provides.