# Blog Archive

Viewing page 3 from September 26, 2014\ to December 25, 2014\ .

I'm slowly clueing into the terror of how the various #Minecraft server mod frameworks work...

@mikeboers on . Visit on Twitter.

Arguing for over-estimates being the best target for software development -> http://netinstructions.com/a-developers-guide-to-estimating-software/

@mikeboers on . Visit on Twitter.

my favorite commits, by far, are the ones where I did nothing but delete code.

@codinghorror (Jeff Atwood) on . Visit on Twitter.

I miss AIR's "Instancer" shaders in @pixarsrenderman. #vfx #cg

@mikeboers on . Visit on Twitter.

# Repairing Python Virtual Environments

## When upgrading Python breaks our environment, we can rebuild.

Python virtual environments are a fantastic method of insulating your projects from each other, allowing each project to have different versions of their requirements.

They work (at a very high level) by making a lightweight copy of the system Python, which symlinks back to the real thing whenever necessary. You can then install whatever you want in lib/pythonX.Y/site-packages (e.g. via pip), and you are good to go.

Depending on what provides your source Python, however, upgrading it can break things. For example, I use Homebrew, which (under the hood) stores everything it builds in versioned directories:

$readlink$(which python)
../Cellar/python/2.7.8_2/bin/python


Whenever there even a minor change to this Python, symlinks back to that versioned directory may not work anymore, which breaks my virtual environments:

$python dyld: Library not loaded: @executable_path/../.Python Referenced from: /Users/mikeboers/Documents/Flask-Images/venv/bin/python Reason: image not found Trace/BPT trap: 5  There is an easy fix: manually remove the links back to the old Python, and rebuild the virtual environment. Read more... (1 minute remaining to read.) Posted . Categories: . # The Evils of Gamifying Git ## Your green squares do you little good, and encourage bad behaviour. Nearly two years ago, GitHub introduced contribution calendars on everyone's profile, which roughly visualize how frequently one has been "contributing" for the past year. Through 2013, mine displayed some interesting patterns and features, many of which scream that they have a story: Having used GitHub as the primary code host for multiple full-time jobs, and a few growing open-source projects, I now believe that these calendars introduce, for me, two negative effects that vastly outweigh their benefits. Read more... (3 minutes remaining to read.) Posted . Categories: . Seems like LibreSSL is doing its job so far... https://www.openssl.org/news/secadv_20141015.txt #netsec @mikeboers on . Visit on Twitter. # Checking IMAP for a Pulse ## When you don't trust your mail client to tell you everything. I have been having trouble receiving email from Gmail via IMAP today. The Google Apps status dashboard does not reveal anything is wrong, so lets go spelunking! We use openssl to make the connection to transparently handle the TLS connection: $ openssl s_client -crlf -connect imap.gmail.com:993
* OK Gimap ready for requests from 172.218.163.116 zh1mb199258645pbc


We have a connection! The -crlf is critical for Gmail as the line endings are important to the "Gimap" server (and the protocol in general, but other servers I have tested are more accepting). If you weren't using encryption, you would nc imap.gmail.com 143 instead of using OpenSSL.

Lets poke the server a little.

Posted . Categories: .

# When Normals Aren't

## Classifying attributes as "normal" so Houdini will transform them.

I've been building a VFX pipeline for Shadows in the Grass that allows for artists to work in whatever applications they are the most skilled.

One little thing which has been a bit annoying is that somewhere between Blender and Houdini (of all pairings), geometry transferred via Collada does not have properly qualified normals. This results in some wacky behaviour when you start transforming your models:

Note that when spinning the above sphere, the normals are getting dragged along with the surface, but they remain pointing in the same direction in world space; they are not spinning with the surface. A very obvious effect of this is that the light appears to be spinning around the sphere, even though the light is stationary.

There is a simple enough fix, however.