Apr 7

After less than a week OSP has reached another milestone in it’s development! Version 0.2 was just released with a few big fixes, performance improvments and added functionality. Also the documentation has been improved and made consistant with the code.

The most important bug fix was a performance issue that caused a slowdown over time, this has been fixed and along with it, the performance and scalability has increased! The biggest feature added was support for UDP (and soon SCTP, and SSL) which can be set without changing the code! Imagine writing a server and deploying it using TCP, UDP, SSL and SCTP, just by changing one line in the XML servlet.

Setup should be simple too, just download from Google Code, extract, make and then compile your servlet. Now on the first node, run ./start-osp.sh and then you can telnet to port 9876 and administer your cluster.

Links:

Enjoy,

Ranok

Apr 3

I’m happy to announce that my OSP version has gotten stable enough to release version 0.1! While still a very temperamental system, it is showing true promise. It’s gotten to the point where on the first node, you edit a configuration file and run start-osp.sh and on each of the other nodes, just copy join.sh and edit it on each machine. After it’s run on each, you can telnet into the first machine and start applications which all have shared state across the cluster.

For more information, check out the home page, the Google Code page and the Google Group.

Mar 28

Just a quick little PHP script I wrote for one of my professors to generate a RSS feed of files in a directory. It’s pretty simple to setup, and is mostly useful for either providing a RSS feed for updated files, or for a Podcast, just put this somewhere on your website and point it at your MP3 directory. Then, just upload your MP3 (or anyfile format) podcasts to that directory, and that’s it!

EasyRSS can be downloaded here

Peace and chow,

Ranok

Mar 25

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.

Mar 13

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

Feb 26

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

Feb 11

    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

Jan 29

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

Jan 20

Today, while looking up some DNS settings, I saw that the MX record for mail.cosi.clarkson.edu had been set. So I configured the Zimbra image to support *@cosi.clarkson.edu addresses for COSI members and COSI use. So far, Zimbra seems very easy to manage, and also very quick and responsive. I really like how they have registered the right mouse button for a context menu, so that everything is very natural and intuitive to use.

Peace and chow,

Ranok

Jan 7

While on the train back from my girlfriend's house, I whiled away the hours making ThinkLink, a site that uses various association techniques to find others while think like you. After signing up, you just type the first thing that pops into your head when you read the idea, or look at the picture. After doing 20+ of these, you can click on your name to see other's who made the same associations as you did, I just did it to keep myself busy, but it's very interesting to see how closely some of my best friends are linked together, even though they have not met. It's still very much in its infancy, but feel free to give it a shot.

 

                                       Peace and chow,

 

                                     Ranok
 

« Previous Entries