Tuesday, June 30, 2009

BSD, Linux, OpenSolaris Filesystem Encryption - FSE

Similar to my DVD Catalog project ( :) ), I have been searching for a good (transparent) filesystem encryption for my open source operating system(s).

ZFS is a very good option but the encryption module is currently in beta. (And ofcourse, with the usual license problems)


So, I am planning to write a transparent filesystem encryption module for using with any exisiting filesystems and OSes (Unix-based).

== The Design ==

User view:
The user mounts a harddrive (say, /dev/sda1) as an encrypted drive (say, /dev/esda1). And will use any of the exisiting filesystems to format and mount this /dev/esda1 onto a mount-point.


Developer's view:

The module reads/writes from the actual harddrive (or another loopback FS) by encrypting/decrypting the data. For data I/O the module exports a device, say, /dev/esda1. Which is emulated as a harddisk for the existing filesystem modules.


This would be very similar to a loop-back filesystem with encrpytion.



== But, Before I start ==
Unlike DVD Catalog project, I would like to get options and opinions before starting this project.

1) Are there any exisiting projects like this or very similar to this?
2) Are there any other alternatives/file systems?
3) Are there any other better designs?

Sunday, June 21, 2009

Financial Statements Analysis of MindTree Limited.

Brief on MindTree
MindTree is a global IT Solutions Company specializing in IT Services, Product Engineering, Infrastructure Management and Technical Support (IMTS), Independent Testing and Knowledge Services that was started in 1999. (Source: http://en.wikipedia.org/wiki/MindTree)

MindTree's key development centers are in Bangalore, Chennai and Pune. It has offices in over 15 locations spread around the world. MindTree crossed USD 100 million in revenues in April 2006; the fastest Indian IT company to achieve the target.


Few Strategies (listed in Annual Report),
* New service offerings
* Leveraging existing client relationships
* Targeting large clients & expansion in non-US markets
* Innovations and new technologies
* Leverage both organic and in-organic growth
* Strengthen "MindTree" brand

A long list of good initiatives to defend (or attack) the recession. This could be the 2nd major recession MindTree is facing - the first one being the dotcom burst (~2001).


FSAS
MindTree's stock has been on a rise since the announcement of results. It was volatile till a few days back and has started tracking NSE/BSE index movements very closely recently.

This saturday & sunday I decided to analyze MindTree's Annual Report to know if I should invest now or wait. Here's the report: My website or docstoc or scribd

In brief

Current market price: 425
Target price: ~200
Trade Call: Sell
Investment Risk Level: High Risk
P/E: ~53
Gross margins: 32.54%
Net margins: 3.55%
ROE: 6%


For details refer the report.

Please let me know your opinion, suggestions, advices, ...in the comments section of this post. Thank you.

PS: If you want to re-publish the report contact me :)

Wednesday, June 10, 2009

DVD Catalog - A CD/DVD Management Software

I was looking for an open source CD/DVD Management software for a long time. Didn't really find one - either I was looking at wrong places or searching for wrong key worlds (I guess this should be evident from the way I have named my creation :P).

I also wanted to see how good/bad QT SDK/framework is - heard its like write once and compile/run everywhere types.

So, I combined these two wishes and this summer I finally decided that I would start this project (that would be some 2 or 3 weeks back) and put in a few days of effort on it. Since my initial experiences with SQLite3 were really good, I chose to use it for this project as well. Last weekend I got it working with basic features up and running (like index a directory and search the database).

Try it out @ http://code.google.com/p/dvd-catalog Just extract and run the dvd-catalog.exe file
I only have win32 (Windows 32bit/64bit environments) binaries. I will be adding the Linux binaries in a few days, but I sure need help for adding the OS X binaries - I don't have an Apple MAC to build it on.
You can also download the source code there - I have released them as GPLv3. Don't complain on the code quality - its learning qt types :)
There are, of course, NO 'security-layer' or 'sql sanity checks' done. Hopefully I will do a few data sanity checks, but security layer, I guess is not required - since this is supposed to be a "personal" CD/DVD Management software.

Do comment on the improvements, code, ideas, ...I will sure consider them for implementation/correction/...

I guess, I need a few more features like:
0. Few improvements - like commit() only after all the entries are added to the database. I guess even though I am actually doing this, I see commit happening after ever add of the file. This would be a high priority.
1. Adding a single line entry (will be useful to add DVD Movies) into the database
2. Changing ratings
3. Indexing only directories (i.e directory names and not files)
Further,
4. Viewing reviews from internet (say imdb or wikipedia or software/games reviews) for a particular file/file type.

Also, let me know if you want to contribute to this project - I can add you to the list.


Few Screenshots:

Monday, June 1, 2009

Logical AND & OR confusions

I have seen many people getting confused with logical AND and logical OR - especially when writing programs. This used to happen to me during my initial learning days with C programming.

Debug this:
if(string!=NULL || string != empty)
{
/* Use the string to do some work, say */
print(string);
}

