:'######:::'#######::'########::'########:'########:::::'###::::'########::
'##... ##:'##.... ##: ##.... ##: ##.....:: ##.... ##:::'## ##::: ##.... ##:
 ##:::. .: ##:::: ##: ##:::: ##: ######::: ########::'##.... ##: ##:::: ##:
 ##::: ##: ##:::: ##: ##:::: ##: ##...:::: ##.... ##: #########: ##:::: ##:
. ######::. #######:: ########:: ########: ########:: ##:::: ##: ########::
:......::::.......:::........:::........::........:::..:::::..::........:::
                                       Click here to try the new beta site.

This is the personal website of Don Viszneki.

Resume:               Resume - Donald Viszneki 2014.pdf

Contact info:
email:                doncodebad.com
phone:                702-884-6303
google:               donny.visznekigmail.com
skype:                hdon.skype

A very small sampling of things I've created or contributed to:

C++ meta list/map     Having explored the D language some time, I'm
                      now doing a little learning about new features introduced
                      by C++11. This is a simple compile-time linked list, with
                      random access interface, and of greter interest, a key-
                      value store which can be used at compile time.

RDBMS O/RM GUI:       This is just a video (ogg/vorbis) showing off some of the moves
                      this piece of kit was capable of. The short clip was made
                      of a very early version of the software, and it may look
                      just like any other GUI for working with a particular
                      database. But don't be fooled! The O/RM we built on GPSEE
                      (see below for more on GPSEE) at PageMail, Inc. specified
                      its model schema, like many other Javascript language O/RMs
                      you can find for Node.js these days. This clip shows off
                      a web-based front end that is automatically generated by
                      software I wrote from only our O/RM's model schema.

                      The only thing that's really missing from this video is
                      being able to create interrelated records simulatenously.
                      When creating record B to be referenced by record A, a second
                      reference from record A to record B cannot be created in the
                      same workflow. First you have to save record A, and then you
                      can fill out the field that refers to record B.

                      I think it does a really fantastic job of it, too. Foreign
                      key support in the GUI is wonderful. Your workflow is need
                      not be interrupted by a detour. Although the aforementioned
                      case does require an extra step in the video clip, creating
                      a new User account to be referenced by a new Location as the
                      Location Manager is a totally streamlined process, and I'm
                      quite proud of how it turned out.

                      And the GUI is generated entirely from the database schema
                      automatically!

lua2ps:               Lua-to-PostScript transpiler

Group Progress:       A very simple web application based on Express,
                      Bootstrap, Sequelize, and Socket.io. This is just a demo
                      instance. The application now belongs to the teacher who
                      commissioned the work. Try teacher login admin, or room
                      login green; passwords "password" and "green" respectively.
                      Works great on recent releases of Firefox, Chrome, and
                      Chrome for Android.

Aljebr:               This is a small library I wrote in Javascript for
                      programmatically manipulating algebraic expressions and
                      equations. It can automatially perform substitution of
                      any subexpression by equation. It could be used for
                      educational software or educational games which teach
                      either directly or abstractly the science and art of
                      of solving equations of many different kinds, though
                      it does not yet have any specific support for systems
                      of equations, or keeping track of which axioms, theorems,
                      conjectures, which the result is dependent upon.

                      I plan to add those features backed by a database in the
                      web-based application this is a part of, so that users
                      can cooperatively propose directions of work on proofs
                      or derived conjectures, and find solutions. The main
                      purpose of this work is to provide a data set to further
                      my research of computer algebra systems.

MD5 renderer:         This is a renderer for Id Software's MD5 mesh and
                      skeletal animation format. It is written in the D
                      programming language, which supports animations with
                      keyframe interpolation and optional GPU vertex skinning.
                      (Achieves extremely high performance with GPU vertex
                      skinning enabled!) 

Escher Tools:         I've written a non-Euclidean 3D game engine in the
                      D programming language using SDL and OpenGL. "Escher
                      Tools" are tools for working with these unusual maps
                      in Blender.

                      In the Escher game engine, space is non-local, so any
                      place can be related to any other place by any affine
                      transform of traditional geometry in the Euclidean
                      R^3 domain.

                      Working with this data requires a special editor, but
                      instead of making one from scratch, I thought it would
                      prove a challenge to reinvent Blender 2.69 to fill this
                      need. Blender can be extended using Python 3.0 and doing
                      so generally requires a mastery of geometry, quaternion
                      arithmetic, and linear algebra.

