I recently came across an old, forgotten pile of discarded laptops. Over the years, as I have replaced slower models, I never sold off or gave away my old stuff. I was wondering what I could do with such old hardware (some of which sported as low as 256MB RAM) and it hit me: servers.
Think about it. All the required hardware is built in. It has a sort of UPS already integrated (the battery), takes little power, outputs little heat, and takes up nearly no space. Plus it already has a keyboard, mouse, and display with it at all times which can neatly fold away when not needed. Stick Linux and a low-impact service– like a web server on there– and you have yourself the best paper weight ever.
I want to take this idea farther. What if I were to deploy a small farm of low-end netbooks? What if I were to have one or two load balancers? All of a sudden my low-end hardware functions as if it has a pair.
Just food for thought…
My name is Nicholas J Ingrassellino and I like to tinker with things. More specifically the two things that have kept my attention longer than anything else: technology and computer software. I love these things. I love the way they come together and just work when done correctly.
The World Wide Web is one such thing. It has allowed so many people to communicate so many things from around the globe– and soon away from our planet— yet we are complacent with it. I am convinced that there is so much more it can do. What do we have yet to figure out? What are these things in our future?
With the software already deployed on virtually everyones home computers I am sure I can create real-time applications that do not require browser plug-ins or other special software. I am convinced I can get grandparents, grandchildren, friends separated by great distance, and everyone else to spend more time together and communicate with virtually no learning curve.
I am interested in using my experience and knowledge for these purposes because no one else did. This is one thing the modern Web can be. This is something I can do.
Although it does not solve the problem completely I am considering a new project. A project that might hide virtually everything but still allow the browser to render properly. What if this method was inherently cross-platform and completely transparent to the client? What if this method not only offered a developer a lot more security but also provided an API that made web applications stateful with any unmodified, off-the-shelf web server and a lot more efficient on bandwidth?
I may soon start running experiments to test feasibility but I do not foresee any reason my idea would not work. Perhaps this could even be a marketable product…
It is exactly one year later (which is a bizarre coincidence) and I am once again torturing myself. Facebook, I am told, is gradually changing a lot of its API-related stuff. One of the things that jumped out at me first was its slow migration away from FBML. I always like to control my own stuff as much as I can so I never seriously considered it (they allow you to host your own stuff and stick it in an iframe on their site as an alternative). Still, I think this is a good move for them. It allows finer control for serious developers and– very slightly– stops people from making crap since they need some commitment such as their own web servers before even starting.
Any way, we will see how it goes. If it is anything like last time there will be a lot of kicking and cursing followed by yet another pledge never to use the Facebook APIs again.
This is still extremely painful. I had told myself over and over again to just stick with it. To just work hard and I will figure it out. Well nuts to that! The tipping point? I just copied and pasted one of their most basic examples and all I can get it to do is sit in an infinite loop that loads the same page over and over. Their documentation looks great until you start to try what they are attempting to explain. They have several concepts that are only explained in hidden links through the manuals which are a bitch to find and when something goes wrong there is no help.
Over the past few months I have been putting together an MMO-style bit of software. Since it is more of an experiment than anything else I did not start with a design plan. That is not to say that most things are not planned before hand but I have no idea what will work best so I am trying a number of things off the hip first.
Right now I am working on the basis of what will make it multiplayer. The decision I have to make now is how will the data be stored and how will the clients access it?
- I could store everything in an SQL database. This is attractive for its persistence and accessibility across multiple platforms and languages. The down side is I can not control what is cached and what is on disk as much as I would like. Every now and again I may take a huge hit in performance as it was not designed for this task. I may hit a bottle neck much sooner in a high concurrency situation than I otherwise would.
- I could use memcached. This is attractive for the obvious reason: blinding speed. The down side is I would have to do so much more work in code since it does not guarantee stored data would exist when I need it. This increased work could place my bottleneck on my CPU when it is already pretty high from other tasks. I would not know the full effects of this until after the project is mostly complete leaving me in a chicken or egg situation.
I am sure there are many other options. These are the two that seem the best suited for my task right now that I am aware of.
No matter what I do I will build a very light-weight abstraction layer as to switch between different designs quickly. This will save a lot of time later on so I do not have to reinvent the wheel over and over again with each test.