 |
 |
 |
 |
 |
 |
 |
| Fr. Conceicao Rodrigues College Of Engineering |
 |
Presently entering fourth in B.Engg. in Father Conceicao Rodrigues
College of Engineering (Mumbai University). I'm a Mumbaikar
(or Bombay-ite if you prefer) by birth and choice but actually
a Bengali, who can speak but not write, but no point in asking
about my true Bengal roots. I either don't know or don't
care. |
 |
 |
 |
 |
| Elementary
school (Kindergarten to standard 6 in N.B.W.S.,
Ghatkopar, Mumbai), it didn’t turn out to be very eventful
except for a few competitions won and classes topped here
and there, all thanks to relentless backing by my parents.
Maths and Science fascinates me, and I am quite an
expert in assembling futuristic machines with Lego
blocks during my free time. |
| |
| High school
L.K.P.S, Kalyan upto 10th and then Junior College at
Birla College, Kalyan - found myself lagging in my academic grades, but
my spare time was
well-spent in tinkering with scientific and technical
projects for school exhibitions. After getting hold of a
Personal Computer, I couldn’t keep my hands off it for
long, much to the initial chagrin of my parents as my
scores suffered. I soon became a pro at VB, Java and x86
Assembly language. A keen interest in computer games,
and especially their development, got me to spend all my time
in exploring the Win32 API, DirectX/OpenGL graphics,
C/C++ and AI, while my peers were involved
in more mundane tasks such as preparing for IIT-JEE and
other university entrance exams. |
| |
| Hacking.
As is inevitable with any computer programming
enthusiast, I soon encountered Unix and the lofty philosophies of
*nix hackerdom. Along came a whole barrage of new tricks
such as the Shell, Perl, Python, PHP, LISP, Vim, Emacs,
Ruby, Haskell… (had to limit this list considering
the context of this article), not to mention an unending
love affair with the Command Line, whose elegance and
simplicity was a refreshing change from the dumbed-down,
clunky and unwieldy GUIs (at least they seem so now) that
I begun my foray into computer science. Despite such
personal inclinations, I perfectly realized the
needs for such GUIs for 90% of humanity who not being
hopelessly geeky like me are incapable of ever comprehending
Unix or the CLI. |
| |
| Interests.
I easily get addicted to novels, especially science
fiction, as well as thought-provoking movies and music.
Communication, as it appears to me is primarily for
exchanging ideas and information. Needless to say (at
least to those who know me), I can’t stand small-talk
(of the pointless type, not the computer language), especially
at social gatherings. I consider myself particularly
fast at researching and learning new technologies and
get high from designing and coding challenging
programs. |
| |
| Future plans.
At the moment I'm bit disillusioned concerning the
usefulness of university education, and so I'm exploring
avenues into the software industry. This current outlook
of me towards higher education isn’t rigid,
though and may certainly change in the future. |
| |
| Projects and
Accomplishments. Nothing ground-breaking in here,
no secret plans of world domination at least. |
| |
| • |
Competitions: I take part regularly
in Algorithm competitions in division 1 at TopCoder.
Got ranked 8th in the Google India Code Jam, 2005.
Also participated twice in the ACM-ICPC regional
finals, with my team securing 6th position last
year at the IIT-Kanpur/Jadavpur-University regional
finals. |
| • |
Ogs (online grading system): A
web-based PHP application for conducting and grading
online programming contests, with automated testing
and raking systems. I have been used for conducting
many such events including the ones at the CSI (Computer
Society of India) national-conventions. |
| • |
Dcatalyst.sf.net: A cross-platform
accelerating download management engine, supporting
most internet protocols, with both GUI and CLI front-ends. |
| • |
Neocrypt.sf.net: A file-encryption
GUI solution for Windows with support for lots of
symmetric algorithms. |
|
| |
| |
| Overview |
| The Windows Registry
is certainly one of the primary nerve centres of the operating
system as well as application programs. Even a novice
user will probably know that tinkering with it may lead
to system or application-wide changes. The Registry is
a hierarchical database responsible for storing all configuration
settings of the OS as well as any installed applications.
It is maintained by the a subsystem of the Windows kernel
dedicated specifically for this purpose, and deservedly
so, because any problems in the Registry will adversely
affect the whole system. |
| |
| Such a central configuration
management system is not without its disadvantages, as
the Registry can become a performance bottleneck, especially
in the case of a system with a large number of applications
running concurrently. Moreover, the rate of registry accesses
is particularly high during system bootup due to a large
number of settings getting loaded by system processes.
The objective of my project is to analyse these potential
causes of system slowdown and discover ways to optimize
access to the registry and thus make an attempt to improve
system performance. |
| |
| Approach |
| |
| Currently my approach
involves implementing a user-space Cache Layer which intercepts
all API calls to the system Registry. This layer will
attempt to speedup repeated accesses through caching at
a application-wide level. Any given application is expected
to access only a subset of the system Registry keys pertaining
to its own configuration. The cache will take advantage
of this spatial locality, as well as temporal locality
if present, to minimize the number of system calls to
the kernel. |
| |
| Since each application
process will have its own cache of keys local to it, concurrency
especially in multi-processor systems will benefit. System
calls to the registry are serialized through the use of
locks. The cache layer helps in improving this situation
by cutting down on the number of these registry-related
system calls. |
| |
| Such a cache-based
approach does have its own set of challenges, such as
cache-coherency, an eviction strategy to limit its memory
usage, and multi-threading considerations. |
| |
| Goals |
| |
| • |
To demonstrate a working solution that can provide
noticeable boosts to real-world registry-heavy applications
(such as Internet Explorer). |
| • |
To ascertain if the system bootup and user-login
speed can be improved through caching and streamlining
registry accesses. |
|
|
|
 |
 |
|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
|
|
 |
 |
 |
 |
 |
 |
 |
| Here
are some of the questions that the code4bill contestants
answered. How about trying your hand at them? |
| • |
Multiply
14332 represented in base -7 with 16430 represented
in base -8 and represent the output in base -9. |
| • |
An array
contains 9 occurrences of 0s, 8 occurrences of 1s and
7 occurrences of 2s in any order. The array is to be
sorted using only swap operations. What is the minimum
number of swaps needed in the worst case to sort the
array? |
| • |
You are given an infinite number of cookie boxes containing either 6, 9 or 400 cookies. You are allowed to use these boxes in any combination so desired. What is the maximum number of cookies that you cannot give out using the above boxes? |
|
|
 |
|
 |
|
 |
|
 |
 |
| |
|
|
 |
|
|