Monday, December 14, 2015

what is the nitrologic entertainment system?

The Nitrologic Entertainment System has not yet been publicly announced.

Sneak a peek at the work in progress developer docs here:

Saturday, December 12, 2015

what is bitcoin?

Bitcoin is a history (public 3 phase ledger) of the transaction of secret numbers.

How unique?

You have to trust the math. If there was a problem with the math it is likely it would have been exploited already or that errors would have been observed.


Bitcoin is as safe as best practise security protocols will allow.


Bitcoin has a history of being lost or stolen when stored electronically.


Banking bitcoins and keeping them safe is "bloody hard".


Petty cash only! Do not keep more than a few bitcoins. If you do use removable storage and keep under lock and key or in the chest of diamonds and rubies in the cellar.


In game currency is coming to a reality near you.



Bitcoin represents extreme privacy.

Like Tor it is governed by decentralised cryptographic principles.

Multinational arms manufacturing outside government jurisdiction private.


Information theory to date states information wants to be free.

Snowden wants transparent government and opaque citizens.

My life is transparent, is that not my liberty?

Friday, December 11, 2015

nano seconds

This week, struggling with time and synchronisation in the digital world, the author attempts a more academic ramble on the topic of audio production in search of literary avenues of maturation.


A computer is essentially a clock.

A conductor of an orchestra not so much.

When a computer is asked to generate an output signal at 60 hertz in order for our eyes to receive messages encoded in light it needs to use a period of 16 and a bit milliseconds between frames.

Another name for that particular bit is the vulgar fraction  in which a lone binary or decimal variable no matter how large can ever hope to represent with 100% accuracy.

In terms of audio the frequency is typically 44.1 khz which gives us a period of .02 milliseconds. 

Interestingly for those looking to synchronise audio and video updates, 735 samples of audio are required to accompany each frame when delivering 60 fps content.


Earlier this year I learned from Oculus Chief Scientist Michael Abrash that the modelling of light is significantly simpler than that of sound and unlike our optical receptors our listening holes operate on a higher plane. 

The implication here is that quality simulation in audio can represent an emotional and temporal connection with the listener via a nearly direct path to the conscious mind.

The work involved to feeding a signal of air pressure to our ears as convincing as the pixels hitting our eyeballs has in fact only just begun.

Since dawn of information age,  ray-tracing begat caustic global illumination begat light field rendering begat the wonders that is OToy


The term latency refers to the delay between transmission and reception. Typically it is regarded in units of time. A useful conversion when considering audio timing is that of distance.

Compared to light travelling at 3.0e8 meters per second, audio from speaker to ear travels at the more pedestrian 340 meters per second.

The lag from sitting 1meter away from your loud speakers is 3 milliseconds an easy number to remember when calculating the depth of cave, tunnel and canyon while shouting the word "echo!" at the top of one's voice.

The lag of an electron with a round trip of 4e7 meters to traverse the planet is 133 milliseconds.

In terms of conversation, the global village is only 45 meters in distance and audibly in theory is close to that of a single football field.

In terms of gaming, that is like 3 button presses away.

For musical and arcade dimensions the global village concept needs to be reduced from playing field to cricket pitch.

One hopes that magnetic attraction can afford a break with 3e8 constraint as we mine the galaxy for rare earth metals.



In an Xcode window behind my current Chrome session sits the decimated remains of Port Midi.

Decimation is a term for culling 1 in ten, popular with mafia digits and roman war dice.

It is a possibly a sane limit when refactoring any source file or project tree.

After sleeping on issues of units of time, I have had a quick peek at the remains and become quite irritated with the timestamp issue.

My clock source is a Yamaha QX7 Digital Sequence Recorder.

As master midi clock, it sends 24 pulses per beat and features a large rotary dial to control beats per minute. The output shows nano converted timestamp and jitter which is based on standard deviation from the tempo computed in nanoseconds.

If we trust the QX7 as a reliable clock we theorise midi plus usb plus operating system is causing on average .3 millisecond noise in the source. Linux testing will commence shortly...

As a lover of triplets I need to remind myself that this for purposes of synchronisation not quantisation.

Detecting such noise when using the midi bus for other purposes will also be of great value.


The story of a Tool support band having mixing desk set to master clock causing main desk to crash on cue live every night 27:02 minutes into main act is a soul destroying reminder of digital clock skew.

A computer using a single variable to compute time is a dangerous simplification.

