ArmsBot.com

This web application will deliver near real-time reporting on ammunition availability. I’m an avid marksman and often find myself going to the shooting range early weekend mornings. I created this small application during the ammo panic since every retailer had empty shelves and the cost of ammo had inflated. All NATO rounds as well as 22 long rifle were near impossible to find. I remember going to several places one weekend to find empty shelves. I went home that day discouraged so I quickly threw up a web application that checked online retailers for availability. I realized that the market had inflated where online retailers had gouged the prices and a single pack of 50 rounds of 22 long rifle went for a dollar a round… I thought to myself, why not create a system that created a list where I could sort by price and other refinements. Even better, create a system that polled the server to alert of any new changes thus giving the user the advantage when purchasing ammo online.

I decided to use Gearman technology to help parallel process the job queue. To my surprise I have over 250 workers running processing over 10k jobs within 15 – 30 minutes. The system generates over 350 gigabytes of data across the network per month and growing. For long term scalability, I could fire up additional Gearman servers to distribute the work load. As for the now, it’s far from needing that.

After using my own system for my own gains, I decided to release it to the public. This was the inception of ArmsBot.com.

I still have other plans for this application such as creating native iOS and Android apps that can push notifications on availability straight to mobile phones.

Update: I completely rewrote the website in python... then I rewrote it with nodejs! I was experiencing some weird flame graphs with python + beautifulsoup on the 8 core cpu machine. Now it's on nodejs and running on a 2 core 2 GB RAM VPS back on the 8 core 32 GB RAM box running awesome. I'm using phantomjs to process the content after the javascript / ajax dynamic content completes rather than only the document source. This is my first nodejs project I've deployed.

eXTReMe Tracker