Browsed by
Month: April 2011

New Uses for Old Laptops

New Uses for Old Laptops

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…

Why do I do it?

Why do I do it?

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.

Hiding JavaScript? Maybe….

Hiding JavaScript? Maybe….

As anyone around me knows (because I will not shut up about it) I have been working on a new project. Said project relies very heavily on JavaScript and revolves around an unusual use for a web browser that I do not want to advertise just yet. Because of this I have been looking for ways to hide my HTML, CSS, and JavaScript from the client. The short answer I discovered? You can not.

Or can you? Of course if any software is going to run code it will have to have a copy in one form or another. With a scripting language the code is presumably viewable to anyone, right? With JavaScript it is viewable in the View Source option of the users browser which makes everyone from a curious hacker to your grandmother your worse enemy (I love grandma unless she steals my stuff). You can perform obfuscation on your code but that really does not fix the problem; Anyone with half a brain could decode anything the browser can decode because all the tools they would need are already in front of them. What to do, what to 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…

Developers of Facebook v2

Developers of Facebook v2

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.

Update 2011.04.16
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.

Fuck. This.

Persistent Worlds and Their Storage

Persistent Worlds and Their Storage

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.