Wednesday, October 06, 2010

Five Years of db4o

Five years (2005-2010) of db4o's public source code repository condensed in 20 minutes. Graphics generated by Gource (http://code.google.com/p/gource)

Thursday, July 01, 2010

Silverline: a nice way to leverage your spare CPU cycles

I didn't know about this kind of solutions but I tried one (Silverline) and it's totally transparent. The idea is that when you have a server (real or virtual) chances are you're not using 100% CPU all the time. If you're paying for a server you're loosing money this way. You can run a virtual resource container that assigns to your secondary tasks (eg. a batch job) the remaining CPU with zero impact on your primary application thus maximizing the CPU utilization (as a plus virtually no configuration is required). And this will also work in cloud environments.

How does it work?

First step is to install a binary with Silverline itself. This is pretty straight forward. Versions for Windows and Linux are available. You can sign-up for a beta test and get Silverline for free as of this writing. You can also deploy Silverline in minutes on your Amazon instances (or any other instances in internal or external clouds). Here you can check the videos on how to install on Linux and Windows.

After installation you can type:

> silverline 
for any application that you want to take advantage of spare capacity on the server. This will launch the application in a background container and it'll only consume resources not required by the primary application. If you're a Windows user you can use a nice interface to "silverline" Windows services on startup.

Silverline "sponges up" unused cycles so that you can run apps that are non-time-sensitive such as analytics apps or various batch processes. And the nice thing is that you are doing this on a resource you were paying for anyway!! =) Note that this is a user-space technology that installs without any modifications to the underlying operating system or to your applications. It overlays the native OS scheduler to provide application-aware resource scheduling. It performs resource scheduling at 10ms intervals so the "silverlined" application doesn't impact the primary application. In general I would say it's very light weight (I've measured less that 1% overhead on my server).

Here's a demo to give you an idea about how it works:




Why use should I use this?

Simply to:
  • Reduce the number of servers required to process the workload
  • Improve application performance under peak load
  • Use spare compute capacity to complete maintenance tasks such as disk defragmentation in the background
Architecture

Roughly, this is the technology architecture:




Monitoring silverlined processes


Probably the nicest thing about this whole technology is that you can go to their website and monitor all the statistics about your silverlined applications. This way it's fairly easy to tell whether this is really working for you and to what degree.

Book Review: Language Implementation Patterns

A must have for developers that need to deal with DSLs (domain specific languages), create data readers, code generators, source-to-source translators, source analyzers, etc. Using a practical approach the book provides an excellent compilation of patterns that show up again and again in language processing applications.

For my full review see: http://books.dzone.com/reviews/language-implementation

Wednesday, January 06, 2010

db4o Object Database - short story

This is db4o in a nutshell. A short story to let you know why db4o is THE database for developers!

Sunday, July 26, 2009

Project Management System using JavaFX and db4o

When I run into Sun's JavaFX sample applications section I saw one example that particularly caught my attention, a sort of simplified project management system. What I found interesting is that it looks like this native GUI could also be used under JavaFX's mobile profile and, most importantly, that the authors created a mock data access layer (accessing only in-memory collections) leaving room for easily plugging in my favorite (JavaFX compatible) object persistence engine: db4o =)

With the help of Dama (my wife) we changed the original data handler to include db4o and wanted to share this sample with you. We used db4o v7.9 which is accessed straight from JavaFX (if you want to learn more about the limitations of db4o under JavaFX I suggest you read Patrick's blog post 'db4o with JavaFX').

If you want to use db4o in your JavaFX application you're adviced to reuse Db4oFX.fx (available in the download bundle below) to save yourself some time (it's a sort of JavaFX API to db4o) which in turn uses Reflex.java (for some reflection magic). The data handler for this application (which benefits from these utility classes) is called DataHandler.fx.

Thanks to Praveen Mohan & Elancheran for sharing the original sample.

Download Sample

Tuesday, April 07, 2009

Twitter "Unscheduled Maintenance"

I just run into a second nasty experience with Twitter. It wasn't that they are over capacity, they now call it "unscheduled maintenance". Thank god, I thought they were over capacity =S



I prefer the whale (or maybe a functional Twitter website?)

Friday, April 03, 2009

Twitter over capacity?

I just had a nasty surprise when trying to update my status on Twitter:



Strange (there's a reason why they are using Amazon S3 and that is scalability).

So, how come? (And what's with the whale anyway? =)