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 19

Yesterday I migrated my blog to WordPress, as LifeType was outdated and pretty buggy. While I liked LifeType, it’s nice to be using a more standard blogging software that supports all the latest APIs. The transition was simple, I merely installed WordPress, and then set LifeType to publish all my posts in it’s RSS feed, which I had WordPress import. WordPress was smart enough to add the posts and categories from my old blog.

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
 

Dec 30

    It seems these days that while more and more companies are releasing the APIs and SDK for their products, that a few companies are trying to hold on tighter and tigher. The iPod for example used to be open enough so you could use third-party software to access it, and even write your own. Now however, they have gone the way of the Zune and made it so only iTunes can access it, which effectively locks out Linux users who don't want to go through loop-holes. Also, with every iPhone firmware update, it un-unlocks the phone and removes any third party applications. I am curious why, take the iPhone for example, if anything more people would want to buy one if they can put custom applications on it, and make it more useful for their personal needs. Also, for the Zune and iPod, it would let your hardware reach a larger audience and sell more players. It all seems quite rediculous; many companies are making their profits on selling open devices for people to use as they wish.

    It's very sad that companies must restrict their users in this way, I always think, when I see a Zune, or other locked down piece of software how much better that software could be (*cough* Vista *cough*) if all that time and evergy spent on trying (and failing) to lock down the product was spent on improving it.

 

                                   Happy new year,

                             Ranok
 

Dec 13

Well, today I helped diffuse a botnet by destroying it's control method. Some of you may not know, but I happen to be a services operator on CAIRC, and I was noticing some strange connect lines, with users from all over with the nick: XP|USA|000|2394 that were all idling in a channel called #V3NOM. So I decided to join and see what was going on, and lo and behold, there were about 10 of them idling along, not responding to any message or private messages. I looked at their IPs and they were connecting from all over (Belgium, USA, Estonia, etc…) so I assumed that they were part of a botnet. I started by taking over the channel and setting the mode to +mutn (so they couldn't talk and see anyone else in the channel), just to neutralize any control mechanism, and I set a JAKILL (regex AKILL) which easily took them all out

This is my second botnet that I detected and stopped, though this one was larger than the other one. So hopefully I'm doing my part to help slow the growth of the "zombie armies". 

 EDIT: After talking with the other IRCops, it was decided to let them join, but join the channel with a bot like nick, hopefully gathering the passwords so we can remove/disarm the bots.

                Peace and chow,

                 Ranok 

« Previous Entries Next Entries »