As didactic binary stupification continues and the analog world fades from grasp time now requires vulgar fraction friendly denominator based timestamps.

It is intended that denominators be accompanied by timebase attribute for beat, 24th, decimate etc.


Unlike the denominator the numerator is expected to be integer.

int64_t numerator;
double denominator;

Just like nano meter measurements are required to locate a single sample on path of holes along CD spiral it is decided that instead of 32 bit milliseconds being the unit of interval, a combination of 64 bit numerator and 53 bit denominator should be a solid basis from which to tick our tocks.

"Bloody Hard"
- Satoshi Nakamoto


The Nitro Practise Session helps students practise and progress in musical skill.

It is intended to be used as teacher aide and self study gadget to give feedback on student practise sessions and encourage self improvement.

The interface is intended to use tone recognition as it's primary control interface and a fun R2-UknowWho style method of syntax to convey it's simple vocabulary.

Tools such as auto muting metronome and musical mime game will add small amount of scope when authoritarian level is set to relaxed.

It is intended that users of the Practise Session will improve time management when balancing the rhythms of music and daily life.

Help track weekly practise goals with time management function
  • Musical interface - play the notes A B C to interact with Practise Session interface 
  • Multi Instrument - scale and arpeggio rehearsal modes are instrument agnostic 
  • Expansion - provide SDK to allow application ecosystem and drive music community

Tuesday, December 1, 2015

Not this again

iPAD nitro dev day 

Today's target is an iPad original which has been in a deep sleep for a very long time and took what seemed 6 hours of trickle charge yesterday just to get screen to display the zero power error.

  • Purchase new iPad Cable NZ$30 
  • Charge iPad back from a brick 4h 
  • Charge iPad to actually boot 6h 
  • Reinstall Xcode 6.1 
  • Renew Apple Developer Membership NZ$149 
  • Undo Xcode 7 damage (see image above)
  • Resolving signing issues - 5 seconds (TFCFT)
  • Minimum target set at 5.1, blank application up and running
  • Apple receipt arrives, APAC region FTW.
  • First build #include not found; oh, this code has has not been here before...

Building iOS 

It sure is nice to be back on an iPAD. The 5.1 interface feels rock solid and shows up this long suffering Android user what a sticky mess Lollypop really is.

Android inherits a lot of rubbish directly from Linus, useless audio latencies and the need to "borrow" the user interface platform from elsewhere. Cue the stolen handbag warning slipping on massive Trolltech turd....

Oh that was nasty, not sure where that came from

New __IOS__ fixes in the build time is about 6 minutes and we have no known issues.

Linking iOS

When the going gets intrepid...

Just to make sure things were good on the tool front, we ensure monkey-x mojo2 bouncing aliens bounced on the iPAD original, and they did.

And just when you thought things were focussed we get diverted to try and win free swag on the inter-webs.

My Music Tech Design Entry

What I will build if I am selected(the more detail, the better!):

The Nitro Practise Session helps students practise and progress in musical skill.

It is intended to be used as teacher aide and self study gadget to give feedback on student practise sessions and encourage self improvement.

The interface is intended to use tone recognition as it's primary control interface and a fun R2-UknowWho style method of syntax to convey it's simple vocabulary.

Tools such as auto muting metronome and musical mime game will add small amount of scope when authoritarian level is set to relaxed.

It is intended that users of the Practise Session will improve time management when balancing the rhythms of music and daily life.

  • Help track weekly practise goals with time management function
  • Musical interface - play the notes A B C to interact with Practise Session interface
  • Multi Instrument - scale and arpeggio rehearsal modes are instrument agnostic
  • Expansion - provide SDK to allow application ecosystem and drive music community

Hard to pass up an electronics competition with this awesome axe as a prize:

Element14 are like Farnell but as is demonstrated here - rocking with star power.

Nitro iOS Linking Part 2

I need to keep reminding myself of the design pattern - the plan, which I have decided on.

Fat client, thin server, virtual cartridge.

The build of the client engine is done in volatile storage using cmake automation.

In the interests of cmake sanity we are trying to keep the bulk of build of the static 

So with that in mind we extend the automation to copy the simulator and universal release builds into our client projects and climb back into the cockpit.


A summary of this afternoons efforts will be posted in due course.


After much deliberation it has been decided to remove SDL from Android and iOS clients. The reason is a simple not fit for purpose.