Escher Exporter:      This is a proper Blender Addon that allows you
                      to export your work created with Escher Tools from
                      Blender to the Escher game engine's map file format.

Find MC Servers:      This is a project written for Python 2.7 to
                      collect hostnames or IPv4 addresses of Minecraft server
                      listed on public directories, and then to systematically
                      determine which servers have the lowest network latency
                      to the machine you run that part of the suite from.

Bumper Penguins:      A digital implementation of a long-time favorite
                      board game, "Ricochet Robots," but with penguins. Built
                      on Node.js and Socket.io. Please identify with /nick
                      upon joining and see /help howtoplay to learn more.
                      (The info in the /help command is probably outdated!)
                      Works great on Firefox and Chrome, and with only a bit
                      of struggle, Chrome for Android. (Very annoying to use
                      the chat interface on Android right now!)

import-tmx:           Import Tiled (*.tmx) maps into Blender 2.69.
                      The result will be a Blender mesh object inserted into
                      your scene that is properly textured to take on the
                      appearance of your map as it might appear in your game
                      or other application. This project was mainly to see if
                      Blender's animation facilities would be effective at
                      creating animation sequences for 2D games using Tiled
                      as their map editor.

                      IIRC you have to export the *.tmx from Tiled as XML
                      with base64-encoded tile layer data.

GPSEE:                General Purpose Spidermonkey-Embedding Ecosystem
                      During my four years subcontracting full time for
                      PageMail, Inc., a Canadian telecommunications contractor
                      in Kingston, Ontario, I helped to design and implement
                      GPSEE, a sort of Mozilla-powered analog of Node.js around
                      the same time that Node.js was gaining traction, and I
                      wrote a lot of code based on the GPSEE platform, in both
                      C and Javascript, and deployed to Solaris, Mac OS X, and
                      GNU/Linux.

MCJS:                 Deobfuscating Java class reflector for Minecraft.
                      Dependencies include Rhino and MCP.
                      Availing itself of the crowd-sourced reverse-engineering
                      efforts of the Minecraft Coder Pack community (which was
                      at the time, the bleeding edge of Minecraft modding, used
                      as the basis of many other Minecraft modding frameworks)
                      this project was essentially a Minecraft mod capable of
                      reading MCP deobfuscation files at runtime, furnishing the
                      user with a Javascript language interface for modding the
                      game client in real time, and enabling the creation of
                      several amusements and tools. This file is only one small
                      part of the package, but it's one of the most important
                      parts. Uploading the rest would be silly now because
                      Minecraft and MCP are not what they used to be!

Scanner.js:           Provides the "scanner suit" in UrT (runs on GPSEE)
                      A simple toy for the game Urban Terror. On a given interval
                      it will randomly reparameterize your character's gender and
                      appearance. It is perhaps cheating as it can confuse your
                      opponents into thinking there are more of you than there are!

                      I don't even remember how to use it, as I wrote this long
                      ago, but it requires GPSEE and Urban Terror.

UrTplot:              Plots UrT gameplay data for tactical analysis
                      Creating this required a great deal of work in reverse-
                      engineering the inner-workings of Urban Terror, which
                      despite being an ioQuake3 mod, contains a lot of tricks
                      and false leads!

UrT demos:            Demos (of hackers mostly)

Plywood light game:   This was a really simple game I wrote for a toy
                      game console I built from a plywood board, LEDs, a few
                      steel legs, lots of copper wire, glue, tape, and female
                      SNES controller ports salvaged from an old Super Multitap.
                      You play by using the directional pad to move the blinking
                      light. Each light is toggled when you visit, and you clear
                      a stage when all the lights are out.

                      It includes a simple tool for building maps in ASCII and
                      outputting some C source code containing a more efficient
                      binary representation of each stage.

                      The game console was powered by a microcontroller in Atmel's
                      AVR line, and used two of its 8-pin GPIO ports to control
                      the 64 LEDs. If you guessed that the mCU couldn't draw enough
                      power for 8 LEDs, you guessed right. With the LEDs used,
                      their intensity would dim logarithmically for any number of
                      LEDs beyond 4 or 5 IIRC.

                     
I also have experience writing extensions and addons for Blender and Google
Chrome, Android applications, Node.js applications (see new website beta,)
and much more! Please contact me using one of the points of contact at the
top of the page for employment or consulting opportunities. Thanks!