Archive for the ‘Microblog’ Category

Quake 2 Source Code Review

Quake 2 Source Code Review — Fabien Sanglard

Fabien Sanglard has written an amazing review on the insight that the game company id had when developing Quake 2 — not from the perspective of a gamer but down to the nuts and bolts of program design.

Coffeescript Contracts

contracts.coffee @ GitHub.

Mozilla Research:

Contracts.coffee is a dialect of CoffeeScript with built-in support for contracts. It is inspired by the contract system found in Racket.

Contracts let you clearly—even beautifully—express how your code behaves, and free you from writing tons of boilerplate, defensive code.

Personally, I think that this update to coffeescript is actually more significant that coffeescript itself. The ability to define invariants (static constraints on data) is something badly needed for new projects.

The likeness to Coffeescript contracts and Haskell types is significant and likely to draw a lot of comparison. Haskell folks might argue that it’s still not static typed — and they’d be right — but I think they would be missing the bigger picture that this is a huge leap forward for usage of invariants in a (somewhat) common language.

The importance of stupidity in scientific research

The importance of stupidity in scientific research.

Martin A. Schwartz:

“… it hit me. Science makes me feel stupid too. It’s just that I’ve gotten used to it. So used to it, in fact, that I actively seek out new opportunities to feel stupid. I wouldn’t know what to do without that feeling. I even think it’s supposed to be this way. “ 

I read this today and realized that this is the exact same conclusion that I’ve reached over the last couple years.

Unknowns are good, and we ought to pursue them harder than we currently do — especially in the sciences.  Yes, it’s a little bewildering to be set in the midst of so much that could go wrong, but even if you uncover one grain of truth, that’s something that perhaps no-one has even seen before.

Neo4j: Intro to Graph Databases Webinar

Neo4j Blog: Recap: Intro to Graph Databases | Webinar Series #1.

 Neo4j is a high-performance graph engine with all the features of a mature and robust database.

There are a number of reasons to consider graph databases important — In this webinar Emil Eifrém gives a great presentation on the benefits that graph databases can provide for complex data.

I’ve been researching Graph Theory over the past couple months and Neo4j appears to have hit a sweet spot for operating on graphs.  Specifically, there are a class of problems that are exceedingly difficult to compute in a timely fashion on a relational database.

High Performance Python Tutorial by Ian Ozsvald

High Performance Python Tutorial v0.1 | Entrepreneurial Geekiness.

(hint: look for the PDF file or you’ll miss the wealth of it — all 46 pages!)

Normally I’m cautious about performance metrics — they have a tendency to compare dissimilar technologies and often avoid important details (like standard deviations) — but with this article, by Ian Ozsvald, I am quite thrilled with the completeness of his results.

He goes through a number of different scenarios implementing an algorithm in python and the available ways to tune the code using traditional methods (numpy and pypy) and non-traditional methods (pyCUDA, cython, shedskin, and ParallelPython), all the while comparing the relative performance and difficulty of implementing the code.

I wouldn’t mind seeing more articles like this!

Firmin, a JavaScript animation library using CSS transforms and transitions

Firmin, a JavaScript animation library using CSS transforms and transitions.

With all the benefits that CSS transforms and animations can offer — namely better performance & lower power consuption — it would make sense to wrap it in an API similar to what we’ve seen with other javascript APIs.

The animation of transform properties can be hardware accelerated because modifying them doesn’t force a reflow of the page; 

Extralogical.net