Skill sharpening can be a good metric when designing components of a stack. It is lucky for me that running nitro as close to the metal as possible and the value I accord familiarity with native Android and Xcode development skills means a win win. A third win can be considered with tidy up of platform abstraction getting a nice prod.

Monday, November 30, 2015

SVG Test #1

While refreshing our knowledge of SVG we find smooth animation for duration of 2h and 20h OK.

The third line down, with a duration of 200h not so much.

The idea of an animation evolving over such a period seemed an obvious artistic design direction so it is a surprise for Chrome to say no-o-o-o--o.

duration precision test all three lines should match but precision fails on third

Sunday, November 29, 2015

finest moment

This is a screenshot of Guardian a game released by Acid Software in 1994.

First Generation Digital Linguists

Acid Software had it's roots in school hood friendship and the progressive creative environment that was the Selwyn College computer room.

Being a huge fan of your mates games made us all feel pretty grouse in school back in the early 80's.

I was such a big fan I set up shop with Mark years later so that we could continue to live the digital dream, and kill all aliens...

Half court basketball court in the quad was nucleus of all social interaction.

Sense of community when student radio station was broadcast from the library was typically excellent.

* as time passes it seems quite evident some of these people were to blame for our non-convergent independent streak.

We were I think lucky to be the first and possibly last generation determined and expected to let our hair down.

Mr Lowe was a maths teacher that led you along the path of logic with more charm and humility than anyone I have since encountered and one hell of a method when dealing with certain boy students who were inevitably complete dicks on a regular basis.

