Hello! I'm Thomas Martin Schmid -- known as *thynnmas* or *Tommy* by my virtual
and physical friends, respectively -- and this page contains a short overview of some of my
work. While I spent the noughties as a [nordic combined](https://en.wikipedia.org/wiki/Nordic_combined)
athlete, these days I spend most of my time instructing computers. I currently do this from Stockholm,
Sweden, for Arrowhead Game Studios.
Should you wish to get in touch, these avenues should prove particularly useful or -- where noted -- useless:
- Any other venue in which the username *thynnmas* (or it's short form *thynn*) is found, such as on
[Steam](http://steamcommunity.com/id/thynnmas) or in IRC-channels on AfterNET, Freenode or QuakeNET.
- While a [linkedin](https://www.linkedin.com/in/thynnmas)-profile does exist, their persistent spam
makes it unlikely a message would reach me. Better to avoid the middle-man.
- For ideological reasons, not on Facebook, and only reluctantly on Skype if requested.
More information on me can be found here:
- [GitHub](https://github.com/thynnmas/) & [Self-Hosted Repos](repos/thynnmas)
- Wikipedia-pages of athletic career in [English](https://en.wikipedia.org/wiki/Tommy_Schmid) (stub),
[German](https://de.wikipedia.org/wiki/Tommy_Schmid) (slightly more complete) and
[Polish](https://pl.wikipedia.org/wiki/Tommy_Schmid) (disturbingly detailed).
Below follow some examples of things I've made.
# Examples and projects
A parkour/platforming game with a teleportation skill inspired by the Dishonored blink built
for Ludum Dare 34. Written in C and GLSL, the game is rendered using ray-marching of signed distance
[Binary (Win32, Linux x64)](res/breeze.zip)
[Ludum Dare Binary (Win32/64, Linux x86/x64, OS X)](http://schmidx2.com/Code/ld34.zip): Older, only tutorial level, physics are buggy.
## Villains' Utility Library (vul)
A collection of single-header libraries in the style of Sean Barret's [stb](https://github.com/nothings/stb)
libraries. These collect most of the reusable C-code amassed over years of working in the language. The
libraries are marked by how extensively they've been used and tested.
Some usage code of the vector things?
My C++ vector math library used for graphics work. It encompasses vectors, matrices, points, axis-aligned
bounding boxes & quaternions, as well as support for half precision floating point and fixed point types.
SIMD-support is encouraged through AOSOA packing, while the types themselves are scalar.
[Repository](repos/thynnmas/vul) shared with *vul*.
A lemmings-style puzzle game for made for Ludum Dare 30. The window is split into two connected parts,
and the player solves the puzzle by swapping corresponding tiles between these. The game is written in
C and using [slenderer](https://github.com/thynnmas/slenderer), a simple engine with few/small dependencies
written for fast prototyping and game jams; everything is a quad or hexagon arranged in z-sorted layers.
[Binaries (Win32, Win64, Linux x86, Linux x64, OS X x64)](https://villainslair.eu/repos/thynnmas/wormings/raw/master/archive/wormings.tar.gz)
A single-file C library for parsing the [OCAD](http://www.ocad.com/) vector graphics file format used in
map-making tools. The repository also contains a tools library that prints default symbol names and
supports rendering the parsed data to image files using [NanoVG](https://github.com/memononen/nanovg) and
[stb_image_write](https://github.com/nothings/stb). It is a work-in-progress, and currently supports
OCAD 8 only, while support up to 12 is planned.
# University work
## Master's Thesis (NTNU HPC-Lab snow simulator)
The thesis investiages improvements to an existing snow and wind simulator at NTNU, particularly improving
real-world weather integration and cloud rendering.
- [Abstract (Bibsys)](http://hdl.handle.net/11250/2418700)
- [Full thesis](http://hdl.handle.net/11250/2418701)
## Bachelor's Project (libjpmul)
Bachelor's project for a group of 5, this implements the multicast network protocol defined in the
P_MUL/ACP142 specification in Java using UDP. The project also contains a simple text-based chat application
as a proof of concept.
# Contract work
## OLT Stressapp
server-side using *node.js* with a *PostgreSQL* back-end). The app attempts to provide athletes and coaches
with a dead-simple way to report and track stress-levels, respectively. It was created in cooperation
with *Olympiatoppen Midt-Norge*, both to improve the recovery and training efficiency of the athletes
and to collect data for reaserch purposes.
- [iOS App Store](https://itunes.apple.com/us/app/olt-belastningsapp/id1037762612?ls=1&mt=8)
- [Google Play Store](https://play.google.com/store/apps/details?id=no.olympiatoppen.midtnorge.stressapp)
A collection of my ramblings can be found [here](posts/index.html).
## Working environment
After years of primariliy Windows use a mixture of university work and underhanded Windows 10
upgrade nagging moved my primary system to Linux in the winter of 2016, but my main development
machine dual-boots to Windows 7.
While in Windows, *Visual Studio 2015* with *NSight* and *Renderdoc* provide most of what I need, with
a detour into *Sublime Text* when something simpler is needed. On *Linux* (I run *Arch* with
[i3](https://i3wm.org) as my window manager) a larger number of tools are in use; notably *vim*,
*clang* and *gcc*, *lldb* and *gdb*, *Nvidia's linux debugger* and *Renderdoc*, *GNU Make*, and *tmux*.
While I've had contact with *CVS* and *Subversion* throughout my education, I have since used *Mercurial*
briefly and *git* frequently. Recently I build windows binaries for my projects from Linux using *MinGW*.