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 Trondheim, Norway, for no-one in particular. Should you wish to get in touch, these avenues should prove particularly useful or -- where noted -- useless: - E-mail: - [Twitter](https://twitter.com/thynnmas) - 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: - [CV](res/cv-schmid-thomas-martin.pdf) - [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 ## Breeze 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 fields. [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. [Repository](repos/thynnmas/vul) ### vul_math
``` 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*. ## Wormings 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) [Repository](http://villainslair.eu/repos/thynnmas/wormings) ## OcadParser 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. [Repository](repos/thynnmas/ocadtools) # 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. [GitHub](https://github.com/libjpmul/libjpmul) # Contract work ## OLT Stressapp A mobile and web-based application written in JavaScript (both client-side with *Cordova* and *jQuery*, and 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) - [Webapp](https://oltstress.no) # Musings A collection of my ramblings can be found [here](posts/index.html). # Misc ## 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*.