Mr Steele was the guy who allowed you to book an Apple][ computer to borrow for the weekend (typically a 2 month waiting line).

Anyways, enough with the name dropping and on with the end of the millennium.

The 16 Bit Grunge Generation

Unlike the beige coloured cricket players and the green monochrome pixels of the first generation, the second generation of home computers including the Commodore Amiga spilled colour and stereo sound on command.

We didn't stop playing 80's video games in the 90's but we did start publishing our own products internationally.


Including the programming language of champions Blitz2.

And for me, my finest moment in history of digital deposits made in 12 bit (4096 colour) video game period - the publishing of Mark Sibly's Guardian.

Recently spotted in the pages of this zarjazz book and other places of the net. Check out production values and the polygon count of that attract / intro!

End of Era

The Philips CDD 521 burner was $9800 investment in a string of CD32 titles for an underpowered game console that predated arrival of Playstation 1 and it's superior controller.

Both systems featured the all new "Shoulder Button" technology.

Unlike shoulder pads and leg warmers, shoulder buttons live on hurrah.

The shoulder buttons on the CD32 controller were brilliant.

The D-Pad that lasted 7.5 hours of game time before self imploding was not brilliant.

A decade that had began at full volume with Nevermind ended abruptly with Commodore and Cobain both imploding.

Thank goodness, the new millennium did arrive early with Ridge Racer and Mario 64 kickstarting an entirely new generation and grade of console entertainment.

Thursday, November 19, 2015

work in progress 2

Nitro V8 Adapter Cart

Google can be pretty funny with their names. The tool to configure V8 builds is called gyp which is such a lovely term, in just 3 letters the company philosophy is thereby enshrined.

  1. 1.
    cheat or swindle (someone).
    "a young inventor gypped by greedy financiers"
  1. 1.
    an act of cheating someone; a swindle.

I would consider it even more amusing if gyp was the underlying python management build system for their advertising engine. If sentient systems even need build system management layers....

Anyways, after expanding the main partition to use entire SD card gifting the filesystem with 24GB of free space, today may feature an error free build of the nitro V8 adapter on Pi2.

The build itself started an hour ago with the simple

make -j4 native

The nice thing about V8 is it has a big brother Chromium the browser technology of champions that will, down the track, provide an even more substantial challenge to our mash up plans for 2016.

man page

Linux is a man's world. From the command line type man man for proof.

Here is the boilerplate for the nitro man page.

For those that don't know me, the concept of a bitwise interface is intended to make you giggle.

Nitro V8 Pi2 Progress

OK, after 2 or so hours yesterday's build died during construction of the google tests.

I and the internet both have no idea of the cause so more time required before hitting build on that one.

Argument Encoding

There are two places so far I plan to use a json encoded string as function interface.

Both physics bodies and entities and I suspect materials are going to use constructors based on many arguments encoded in a json object.

The number of methods provided by the platform continues to grow but this will definitely be the last week before a self enforced API freeze occurs.

Files of Interest

The NitroSDK API in C header form can be reviewed here:

It is intended that every function that remains after next cull will be available via local binary, remote network and virtual proxy interfaces.

The only release scheduled in 2015 will be for Raspberry PI after which commitment will switch to manufacture of value added content.

Monday, November 16, 2015

work in progress

Todays blog will feature a train of disparate thoughts as I unravel a plan to get me to release.

New Target and Language Tables 

On realisation that Python holds top spot for Raspberry Pi developers I am going ahead this week and adding both Python and ECMAScript support to the Nitro Entertainment System SDK.

I have just added a read me and dreaming of a release before year's end:

The python support looks about as easy as an easy thing can be.

The V8 embedding for ECMAScript support is not so easy, but pretty exciting.

Evolving Concept

The Nitro SDK exposes both scene graph and frame buffer access points to a persistent meta-verse. 

The default home scene for the first release is likely to be a bench, an empty video game cabinet, a virtual 3D printer in the corner and virtual analogs to all devices discovered on the local area network with the nitro runtime installed.

The aim is to produce end nodes to allow creative potential to be applied and orchestrated in a realtime and immersive manner.

Mystical Lost Packet

Other vectors of research include the UDP-based Data Transfer Protocol or UDT4 to it's friends.

After success exchanging OSC packets with Derivative Touch Designer and Android Touch OSC (no relation) using plain UDP and a discussion about packet loss in the pub this protocol looks worthy of serious consideration.

3D Import

Like the Nitro3D API it seems wise to consider separation of file format for mesh and scene graphs with bones being replicated and or common to both.

The FBX importer got a few more improvements but not really functional.

Being undecided about the native geometry format we visit the very minimalist STL format, popular with 3D printer users and supported as first class citizen by the folks at

The Logical Mind

When exploring a space resonant points can indicate relationships.

A mathematician will recognise a common element and look to see if the equation from that point of view will simplify or add complexity when stating the equation.

A judge will iterate the woven relationships of a society's law in order to pass summary that is sound from all sides.

An the recreational programmer, well that is a topic for another day...

Here is a prototype from 6 months ago, with new foundation work complete a reconstruction period is nearly due.

Sunday, November 8, 2015

Soft Release Sunday

We begin with a picture of my project in it's current state (minus the new _gnu binaries).

The binary files in the SDK folder represent pre-release version of the Nitro Entertainment System.

Due to the nature of cross platform distribution we are still learning the ropes of best practise for binaries.

The targets in order of previous release schedule are:
  1. Raspberry Pi
  2. Apple Mac
  3. Windows 7/10
  4. GNU Linux
Some details of each of the platforms follows beginning with the star of the show our favourite kit set computer from the Kingdom of the U the Raspberry Pi. 

Raspberry Pi

This budget computer is in space. in  DIY arcade machines, on my desk in quantity, decorating shelves of millions of good intentioned bargain shoppers, and most importantly in the minds of millions of school aged creators tasked with exploring the new frontiers of the digital age and the internet of t.

Unlike the other platforms git-lfs is not required for Pi to use initial drop. The binaries have been tested on both Wheezy and Jessie (Raspbian Debian release names) and using the SDK should be a simple matter of clone and run including the use of a prebuilt monkey code compiler and a suite of tests demonstrating Nitro SDK performance with various languages.

The Nitro SDK does require C++11 which for Pi means installing g++-4.9 toolchain.

Available now is an upgrade to Jessie, recommended as it saves the hassle of installing the g++-4.9 toolchain manually on wheezy and has git-lfs support which may be required by future releases of the Nitro SDK for Pi.

Apple Mac

The NitroSDK initial release has following dependencies on Mac:
  1. MacOS 10.10 or above
  2. A current version  Xcode 
  3. git and git-lfs tools
With this configuration installing the Nitro SDK should be a simpler matter of clone and run.


The NitroSDK initial release has following dependencies on Windows:
  1. Windows 7 and above 64 bit only
  2. Visual Studio 12 (Windows 7) or Visual Sudio 14 (Windows 10)
  3. A current version  Xcode 
  4. git and git-lfs tools
With this configuration installing the Nitro SDK should be a simpler matter of clone and run.

GNU Linux

The binaries distributed with NitroSDK are designed to work with following:
  1. $HOSTTYPE = x86_64
  2. $OSTYPE = linux-gnu
  3. git and git-lfs tools 
For binaries to download correctly with git clone github's git-lfs extension is needed.

[edit] Due to git versions on Amazon Linux AMI separate _gnu and _deb editions have been released in which the _gnu binaries are not tracked with git-lfs. 

The _deb binaries are built on a Mint VM, the _gnu on an Amazon EC2 instance, both have not been tested for graphics.

To Be Continued...

Monday, November 2, 2015

pi@raspberrypi testing 2

Tasks before first release include copyright notices:

That list is missing the work in progress additions of portmidi, sqlite3, portaudio. 

The editor in use and a little odd on the C++ string handling.  Visual Studio Code also adds line status bars, still getting to know them, perhaps they denote health.

Code is an editor based on the atom and node github projects which for me are new shining lights on the horizon of cross platform goodness.

... a bit later

With portmidi and portaudio underway it is time to look at nitro rom design.

The first type of rom is a currently a dynamic library in native OS format coded in monkey language. The native formats being .dll, .dylib and .so for Windows, MacOS and Linux respectively.

The second type of rom is built using the C/C++ language directly. The first instance of these roms is an adapter rom based on the mame project and built using published cmake template.

The cmake build technology has made development of the proprietary core of Nitro Entertainment System a breeze. To use the same build chain for open source rom based work is going to be great and will play a big part of tackling some of the more significant future developments planned.

... a bit later

A meta-verse packed with historical data allowing virtual time travel.

Starting with some collections curated by yours truly of the year 1981.

Matrix white floor with crystal clear HD objects from my growing turbo squid license pool.

The unit model test is a box of sorts.

This arcade machine from 1981 has a great back story. Erased from history years later by a machine from the pinball dimension featuring a hollywood singularity of same name.

The purpose of these boxes was to allow youth to rank themselves among their peers on a public notice board called the High Score Table. 

A coin or credit is dropped in the slot at the front causing the machine to emit a loud and empathic greeting. 

A spinoff project is envisaged in which an Arcade Machine Orchestra performs coin drop sequences using both time and space connections to the meta-verse.

More project news coming soon on the new Acid Software facebook page.

Wednesday, October 21, 2015

pi@raspberrypi testing

With build issues behind me at last a fruitful 8 day week of API development for the new nitro game engine has it seems mile stoned with a suite of sanity tests for the Debian, Darwin and Windows targets.

This mornings tests on Pi2 target include PI itself.

The amount of error for sin of pi is a quick test to confirm 16 decimal places of accuracy math.

The next test confirms freetype engine is working by displaying a glyph from the Roboto-Thin true type face.

Freetype uses fixed point .6 units or (64ths) for subpixel accuracy. The ascii art here is a mask with * character meaning 8 bit saturation buffer for that pixel is not empty. Further tests for proper kerning to come.

The output of the following is audible and tests importing of samples from both .wav and .ogg file formats. Underneath my freeaudio engine loops, fades and mixes to audio device courtesy of SDL2.

Image codecs wired up and ascii tested for loading duties include png and jpeg.


Output from the 3D engine will be included in next blog once video recording feature is working (non ascii).

Some more info on the Nitro Entertainment System is here.

Wednesday, September 30, 2015

2K15 Design Faves

A video scrapbook of wonders from the year of our brother 2015.

Although intended for mainly historical purposes it is feared the lifetime of the following media is in fact a volatile variable.


The arms of Disney now reach into cyberspace. Ariel being drawn in 3space seems to blow the mind of this poor animator:

Glen Keane – Step into the Page from Future Of StoryTelling on Vimeo.

Clay model of unreleased Tesla. 

Back in reality a combination of hand chisel and automated router create a crafted machine.


Monday, September 14, 2015

knock knock knocking on server door

After noticing my experimental website had once again fallen off the web the log makes for some interesting reading.

I need to add a robots.txt file obviously, but most of the others look like some one trying to break in.

With captured IP in reply perhaps great vengeance and furious anger could be somehow vented.

Bonus points for spotting the reference to bad boy testp2(dot)czar(dot)bielawa(dot)pl

There is obviously more to hosting a domain than meets the eye.




Friday, September 4, 2015

Java Refresh reducing use of ignorance++

Due to impending job interview stasis, Simon brushes up his Java skills.

Extends Application

So Android has a class called Application, you add it's name to your main manifest application decl and voilà - a singleton object that represents lifetime of your application is yours for the managing.

A lot of Android tutorials jump straight to Activities and then go looking for something they need which they figure is a Service and the lifetime of the application starts looking like a right mess and before long....

I have now extended the Application class and, doh, if only I knew then...

Other Peoples Code

In the spirit of team work, I am using "other peoples code" today. Because Android is based on Java, which they stole in a similar manner to the way one would steal a handbag from an old woman, adding an SSH client to my productivity app turns out to be quite the delight.

Compared to the make hell that would have been C++ for this feature the jcraft jsch classes drop straight into project's source folder and voilà - we have ssh client connection already. As usual  third party source is always educational if you take the time to browse:

// Some Cisco devices will miss to read '\n' if it is sent separately.
byte[] foo=new byte[V_C.length+1];
System.arraycopy(V_C, 0, foo, 0, V_C.length);
io.put(foo, 0, foo.length);

Windows 10 Embedded (IoT) on Pi2

The Raspberry Pi 2 is a 4 core $50 computer that can now run a cutdown free version of Windows10 which Microsoft are labelling with the hideous acronym IoT.

The graphics drivers are work in progress but the leap from Windows CE 6 to this and the accompanying Visual Studio 2015 development environment sure feels sweet.

CommonProgramFiles=c:\Program Files\Common Files
CommonProgramFiles(x86)=c:\Program Files (x86)\Common Files
PROCESSOR_IDENTIFIER=ARM Family 7 Model C07 Revision   5, A
ProgramFiles=c:\Program Files
ProgramFiles(x86)=c:\Program Files (x86)


failure to engage

August 2015 turned out to be a rocky month.

Two phone calls from the Inland Revenue Department, an aborted attempt at an arts education, a serious period of rest and recreation leads us back to some quality time with BlitzMax and Monkey.

Last week featured a lot of Box2D experiments. The most fun being with a biped rag doll.

After measuring my height and other proportions on the office door frame I built the following simulation of myself.

This week the focus has been on using CMake as basis of new build system.

The following spinning cube on raspberry pi was a major mile stone yesterday as the C++ 11 requirements meant a little fiddling with a GCC 4.9 install on both pi required.

The CMake script builds static blobs of SDL2, Bullet and secret sauce for both Darwin and Debian Wheezy so Mac builds and runs from same build chain as the two pi.

Both raspberries have half their RAM allocated to ram disks mounted at /build.

Modifying the script for pi2 to use make -j 4 and clean builds are down to just minutes for the full stack.

Finally, I have added a new feature to my Monk editor so that the code tree can stay in sync with the cursor position.

Monk is a fork of MaxIDE the official BlitzMax editor I wrote while working for BRL. Although it can run on a Pi X session or in Windows I only use it on Mac.

It has quick keys to rebuild my experimental monkey fork called nitro. It is due for some deployment chops soon and of course full control of the automated build system, see current master plan...

Playing with IoT on Windows10 has been a real eye opener...

And I am more than excited about the imminent arrival of Monkey 2.

However, this month includes following items:
  • prepare to publish in Mac AppStore
  • get neith prototype running on new Raspberry and Apple cmake targets
  • place mini-me in a vehicle or on a bike and send him down a hill
  • organise / confirm some more contract work 


Thursday, August 6, 2015

piano next door

Two test recordings of Nikon D7000 microphone.

Local bird chatter and cars in sunny Point Chevalier, and a working sustain pedal...

Android tablet recording next.

Saturday, August 1, 2015

tin o pi

a nice tin cigarette case with cancer warnings sanded away

a quick study of pixels through my new optical nerve (i love nikon)

credit cards, cigarettes, pi, check, check, check

on your back desktop orientation
 diagnostics mode with case open sensors and planned panel lighting

Sunday, July 26, 2015

web midi new horizons

Finally, the keyboard companies are advertising the wonder that is USB midi and calling it WEB MIDI enabled and dropping Chrome by name into their copy.

Overall the design of the webpage is classic.

However with Yamaha one expects pitch perfect. This is the company that has three tuning forks following best resonance practices in all their musical instruments.

Speaking of axis, 5.5 light hours away from the sun is a probe capturing among other things the impact of this sunlight on planet Pluto.

Here is one of the first images, rotated 90 degrees for purposes of this blog.

The hole on the right is for venting - we all have one.

And speaking of bouncing light across large open spaces. the Octane renderer from local boffins Refractive Software is achieving a stunning trajectory with new owners OTOY.

Octane breaks several laws of computing and harnesses new law of parallelism to deliver ray traced scenes at realtime speeds.

The VR industry also running HOT is loving the panoramic output options.

Watching the graphics industry evolve for demands of both controller and popcorn ends of the couch is fascinating.

As Octane is Auckland, we are giving Welliwood another worm hole of graphics universe a run for their money and having local players makes the future that much more interesting.

Wednesday, July 22, 2015

I wuv Plen2

In my day Action Man was posable. Not sure about Plen.

The fund raising for second generation (187 backers at $66K) is less than an engineer roof year- and PLEN Project Committee actually have to deliver that many working robots!

Humble pie startup extraordinaire.

After release of software, we find github once again beholden of hidden treasures.

In this instance a json description of Plen2 in 3d.js format with much interesting TypeScript source code.
No need to View Page Info on this project in the cloud ☺.

TypeScript is the new Haxe and it seems Visual Studio Code recognises this new dialect so we can explore further into this domain...

Speaking of new dialects, Monkey2 just released it's first drop - exciting times!

Especially when current monkey development is surviving on the public bar model - patrons pay the bills peoples!

Sunday, July 12, 2015 revision

[status] server is down - (rebuilding node) - try again tomorrow

Several evenings and some new node.js skills later I have made the following progress on my development server at

  • user authentication beginnings using OAuth login on 
  • webdav file system for mounting storage on local machine
  • node 0.13.0-pre 0.12.7 update and rebuild 

login authentication

The login involves an https session between my server and system as a response to a client request.

In my mind current authentication is like watching IRC between bots:

< connection #1 > client ,
[client] Hi!
[] Hi! Go and get a token from github, tell them I sent you.

< connection #2 > client ,
[client] Hi github, told me to pick up a token
[] Hi, as you are logged in, please OK permission for 
[client] OK
[] Good, here is freshly baked token with mixture of secret ingredients.

< connection #1 > client ,
[client] Hey, git hub gave me a token!
[] Give me that, now forget that, this id is all you need for this session.
[client] Nice, so no cookies?

< connection #3 >,
[] hey github, please confirm this is valid token and advise user github id
[] for sure, your login is authentic github user #12345

< connection #1 > client ,
[] No cookies my trusted friend! 
[client] OK, please build the project 
[] I will do that now. ....

I may modify logging style to reflect this in future.

version pain

A few snags using jsDAV were due to bitrot in the version of node I had built on my ec2 server many moons ago.

Bitrot is due to programmers continually tweaking shit with API changes to reflect what ever is the new black.

In this instance node's package manager reports that both jsDAV and gnu-tools that it uses were released when path.exists() instead of fs.exists() was the order of the day.

As a C++ user I am used to link time errors being reported at build time, not at the random time a random user invokes a particular API that is no longer present.

From the point of view of every working release of every project affected by fickle / knuckle head changes to API that don't appear to fail until actually invoked I am sad to say my days with node.js are possibly numbered.

Go or Monkey2 being likely replacement candidates for this particular stack. The webDAV spec is a significant undertaking of engineering, unfortunately the Go package looks to be a work in progress.

[edit] Admittedly there were warnings when I was installing the packages so I should have known which versions of which tool would work and that is expectation this node.js developer hadn't entirely grokked.

language style

Although I would certainly like to change to a statically linked language in future node.js has it's good points.

The package manager is very inspiring, if you give it a github url as project name to install it just adapts, nice.

The single threaded V8 based interrupt handler from hell aka node encourages you to get knee-deep in callbacks. Using Microsoft code editor on Mac still feels a little weird but besides code completion idiocrity it be pretty sweet.

It sure is a nice break from daytime code conventions where an indent of 4 tabs indicates you have broken the complexity barrier and will need to refactor before code review.

cloud storage

The WebDAV module allows me to mount storage space from my server locally.

Previous attempts had been with samba / netfs  shares which even with low ping times and great bandwidth were hideously slow.

The paranoid are welcome to suggest compromised network connections. I'm always looking for evidence of Godwin's Law so will post some comparison speed tests.

next steps

It seems like everyone has played and the addictive drop in nature has me very pleased as it's simple but effective implementation does make for some fine twitch based entertainment.

That and creating a new home for all my projects now Google has foreclosed on all the projects with a home at googlecode.

And a remote build server for my raspberry pi monkey distribution the cross compiler for which I already have installed in the cloud waiting for service...

Saturday, May 16, 2015