kuldeep.hbti
BAN USERMore I learn about technology, the more I feel getting into details. Interested in the internals of Java API,algorithms and data structures, looking for ways of API design and implemented algorithm behind it.
After 6 years in software(product) development, coding/designing remains my favourite.Currently at Webcenter Sites team in Oracle writing/desiging the APIs for the content management for mobile devices.
Kuldeep Tiwari
email - kuldeep.hbti@gmail.com
Professional Profile
6.6 years of continuous learning and application in product development and enterprise application development with - Oracle India, CA Technologies India and IBM India, currently working with web contentment management product ‘Webcenter Sites’(earlier known as ‘Fatwire’) at Oracle, Hyderabad. Expertise in Java, Java Script, J2EE,,Web Services, XML and Related Technologies.
Achievements –
• Bravo Award in September 2007 from CA Technologies,
• ‘Above Expectation’ recognition from CA Technologies, twice.
• ‘Award of Excellence’ from client American Express, twice.
Certifications –
• SCJP (Sun Certified Java Programmer)
• SCWCD (Sun Certified Web Component Developer)
• SCDJWS (Sun Certified Java Developer for Web Services)
• IBM DB2 700
Interests –
• Algorithms and Data Structure
• API Design
Technical Skills
Web Technologies JavaScript, HTML, JSP, Servlet, XML,CSS.
Web Frameworks Struts 1.1
Web Services Frameworks Axis1,Axis2, JAX-WS,JAX-RS
Programming/Scripting Language Java, Java Script, SQL
Concepts Object Oriented Programming, Object Oriented Analysis and Desgn(OOAD),Java/J2EE Design patterns, Data Structures, Algorithms, UML, Java Rule Engine, Restful web services
RDBMS IBM DB2 8.1,Oracle8i, MS SQL Server 2005/2008
Tools Eclipse, WSAD, SoapUI
Repository WinCVS3.0,PVCS, Harvest,
Application/Web Server WebSphere V5.0 / V3.5,Tomcat,JBOSS,Weblogic
SDLC Methodologies Waterfall, Agile (Scrum)
Behavioral Skills
Flexible attitude, good communication skills, persuasiveness.
Recent Accomplishments
Product Name : Oracle Webcenter Sites(earlier called Fatwire Content Server)
Duration – March ’11 – Going on
This is a flagship product in web content management arena. Designed and developed the feature for out-of- the- box support for mobile devices /tablets in the existing content management product. This involved adding support in core APIs of product, to adding features such as automatic device detection, matching device to already created device groups and serving appropriate content/layout suitable for that device.
Contribution – Took ownership of component ‘Workflow’ and created a help doc based on my findings. Owner of the core component for ‘device detection and device group matching’, which is the base of mobility feature.
Product Name : CA Aion Rule Manager 11.0
Duration – April ’09 – March 2011
It is a portal based solution to creating rule projects using CA’s implementation of Java rule engine JSR 94 API. A rule project contains business terms, rules operating on these business terms and test cases to validate these rules. The rule project can then be deployed as a web service, or can be represented as an xml file confirming to RDL ( rule decription language) syntax which can be used as input to CA Aion Java rule engine. The product provides facility to create rules,business terms,test cases, create and maintain version of it using proprietary content management system by Fatwire.
Contribution – Studied the core areas of rule creation, JSR-94,created demos using CA Aion Rule engine.
Product Name : CA XCOM Data Transport 11.5
Duration – Jan’10 – Going on
It is a data/job/report transfer utility that supports multiple platforms. XCOM provides XCOM transport server that can be accessed using a swing based standalone aplication to transfer files/jobs to other systems having XCOM server installed.It also has a web based gui using which user can transfer files/jobs between different systems by logging into the website from anywhere. It has another web application – gateway server that can be used to upload files which can be downloaded later or can be scheduled to transfer files for later transfer. The web-gui and gateway make web service calls to a server---Interface Server which makes actual transfer request using XCOM meta transfer API.
Contribution – Learned the internals of component ‘Gateway’, and shared this knowledge in the team to better handle any issues with the module. Showed interest in web services technology and helped other teams on problems with their web service implementation. Also created docs on many un-explored areas in the product or simply at technology level and made it part of the shared docs for help.
Project Name: Stratus Nimbus, Vodafone Spain
Duration: June 2008 – January 2009
It is a revenue sharing system which calculates the revenue shares for service providers, Content providers, Platform(hardware/software) providers and copyright holders for the services being used by Vodafone mobile subscribers in Spain. The system applies the business logic and takes care of complex hierarchy of business entities involved.
Contribution – Created a java based tool to automate checking of some frequent business logic exceptions/violations, saving the time taken in manual checking of table values.
Project Name: Marketing Contract Automation Release 2, American Express, Phoenix
Duration: September 2007 – May 2008
Marketing Contract Automation project is a web-based system for American Express Consumer Travel business. The project aims to automate the Contract process between Amex Marketing department and Travel related Suppliers who are interested to do business with Amex all across the world for three calendar years. It is an iterative process where the two parties negotiate via this system (one intranet website for Amex users and internet website for suppliers) on rates, terms of agreement, and various amenities to be provided for various seasons and contract type through out the year.
Contribution – Learned many AMEX components to use them in the application or handle them which were already in use. It helped me to attain a better control over code flow and be able to work in core areas. As a result, my areas of contribution expanded.
Project Name: IMPromotion Release2, American Express
Duration: April 2007 – August 2007
The application provides a centralized summary view of all the modules developed in release one, and the relationship among modules.
Contribution - Added new features in this release, took new responsibilities on other modules as well.
Project Name: IMPromotion Release1, American Express
Duration: January 2007 – April 2007
The application is designed to serve as a tool for the client to track the information about the various channels through which the client’s business promotion is taking place. The application collects information regarding popularity of various promotion channels of its products through many sources and makes a coherent database which can be used to analyze the effectiveness of each promotion channel.
Contribution – Apart from handling one module ‘Marketing’, also created a re-usable component for linked list based breadcrumb.
Project Name: I-Marketing E-Mail, American Express
Duration: September 2006 – January 2007
The objective of project is to provide the American Express customers with email newsletters of their choice. This would include subscription and un-subscription functionality. The project keeps database with user feedback.
Educational Background
Master of Computer Applications, with 72% marks from HBTI, Kanpur, 2006.
Assign numerical values(hash values) to each string using 26-radix. For example, cat = 3*(26 pow 2)+1*(26 pow 1)+20*(26 pow 0)
That leaves us with strings which have different numerical value or same numerical value but are either exactly same strings OR different.To compare two strings, first check if their numerical value is same. Only if its same, match letter by letter.
Now sort smaller file and for each word in larger file, do a binary search in smaller file(height of smaller file is lesser and sorting it also takes lesser time).
One correction -
mainThread()
{
Start ThreadClubs("A');
this.join(ThreadClubs); // To make sure that child threads of above and below line codes don't interleave.
Start ThreadClubs("2');
}
I am just putting in the logic here( writing entire code without a single comment is irritating for others).
Start threads in reverse order. That is, Start thread 'Clubs', which starts thread 'Spade',which starts thread 'Hearts', which in turn starts thread 'Dice'. Each thread 'joins' for the thread that it started to finish and then prints its value 'A','B'....etc.
*join - is a java way of making sure that a thread waits for another thread to end.
thread1.join(thread2) - thread1 will wait for thread2 to complete and then resume its exceution.
mainThread()
{
Start ThreadClubs("A');
Start ThreadClubs("2');
}
ThreadClubs(param)
{
start ThradSpade(param);
ThradSpade.join();
print 'Clubs '+param
}
ThreadSpade(param)
{
Start ThreadHearts(param);
ThreadHearts.join()
print 'Spade '+param;
}
ThreadHearts(param)
{
Start ThreadDice(param);
ThreadDice.join();
print 'Hearts '+param;
}
ThreadDice(param)
{
print 'Dice '+param;
}
Fried-to-friend can actually be viewed as an un-directed graph/forest with many disconnected components. These disconnected components are set of people who are friend to someone in that component but none of them are friends to people in other component.
Now lets try to apply graph data structure in this case.We represent graphs as either--> a) adjacency list or b) Adjacency matrix or c)incident list or d) incident matrix.
Considering option a - Adjacency list
Each 'person' entry in table will point to list of other 'person' IDs which in turn will point to IDs of their friends.
As the no of friends is very dynamic as well as big, The table friends will have two columns - person ID and friendsList. Column friendList will store BLOB file storing comma separated list of friend person IDs.
This results in too much redundant data . If A,B,C are friends then this info is duplicated in files of B and C also apart from originally storing in A's xml.
- kuldeep.hbti January 19, 2013If First thread is going to edit row data, First thread should take a read lock on the table row data, so that thread2 does not read a stale data which is going to be changed.
- kuldeep.hbti December 22, 2012assign each space char as operation +
each char as a value = 1
we need to convert the string into a numerical expression where a multiple char numerical value = 0
When a multiple characters string is found, its value would be str[0]-str[1], ignoring remaining characters in building expression
So the string "I am a king" will become
1+(1-1)+1+(1-1) = 2 //replace space with + and while scanning a multichar string, just scan first two chars
Complexity = O(n)
Indeed.
It takes O(n) time to find the number, so say, num appears at n/2th index on avg. Now to find bigger num after this index, search in remaining array in right part of avg size(n- k/2) = O(n)
Total = O(n) + O(n) = O(n) < O(nlgn)
Space complexity = none
Its better soln than any BST/stack.
//Add one more property in the nodes (as no of nodes in subtree rooted at node)
// node.noOfNodes = node.left.noOfNodes+node.right.noOfNodes + 1
//leafNode.noOfNodes = 1
findKthLargest(Node node,int k)
{
if(node != null)
{
if(node.NoOfChild > k )
findKthLargest(node.right, n-k)
else if(node.NoOfChild == k )
return node.data
}
}
Create a max-heap of characters present in line s, where comparison criteria among heap nodes is their frequency of occurrence. The root(A) will have highest frequency, say fMax. Remove this max occurring character, so that heap contains second max occurring character(B) as its root.Let new root's frequency be fMax2.
- kuldeep.hbti August 03, 2013Look out for leaf nodes (representing minimum frequency characters). Take one of the least occurring character( there can be multiple).Say its frequency is fMin.
Now we need to minimize fMax - fMin by removing character A that many times as that frequency of A remains higher than second highest occurring number B. i.e. fMax - fMax2 times.