| |
|
|
| |
|
|
| |
- Desktop Applications
- Web Applications
- Web Services, SOA
- High-Performance Systems
- CoReTM
- All Areas
Complex Desktop Applications
|
Customized grouping data grid
|
|
Architecture cannot be an afterthought - whether for a new building or
for a software application.
|
- UI Framework Architecture : Anuj has
served as a .NET UI architect (both WinForms architect as well as WPF architect) on more than one occasion. He has helped build an
advanced Object Oriented Framework entirely in .NET -
containing enterprise UI components such as CAB/SCSF, Smartparts as well as 3rd
party controls such as Syncfusion and Infragistics. His .NET UI Architecture experience
includes 3rd party WinForms libraries as well as WPF components.
- Component Oriented and Object Oriented Development :
Whether your
application requires the location transparency provided by .NET components or
the advanced framework design available through C# Object Oriented constructs, Anuj has
helped design entire frameworks using his experience as a .NET architect.
- Advanced Pattern Usage: Whether it is the often used Publish-Subscribe pattern (see Anuj's blog ) - or the FlyWeight pattern, Anuj continues to leverage best practices in Object Oriented
and Reusability design through the usage of advanced patterns.
As a result, his applications tend to be 'lean' and accomplish tasks with far less code than one might originally anticipate.
- Integrating Applications through EAI Platforms (Integration Architect Experience): Anuj works extensively not just on building stand-alone applications - but connecting them as well. Using industry leading platforms such as
Webmethods and BizTalk Server, Anuj has helped applications talk to remote credit bureaus, loan processors, e-Commerce processors as well as a variety of 3rd party legacy applications.
- Custom UI Controls : Today's business
applications need to display several megabytes of data in various layouts
including Master-Detail, Parent-Child, Tabbed Views and other complex UI layout
scenarios. Anuj has worked in the capacity of a hands-on .NET WinForms architect customizing large data displays to include:
- Advanced Data Grids with excel-like copy and paste functionality for grid data
- Advanced grouping including multi-column grouping
- Fast rendering of large quantities of data - using virtual display modes
- Nested grids - and advanced Master-Detail views.
- If you are interested in learning more about Anuj's experience as a .NET architect or as an Integration Architect, please visit the clients section of this website or
contact Anuj for details.
If your application is experiencing performance issues, Anuj's CoReTM Service may be of interest to your company.
|
High-Performance Web Applications
|
Of his last two large ASP.NET projects, Anuj helped turn the first one from a
bottom 10 percentile website to a top 25 percentile website (details). With his second
application, he helped DELL successfully recall over a million defective laptop
batteries from around the world (details).
|
- Anuj has been involved with highly scalable
ASP.NET websites capable of handling large amounts of data using advanced
caching and display strategies. Anuj was recently involved with
DELL's battery replacement initiaive to recall defective laptop batteries
from around the world.
- State Management, Caching, Custom HTTP Handlers... Anuj continues to extract performance from his ASP.NET applications through the use of advanced caching and state-management techniques. He has also worked hands-on with some of the more esoteric ASP.NET features such as custom HTTP handlers and the request processing pipeline.
- Internationalizaton/Globalization - Anuj
has worked extensively with .NET's internationalization support to build
websites that support several languages. Anuj's design allows for the
flexibility of adding new languages down the road without source code
modification.
- ASP.NET datagrids and Custom controls -
Anuj has designed custom web controls to handle display of complex data -
including nested relationships as well as sorting, grouping and filtering of
data.
- .NET SOAP and WebServices (Also see the
SOA 'Area of Expertise'). Anuj has been involved with the design and development
of secure SOAP messages using both Java SOAP and .NET SOAP.
- Migration from classic ASP to ASP.NET -
Anuj was the lead architect in moving a
popular social networking
website from ASP to ASP.NET
- IIS administration, configuration and
troubleshooting - Anuj has a hands-on knowledge of ASP.NET and IIS
Security, Authorization and Authentication, Roles, Membership management as well
as certificate management.
- If you are interested in learning more about Anuj's experience as a .NET architect, please visit the clients section of this website or
contact Anuj for details.
If your application is experiencing performance issues, Anuj's CoReTM Service may be of interest to your company.
|
Distributed Applications, SOA and Web Services
- Large file transfers: Web Services over SOAP were never designed to handler large binary data transfers.
However, industry needs have led to various workarounds. Newer extensions provide various options - including SwA, Mime and
WS-Attachments. Anuj has hands-on experience with several file transfer
technologies both .NET SOAP as well as Axis SOAP.
- Security: Anuj has worked with the next generation of WebServices
using WS-Security, WS-Policy and WS-Addressing to apply security and other constructs to meet the demands of complex SOA architectures.
- Integration of Java SOAP with .NET SOAP: Building
multi-platform services using both Java SOAP (both Axis and Apache) and .NET
SOAP leads to various interoperability issues. These are some of the
challenges that Anuj has
helped clients overcome in the capacity of an SOA Architect.
- If you are interested in learning more about Anuj's experience as a Web Services
Architect, please visit the clients section of this website or
contact Anuj for details.
If your application is experiencing performance issues, Anuj's CoReTM Service may be of interest to your company.
Service Broker Based SOA architecture
High Performance Desktop and Web Applications, Trading Systems and Financial Markets Programming
Anuj has broad experience with high traffic web applications as well as thick
desktop client applications. His trading systems software experience includes
both financial maket systems as well as energy trading systems.
- Some vertical scalability techniques that Anuj has used involve advanced
multi-threading patterns including:
- Performance-centric analysis of use cases into synchronous and asynchronous
workflows. Using asynchronous invocation of methods (both on separate threads as well as via delegates)
where required - for improved performance.
- Object design accommodating concurrency, e.g. using ReaderWriterLocks for concurrent access to objects.
- High-performance component-oriented design - reusable components built for concurrent access.
- Implementing ISynchronizeInvoke for multiple thread access to object methods
- BackgroundWorker usage on UI forms to handle user events while performing background tasks.
- Multithreaded web services designed to handle simultaneous service
requests and thousands of consumers.
- Modification to the built-in .NET Thread pool - to overcome some of its shortcomings.
- Anuj is an expert on some of the High-Performance characteristics of trading systems - including state management, persistence, recovery, load balancing etc.
- If you are interested in learning more about Anuj's experience as a
high-performance systems
Architect, please visit the clients section of this website or
contact Anuj for details.
If your application is experiencing performance issues, Anuj's CoReTM Service may be of interest to your company.
|
Comprehensive Code Review (CoReTM) Services
| Study after study has shown that good unit test suites lead to fewer bugs as well as cleaner (refactored) software. The opposite also holds true - lack of comprehensive tests leads to software that is defect-ridden and harder to maintain. Anuj provides a comprehensive code review of your entire code base which includes: |
- Code Coverage Statistics - to determine what fraction of your code is missing good test coverage (and hence may be open to defects).
- Refactoring of larger Components, Classes and Methods - Often times, unintentionally, a class or a component grows to provide more functionality than originally intended. The same may be true of individual methods within classes. Anuj meticulously goes through each class and using proven OO techniques such as composition and inheritance, breaks up larger classes into manageable ones.
- Revalidation of business process - One of the side-effects of the CoReTM service is that re-factoring, by its very nature, involves re-visiting key business process decisions. This leads to a thorough re-validation of core business workflows. Often times, Anuj's CoReTM service, has caught major loopholes and missing pieces of functionality - as a pure side-effect of his refactoring efforts.
- Standardized components for logging, object disposal, exception handling etc, - Another thing that tends to happen on larger projects is a mish-mash of logging methods, memory cleanup and exception handling code. Anuj painstakingly re-works code to ensure that objects get disposed correctly to prevent memory leaks - he inspects all exceptions to ensure that the appropriate ones get handled. In addition, he provides a standardized logging component for the entire application.
- Documentation - As per one research, less than half of all software applications are well documented. Code documentation usually stays on the back-burner - unless each developer makes a conscientious effort to provide thorough documentation. As part of his re-factoring effort, Anuj provides complete code documentation for the classes and methods that are lacking in this regard.
How does it work? How long does it take?
While it is dependent on the number of lines of code, the initial phase (examining the code) -
typically takes between 1 to 2 weeks. At the end of this phase, Anuj will provide a list of areas that would benefit from code modifications (including re-factoring, additional unit tests, memory cleanup etc.). He will also provide an estimate of the time required for the second phase. Although it is highly dependent on the size of the code-base, the second phase takes anywhere from 6 weeks to 12 weeks depending on the volume of code involved. Anuj also provides a comprehensive document at the end of phase 1 - should you choose to use someone else to implement phase 2.
What is the end result?
Code that has gone through the CoReTM service continues to have lower bug-incidents and proves to be easier to maintain due to:
|
- Better test coverage
- Smaller, self-contained classes - leading to maintainable classes and methods
- Standardized memory cleanup (disposal) technique, standardized logging, standardized exception handling - leading to better application performance
- Re-Validated business process - filling in missing pieces of functionality.
|
|
|
These are some of the areas that Anuj specializes in.
Click on a specific area to see Anuj's experience with that technology.
|
| |
|
|
| |
|
|
|