agnosis is a personal site of ProjectMoon, along with agnosis mostly focuses on programming, particularly node.js and sometimes Java.

Terra Project and Reed Update


Terra is a new project I have been working on for the past few days. It forms the core basis of a nation simulation game idea I have in my head. Nations need land to claim, and land is found on a planet. In order to facilitate all things geographical in this simulation, the Terra library for NodeJS was born.

Terra generates simple planetary terrain with a single method call. It takes a bunch of different configuration options to control the generation of the terrain. Everything from islands to a supercontinent is possible. I started researching terrain generation and stumbled upon Perlin noise first. While a useful technique, I didn't have enough time to wrap my head around using Perlin noise to generate natural-looking terrain.

Eventually, I stumbled on a blog post that detailed the journey of the crea...

Installing rTorrent on Illumian

I have posted a guide on how to install rTorrent on Illumian. It can be read at

Reed 0.9.8 Released

Reed 0.9.8 has been released. This update includes a bunch of bug fixes, as well as some API changes.

  • Fixed bug where pages API would not open unless the blog portion wasn't open.
  • Fixed issue where pages would throw exceptions when creating Redis keys.
  • All lastModified values will now be exposed as Date objects. They are still stored as Unix timestamp strings in Redis.
  • The redis client will now only shut down if both pages and blog portions are closed. So, if both are open, close needs to be called on both to stop reed.
  • Removed all page-related events because they did not fire in the same manner as the blog portion. Pages are for a different purpose than blog anyway.
  • Added reed.pages.remove and reed.pages.close methods.
  • Added unit tests for Pages API, using Vows.
  • Added changelog file to the project to keep track of history.

As always, the new release is on NPM:

Reed 0.9.6 and 0.9.7 Released

Reed 0.9.6 and 0.9.7 have been released. This is a bug fix/enhancement release:

  • A bug in would cause the library to crash if there was no metadata defined in articles.
  • Added the ability to configure reed so that it can connect to redis running on different hosts/ports and use authentication. This is just a passthrough to the redis module's methods, so you can send in other options as well.

These two versions were done with the help of algesten on GitHub. This marks the first official outside contributions to reed's code.

The new release is in NPM:

npm install reed

Search Function

I've added a simple search function to the site, backed by elasticsearch and Elastical, the NodeJS elasticsearch client. It only searches blog posts right now, and it's not perfect yet. I'm still learning how to query elasticsearch, so the results might be a bit strange for awhile (e.g. searching for reed returns a post without reed mentioned in it).

I also made a minor change to the layout. The links are a slightly darker blue. Fits in with the site better. I've also expanded the number of characters in each blog post preview on the front page up to 1024, from 512.

Reed 0.9.5

Reed has been updated to 0.9.5 from 0.9.2. Changelog is as follows:

  • Added reed.all to get all posts in the system, ordered by date.
  • Changed metadata properties to be camelCase instead of all lowercase.
  • Clarified in readme that reed will not have comments functionality any time soon.

Reed can be installed from NPM:

npm install reed

To view the readme or get the code, check it out on GitHub.

RSS Feed, Blog Comments, and More

Today, the site has been updated with RSS functionality and a slight layout change. I have also removed the link to my GitHub profile from the top menu. Replacing it is a link to my other blog, The GitHub profile link joins the new RSS link on the right side, above "Places." I have also condensed the two link sections into one simple "places" list.

Blog posts also now actually have commenting. The original comments system was fully functional except for the part where they inserted their contents into the database (much less retrieved those contents!).

Rather than continuing to roll my own, I have decided to go with Disqus for a commenting system. It was easy to integrate, hooks into gravatar, and is used on numerous other sites. No using captchas or anything like that.

Flux Released

Flux, a comprehensive content discovery library for NodeJS, has been released. Flux provides programmatic access to public BitTorrent websites and allows the developer to search for, locate, and download torrents. Currently, access to the following websites is implemented:

  • The BitTorrent meta-search engine, searching 32 different torrent websites. Effectively, this means flux searches these 32 websites.
  • VODO: provides free, high quality TV shows and feature films.

Flux is very easy to use out of the box, but it is also an extensible framework. New torrent providers can be coded and dropped into flux easily.

Get flux today by using NPM:

npm install flux

See the GitHub repository for more information, including a complete tutorial and documentation.

Reed 0.9 Released

Reed has gotten a huge version bump from 0.0.6 to 0.9.x. The 0.0.x versions reflected a very early development state for the library. I feel that reed has enough features and functionality to graduate to the beta stage. After reed has been beta tested thoroughly, I will push it up to version 1.0.

The following new functionality is in reed 0.9.x:

  • Pages: Reed now supports markdown files as static pages in addition to its blog functionality. The pages API is fairly limited right now, but more is coming soon. Store your pages in a separate directory, and use the methods in reed.pages to serve up static content on your website!
  • reed.refresh: New method to force the Redis index to be in sync with what is on the filesystem. Also called internally at startup to clean up the index if changed while reed was not running.
  • remove event: A remove event is fired when...
powered by: