Overcoming Ruby Error digest/sha1.bundle Library not loaded.

I ran into trouble the other day running rspec on my project. It had been working just fine the day before, but all of a sudden:

/Users/mburke/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/i686-darwin12.3.0/digest/sha1.bundle: dlopen(/Users/mburke/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/1.8/i686-darwin12.3.0/digest/sha1.bundle, 9): Library not loaded: /opt/local/lib/libcrypto.1.0.0.dylib (LoadError) ..snip ..

Read More

Keep Your Framerate Out of My Physics - Part II

This is part II of a series looking at the physics algorithm for Electric Field Hockey. Part I outlines the initial algorithm and it’s shortcomings.

Last time we noticed a problem in how we generate a time step for our physics simulation: requestAnimationFrame can’t guarantee a consistent interval which makes the simulation appear frustratingly irrational.

Read More

Apache ProxyPass and Cache-Control

website.conf
1
2
3
4
5
6
7
8
9
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule headers_module modules/mod_headers.so
ProxyRequests off

<LocationMatch "/s3/">
ProxyPass http://s3.amazonaws.com/your_bucket/
Header set Cache-Control "max-age=290304000, public"
</LocationMatch>

Keep Your Framerate Out of My Physics - Part I

Never let your physics simulation depend on something as unreliable and capricious as the machine’s framerate.

When I was building Electric Field Hockey I used window.requestAnimationFrame to control the time-step for all the physics calculations.

Simulation Tick Function
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Simulation.prototype.tick = function(frame) {
var ts = frame.timeDiff / 1000;
var puck = this.puck;
var force = puck.charge.calcForceFrom( this.charges );
var newPosition = EFH.Physics.calcPosition(puck.charge,
puck.velocity, force, ts);
puck.velocity = EFH.Physics.calcVelocity(puck.velocity,
force, ts);

puck.moveTo(newPosition.x, newPosition.y);

};

var init = function() {
/* SNIP */
self.anim = new Kinetci.Animation(function(frame) {
self.tick( frame );
});
};

It’s easy and straight forward: every time the browser wanted a new frame, we can calculate the forces, apply them to the objects, and figure out the new positions.

But it’s also simplistic.

Read More

Ray Tracing in JavaScript

I wanted to learn a little about ray tracing, and I’m kind of obsessed with javascript at the moment so i cranked out this little gem. I’m planning to add more features to it when I get a chance, but for now you can set the parameters for the sphere and location of the light source. Press ‘Trace’ to get an image on the canvas (which may take a few seconds).

Read More