:'######:::'#######::'########::'########:'########:::::'###::::'########::
'##... ##:'##.... ##: ##.... ##: ##.....:: ##.... ##:::'## ##::: ##.... ##:
 ##:::. .: ##:::: ##: ##:::: ##: ######::: ########::'##.... ##: ##:::: ##:
 ##::: ##: ##:::: ##: ##:::: ##: ##...:::: ##.... ##: #########: ##:::: ##:
. ######::. #######:: ########:: ########: ########:: ##:::: ##: ########::
:......::::.......:::........:::........::........:::..:::::..::........:::
                                       

This is the personal website of Don Viszneki.

Resume:               Don-Viszneki-Resume-2016.pdf

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

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

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.

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.

                      To play:
                      /bid #moves
                      When it's your turn:
                      Click a penguin and indicate the cardinal direction to
                      move him in by clicking another square. Watch out,
                      though, because you can waste a move by moving the
                      penguin into an obstacle that it was already sitting
                      against.

                      It works on mobile (incidentally) but I don't recommend
                      playing with- out a keyboard as critical functions are
                      only accessible via the chat interface atm.

escher:               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.

                      Probably difficult to build this. It's probably succumbed
                      to bitrot. Derelict has made some big changes since I last
                      worked on this project.

                      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. Which brings us to:

Escher Tools:         Apparently this is only available online as a gist right now.
                      I'll try to clean it up and probably incorporate it into
                      the escher repo above. Maybe.

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!) 

                      See new version here.

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.

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:         Version 2 includes some normal interpolation and ultra-basic light.
                      See old version here.

logircd:              An IRC server written in D with vibe-d.

oglconsole:           Another Quake-like drop-down console for SDL/OpenGL written
                      in C. Oglconsole supports multiple consoles, and, IIRC,
                      arbitrary transforms for the console. Written a long time
                      ago so it doesn't have any kind of fancy renderer.

                      There's a version of this in the D language that I'll try
                      to post soon.

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.

                      William Shakour has forked the project. You can find
                      it here on github.

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!

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.

                      My MCU for this project was the ATMega32. I mostly shared
                      this project for memories of teaching my siblings about
                      programming and electronics.

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.

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!

natstrings:           Ever needed to NAT string representations of IP addresses?
                      This tool takes two networks given in CIDR notation and translates
                      strings found on stdin from the first network to the second
                      network and writes to stdout.

                      Great for translating static configuration files!

whois:                Ever needed to whois a list of IP addresses?
                      This tool caches responses from RIRs, identifying IP
                      address ranges in 1.2.3.4 - 5.6.7.8 notation and CIDR
                      notation.

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.

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.

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)

Willie/Chess          Chess for IRC bot (Python, MySQL, Willie)


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!