The above condition will always execute - beware it might also cause an application crash.

What most programmers expect to do is:
if(string==NULL || string == empty)
{
/* Skip the operations */
}
else
{
/* Use the string to do some work, say */
print(string);
}

Which actually should have translated to:
if(!(string == NULL || string == empty))
{
/* Use the string to do some work, say */
print(string);
}

Which can be coded as:
if(string != NULL && string != empty)
{
/* Use the string to do some work, say */
print(string);
}

Note the logical AND.

If you think you get confused with AND/OR, don't worry you are not alone.

PS: This is similar to the rule ~(p or q) == (~p and ~q)

Tuesday, May 26, 2009

Linux and GPL...Move to OpenSolaris, FreeBSD and/or OpenBSD?

I know this topic is discussed over and over again. [But clarifications and hence a kind-of detailed reasons listed on (say) kernel.org would be helpful, I think.] Anyways,

I read
http://www.kernel.org/pub/linux/docs/lkml/#s1-19
(note: The link to the message wasn't working - I am guessing its the normal licensing.txt or might be this)
and
http://kerneltrap.org/Linux/NDISwrapper_and_the_GPL


I have a lot of confusions over the reasons for why a GPLONLY API needs to be there. Use of GPLONLY define implies some kind of differentiation between kernel modules which are GPL and "other"licenses.

[Just for the sake of argument, what prevents the same kind
of extension (of differentiation) to GPL programs/applications
and other programs?]

Linus, himself says it is not good to prevent non-GPL driver code in Linux. There is a nice argument here, here and of course here.

I think you really just disagree on what is derived, and what is not.
Richard is very extreme: _anything_ that links is derived, regardless of
what the arguments against it are. I'm less extreme, and I bet you're even
less so (at least you might like to argue so).
I liked this argument of Linus,

The silly thing is, the people who tend to push most for this are the
exact SAME people who say that the RIAA etc should not be able to tell
people what to do with the music copyrights that they own, and that the
DMCA is bad because it puts technical limits over the rights expressly
granted by copyright law.

Doesn't anybody else see that as being hypocritical?

So it's ok when we do it, but bad when other people do it? Somehow I'm not
surprised, but I still think it's sad how you guys are showing a marked
two-facedness about this.

This is exactly what I feel about GPLONLY symbols too.

If Linus was convinced by his fellow-team-mates (so called) to add such a define, why shouldn't some one convince him to make GPLONLY system calls for user space programs as well? The reason given in the FAQ is:

To allow choice for developers who wish, for their own reasons, to contribute code which cannot be used by proprietary modules. Just as a developer has the right to distribute code under a proprietary licence, so too may a developer distribute code under an anti-proprietary licence (i.e. strict GPL).
Choice?


Many people, including me, like freedom without any frills. GPL license adds too many frills to it. GPL (as an extreme example) is like saying: take these seeds (for free) do what ever you want with it, but if you grow a tree using it (with whatever hard work it might take) you need to give it back to others (for whatever reason they might need it for) - for free, as in freedom, of course.


Whatever it (the reasons) might be, what's the guarantee that, the so called exceptions (like the one that allows non-GPL code running in user space) be taken out by our Linux kernel friends? Or for that matter limited to a few legacy APIs only?
What is the guarantee that GPLONLY define will not be put all over the kernel? Maybe that's the idea...

Unless a standardized API (for drivers i.e.) is published and maintained (20yrs of kernel developement and not a hint towards it), there probably is no guarantee...We just have to hope (and pray), Linus is not hijacked!
Note: I am not saying it should never change, but it should be more or less standard across minor version changes. And if it can be done with GPL drivers (not extenstion of the kernel) then it should be possible with non-GPL drivers.

At least wrappers, like the one use by nVidia drivers, will go away.


Because of all the above reasons (and more), I am seriously contemplating on moving to OpenSolaris, FreeBSD and/or OpenBSD.

I have already registered for a free CD of OpenSolaris and will be downloading FreeBSD and OpenBSD. Read on for updates on my experiences with those...

-----

In comparison to GPL, LGPL is far better, BSD licenses are too weak (but in some sense the best), do we have something in between? Can't I ask for both pista as well as strawberry milkshakes? Is that the reason why I like cassata ice creams?


PS: I am not anti-GPL.


Sunday, May 10, 2009

Financial Statements Analysis of Sun Microsystems, Inc.

A long weekend (May 1 to 4) spent on the analysis and report making of the financial statements of Sun - Here's the report.

What I found was, Sun is quiet a good company - except that we cannot say what would happen in the recession! Sun's major weaknesses "not enough R&D" (not that they are not spending enough, but there are no major outcomes) and "many (already established) competitors" (especially in the newer segments in which they have entered).
They do have an "open source" edge and of course the myriad products/services they can offer.

We have to see what would happen in the new Oracle-Sun merger, how many of these open source products would Oracle want to maintain? Does oracle even care about them (even though oracle has its own open source projects)? Lets wait and watch...


[Forgive me for too many brackets :) ]