Several months ago I was asked if I would consider teaching a course in Python to scientists and engineers at my lab. I'm a very loud proponent of learning how to code, even if you aren't a software engineer, so naturally I jumped on the idea and Python For Everyone was born. Several factors motivated my final decision to teach this course: Ease of transition. Our lab's workforce is incredibly diverse and very savvy. Most of…

I recently started writing Pythons versions of the C++ code from OpenGL-Tutorials.org. You can find my code at my Github [here]. 99% of the source comments are from the original tutorials, the other 1% cover Python-specific content and any modifications I had to make to replace C++-only libraries. The Python source code mimics the original C++ source with a few tweaks to accomodate missing libraries. For instance, at the time of this writing the…

tl;dr 127.0.0.1 URLs have been fixed and properly link to Seethroughskin.com content. My Mom Says I'm Awesome Do you ever find yourself having the most amazing day ever? The sun is shining, there is a chill in the air and a spring in your step. Stayin' Alive plays to your inner voice, synchronized to your very visible strut because, damnit, you're the fucking man/woman. This continues for hours until finally…

More fun with old code, woo!! Here is a snippet for an nway merge that abuses std::set by providing a weak order comparator where a strict weak ordering comparator is "required". The same could be done properly w/ std::multiset but my original intent was to abuse the poor sets in to allowing duplicates. struct comparator{ bool operator()(list<int>* a, list<int>* b){ return a->front() <= b-&gt…

Here is a working example of CUDA in a qmake project file (.pro) w/ support for error selection in Qt Creator. This code was cobbled together from several blogs and StackOverflow questions. I don't have the original references so I apologize if I've aped someone's hard work without the proper attribution. Project Script TEMPLATE = app CONFIG += console CONFIG -= app_bundle HEADERS += \ example.hpp SOURCES += \ example.cpp OTHER_FILES += \ cuda_kernel.cu DESTDIR = $$PWD OBJECTS_DIR…

Convolution Image convolution is one the easiest techniques to learn in computer vision and it's a technique that illustrates the power of local feature detection better than weeks of lecture. In principle, convolution involves nothing more than repeatedly applying an NxN matrix to a pixel and its neighbors. Depending on the matrix scalars several different effects can be achieved: Blur Edge Detection <--- Let's focus on this Sharpen Edge detection is one of the fundamental…