Archive for the Category » Technical «

Tuesday, March 25th, 2008 | Author: ranok

Just writing a little status update for my Open Server Platform (OSP) project that I’ve been working on:

Progress:

  • Rewrote much of OSP to take in a XML servlet (meta-data and code) and act as a socket broker for that servlet.
  • Wrote a  number of  servlet libraries to make programming easier and safer.
  • Added a global shared state that can be spread redundantly across multiple nodes (using Mnesia)
  • Added the ability for applications to be atomic, either they complete and update the shared state, or they crash and don’t influence the shared state at all.

Todo:

  • Move the OSP broker under an OTP supervisor for auto-restart.
  • Make OSP more configurable and automatic
  • Make a nice administration and status system
  • Devise and implement a load balancing and fail-over system
  • Test and tweak as needed
  • Write more servlet libraries

Also, I have been approached by a CS senior from the west coast who has offered to help work on ERLFS! I’d love more help if you know/want to learn Erlang, and help develop a very powerful and useful product.

Category: Projects, Technical  | Tags: , , ,  | Leave a Comment
Thursday, March 13th, 2008 | Author: ranok

While working on OSP some more, (I got global data storage using Mnesia and transactional server instances working) I got frustrated with Erlang letting me compile code then late binding to non-existent functions (whoops, typos) thus blowing up when I tried to run it. I knew there must be tools to solve this problem, so, searching around, and reading through my Erlang book, I came across Dialyzer, or (”a DIscrepancy AnalYZer for ERlang programs”). Basically, it does a static source code (or compiled byte code) analysis of your program(s) and tells you when there are unknown function calls, or places in the code that can’t be reached, etc… It’s very handle, and lets work on coding and testing the functionality of my code, rather than the runnability of my code. This tool is a must-have for Erlang programmers.

Peace and chow,

Ranok

Category: Projects, Technical  | Tags: , , ,  | Leave a Comment
Tuesday, February 26th, 2008 | Author: ranok

It seems that recently, many of my classes have touched upon threading or multi-processing in some way. After spending time programming in Erlang, where the creation on a process is very cheap, it’s interesting to see how strategies must be adapted in order to fit other threading paradigms (like pthreads). As part of the COSI server challenge (basically, spend an hour or so making a web server in the language of your choice), my Erlang submission merely spawns off a new process for each incoming connection. As I read further, I came across Apache’s MPM threading model and it made perfect sense: have a pool of threads waiting for incoming connections, then handle them as they come. This makes the server much more responsive as it does away with the need for spawning a new (very short lived) thread. Once I read this, it was as if I made a mental leap, and now I can see how simple and brilliant this is.

I guess to to conclude I just think that you should always be ready to make that leap and keep an open mind, just because it works, and you’ve done it forever, does not make it the best possible way.

Peace and chow,

Ranok

Monday, February 11th, 2008 | Author: ranok

    For those of you who don’t know, I’ve been working on a project making a server environment that only requires the server logic to be coded, the rest (high availability, load balancing, etc…) is all taken care of by my project. However, before I can start on the server itself, I need to make a redundant file-system that lets distributed nodes keep synced up. It’s almost at a prototype stage where I can demo to the world. I put up a website and a Google code project with a SVN repository.

It’s written entirely in Erlang, and using the Mnesia database for the meta-data storage. It’s licensed under the MIT license so it’s business friendly and open-source.

Peace and chow,

Ranok

Category: Projects, Technical  | Tags: , , , ,  | Leave a Comment
Tuesday, January 29th, 2008 | Author: ranok

Over the past few days I got OpenLDAP installed on a VM, and configured a few other VMs to use the server for authentication. The real struggle was to get sudo-ldap to play nicely and to automate the system for a simple, yet granular system for giving people access to certain machines. Currently, I have a few configuration files that list the users, their password hashes and which machines they can administer. A few homebrew scripts I threw together then parse through those files and make the changes. If a user needs to be giving sudo access to three machines, rather than logging into those three machines and making a user, and granting access on each, just modify two files and you’re done. If you’re looking for more information on how it’s done, check out the COSI wiki, which has lots of cool information about all sorts of things.

Peace and chow,

Ranok

Category: Technical  | Tags: , ,  | Leave a Comment