About
Programmer, father, husband, avid reader, author, occasional speaker at technology…
Articles by Debasish
Activity
-
LeanStore was a landmark in in-memory data management beyond main memory and had influenced lots of subsequent implementations like Umbra and…
LeanStore was a landmark in in-memory data management beyond main memory and had influenced lots of subsequent implementations like Umbra and…
Posted by Debasish Ghosh
-
Politico asked me if I thought AI was having a big impact on the job market, and after looking closely at the data, I developed a more cynical…
Politico asked me if I thought AI was having a big impact on the job market, and after looking closely at the data, I developed a more cynical…
Liked by Debasish Ghosh
-
Maybe it's a common knowledge in an LSM engine, but it took me some time of weekend reading to articulate the correlation between compaction strategy…
Maybe it's a common knowledge in an LSM engine, but it took me some time of weekend reading to articulate the correlation between compaction strategy…
Posted by Debasish Ghosh
Experience
Education
Licenses & Certifications
Publications
-
Programming language impact on the development of distributed systems
Journal of Internet Services and Applications (Springer)
-
DSL for the Uninitiated
Communications of the ACM
A domain-specific language (DSL)1,3 bridges the semantic gap between business users and developers by encouraging better collaboration through shared vocabulary. The domain model the developers build uses the same terminologies as the business. The abstractions the DSL offers match the syntax and semantics of the problem domain. As a result, users can get involved in verifying business rules throughout the life cycle of the project.
-
DSLs In Action
Manning
Your success—and sanity—are closer at hand when you work at a higher level of abstraction, allowing your attention to be on the business problem rather than the details of the programming platform. Domain Specific Languages—"little languages" implemented on top of conventional programming languages—give you a way to do this because they model the domain of your business problem.
DSLs in Action introduces the concepts you'll need to build high-quality domain-specific languages. It…Your success—and sanity—are closer at hand when you work at a higher level of abstraction, allowing your attention to be on the business problem rather than the details of the programming platform. Domain Specific Languages—"little languages" implemented on top of conventional programming languages—give you a way to do this because they model the domain of your business problem.
DSLs in Action introduces the concepts you'll need to build high-quality domain-specific languages. It explores DSL implementation based on JVM languages like Java, Scala, Clojure, Ruby, and Groovy and contains fully explained code snippets that implement real-world DSL designs. For experienced developers, the book addresses the intricacies of DSL design without the pain of writing parsers by hand. -
Multiparadigm Data Storage for Enterprise Applications
IEEE Software, September/October 2010, Special Issue on Multiparadigm Programming
Most of today's enterprise applications use a relational database management system as the underlying data store. This often creates an impedance mismatch between the application layer and the data layer, because most applications use object-oriented or functional languages. Storing data the same way it's used in the application would simplify the programming model, making it easier to decentralize data processing and, in turn, enable horizontal scaling. Emerging NoSQL data-storage engines…
Most of today's enterprise applications use a relational database management system as the underlying data store. This often creates an impedance mismatch between the application layer and the data layer, because most applications use object-oriented or functional languages. Storing data the same way it's used in the application would simplify the programming model, making it easier to decentralize data processing and, in turn, enable horizontal scaling. Emerging NoSQL data-storage engines support this strategy. Just like the application layer, the data-storage layer can use multiple paradigms and store data in a way that's semantically closer to the corresponding domain models. This article discusses a strategy for using multiparadigm data storage within a single application. It includes an architecture for keeping multiple data stores in sync by using a messaging system that asynchronously pushes updates between data stores, achieving eventual consistency.
-
Scala and Lift—Functional Recipes for the Web
IEEE Internet Computing, vol. 13, no. 3, pp. 88-92, May/June 2009
Today, there's significant interest in functional languages and frameworks that fit the Web better than imperative languages. We explore Scala, an OO-functional language on the Java virtual machine, and Lift, a framework implemented on Scala's functional features. The Scala language offers functional programming features and asynchronous message-passing concurrency alongside a statically typed model. Lift exploits this model to offer secure, higher-level abstractions to Web developers.
Other authorsSee publication -
Handling Parameter Passing in Dynamic Handling of Enterprise Reports
International Conference on Computing: Theory and Applications, 2007
In Enterprise Reporting, we build a report template and reuse the template with different sets of data and parameters for rendering to different reports. While working for a product initiative towards catering to reporting solution space, we have designed and implemented a scheme for management of passing set of parameters to the report processing during rendering from same report template. For rendering a report with different set of parameters, we use an efficient algorithm to generate the…
In Enterprise Reporting, we build a report template and reuse the template with different sets of data and parameters for rendering to different reports. While working for a product initiative towards catering to reporting solution space, we have designed and implemented a scheme for management of passing set of parameters to the report processing during rendering from same report template. For rendering a report with different set of parameters, we use an efficient algorithm to generate the ordered combination of parameters taken from a disjoint set of parameters. While the rendering is in progress, in case the process is abandoned suddenly, the process can restart the dynamic rendering process from the rest of the parameter tuples by using cached storage. In this paper, we discuss about the scenario, the algorithm, its computational complexity, implementation aspects and the benefits.
Other authorsSee publication -
Application Failover Using AOP
InfoQ
AOP has recently been in the midst of controversies with Gavin King snubbing it as a totally over hyped, failed technology and Cedric Beust also expressing serious doubts regarding aspects making it to mainstream programming, branding AOP as a great idea that will remain the privilege of a few expert developers. This article does not try to create a fan syndrome of Aspect Oriented Programming (AOP) - it describes how this technology has delivered barrels of good to a real-life Java EE project…
AOP has recently been in the midst of controversies with Gavin King snubbing it as a totally over hyped, failed technology and Cedric Beust also expressing serious doubts regarding aspects making it to mainstream programming, branding AOP as a great idea that will remain the privilege of a few expert developers. This article does not try to create a fan syndrome of Aspect Oriented Programming (AOP) - it describes how this technology has delivered barrels of good to a real-life Java EE project with a large financial organization in addressing some of the critical cross cutting concerns as last minute changes in project requirements. The scenarios described and the solutions implemented nicely portray how AOP complements OOP in addressing orthogonal concerns of modeling a business application.
-
Type-safe Data Accessor Objects in Java EE Applications
First International Conference on Emerging Applications of Information Technology, 2006 – CSI, IEEE
Java EE applications which use relational database for data persistence often face an impedance mismatch between the
object-oriented paradigm implementing business logic and the procedural SQL used for modeling database queries. In spite of all OO concepts implemented at the business layer, SQL queries
are still found buried within string constants or prepared
dynamically at runtime using type-less constructs. This paper identifies the problem of type-unsafety associated with this…Java EE applications which use relational database for data persistence often face an impedance mismatch between the
object-oriented paradigm implementing business logic and the procedural SQL used for modeling database queries. In spite of all OO concepts implemented at the business layer, SQL queries
are still found buried within string constants or prepared
dynamically at runtime using type-less constructs. This paper identifies the problem of type-unsafety associated with this approach and suggests a solution to make relational database query more typed. Instead of database queries being embedded within type-less structures, the paper suggests an implementation framework which constructs typed Data Accessor Objects (DAOs) for providing database query services. Typed DAOs can be organized in an hierarchy corresponding to all persistable entities of the application and provide a uniform query interface to all
clients. The paper also explores the idea of compounding the DAO pattern with the Value Object (VO) pattern of Java EE applications to provide a more flexible model of the business tier of the application.Other authors -
Generics in Java and C++: a comparative model
ACM SIGPLAN Notices 39, 5 (May 2004), 40-47
All object oriented programming languages offer various degrees of support for generic programming. C++ offers parametric polymorphism through templates [12], Eiffel [11] offers
parameterized classes, Haskell and ML also offers some form of parametric polymorphism. Till JDK 1.5 (beta), Java had no direct support for parameterized types – the user had to depend on
the “generic idiom” [1], where variable types were replaced by their typed upper bounds (typically Object) to provide the…All object oriented programming languages offer various degrees of support for generic programming. C++ offers parametric polymorphism through templates [12], Eiffel [11] offers
parameterized classes, Haskell and ML also offers some form of parametric polymorphism. Till JDK 1.5 (beta), Java had no direct support for parameterized types – the user had to depend on
the “generic idiom” [1], where variable types were replaced by their typed upper bounds (typically Object) to provide the façade of genericity, while introducing casts in referring to the specific uses of these types. The collection classes introduced in JDK 1.2, the Observer pattern implementation of JDK 1.1, all provided enough emphasis on the aspects of fostering genericity in the programming model, although direct language support was missing.
Come JDK 1.5 – we have the Java Generics, supposed to make type-safe container based programming a reality to the programmers. This paper tries to analyze the implementation of the Java Generics and its comparison with the templates of C++. In C++, templates provide one of
the vehicles of generic programming – class templates provide support for type-safe generic containers, while standalone function templates represent generic algorithms. Hence templates in
C++ are not strictly tied to the object oriented model – in fact, C++ templates go a long way in enriching the multi-paradigm design philosophy. -
Implementation of a Database Factory
ACM SIGPLAN Notices 32, 6 (June 1997), 14-18
Object oriented software systems that utilize relational databases for data-store have to deal with the problem of interfacing to the relational data. This aspect of the software is more relevant to the solution domain rather than the problem domain i.e., the business requirements of an application do not dictate that there be a mechanism that allows the application to store and retrieve relational data. Hence, de-coupling the application from the database and its interface is relevant from the…
Object oriented software systems that utilize relational databases for data-store have to deal with the problem of interfacing to the relational data. This aspect of the software is more relevant to the solution domain rather than the problem domain i.e., the business requirements of an application do not dictate that there be a mechanism that allows the application to store and retrieve relational data. Hence, de-coupling the application from the database and its interface is relevant from the perspective of portability that of the application to other kinds of databases. For example, it is conceivable the application may be required to work with relational databases from different vendors. This article shows an adaptation of the Factory Method Pattern and the Abstract Factory Pattern [1] as a generic solution to the problem of de-coupling application code from the underlying database and its associated interface mechanisms.
Other authors -
Courses
-
Data Structures
-
Languages
-
English
-
-
Bengali
-
-
Hindi
-
Organizations
-
ACM
Senior Member
- Present
More activity by Debasish
-
Async Rust’s disk I/O is not always ideal, largely because fully asynchronous file I/O APIs are relatively new on most mainstream operating systems…
Async Rust’s disk I/O is not always ideal, largely because fully asynchronous file I/O APIs are relatively new on most mainstream operating systems…
Liked by Debasish Ghosh
-
Understanding the inner workings of one storage engine helps you use that database more effectively. Understanding multiple classes of storage engine…
Understanding the inner workings of one storage engine helps you use that database more effectively. Understanding multiple classes of storage engine…
Liked by Debasish Ghosh
-
A picture John Hughes took of me giving my keynote talk Functional Programming for Hardware Design at #icfpsplash25. A few key quotes/messages: * I…
A picture John Hughes took of me giving my keynote talk Functional Programming for Hardware Design at #icfpsplash25. A few key quotes/messages: * I…
Liked by Debasish Ghosh
-
Encode and enforce invariants in data structures at type level in Haskell, and their later verification by the type checker, explained with examples…
Encode and enforce invariants in data structures at type level in Haskell, and their later verification by the type checker, explained with examples…
Shared by Debasish Ghosh
-
One of my favorite programming idioms - use the least powerful abstraction that works. Monads are too expressive and as the paper says "the more…
One of my favorite programming idioms - use the least powerful abstraction that works. Monads are too expressive and as the paper says "the more…
Shared by Debasish Ghosh
-
Almost 63% of the students didn't attempt Q1 of Maths of Paper 1 of JEE Advanced 2025 (qp: https://lnkd.in/dErQA9hP) according to…
Almost 63% of the students didn't attempt Q1 of Maths of Paper 1 of JEE Advanced 2025 (qp: https://lnkd.in/dErQA9hP) according to…
Liked by Debasish Ghosh
Other similar profiles
Explore collaborative articles
We’re unlocking community knowledge in a new way. Experts add insights directly into each article, started with the help of AI.
Explore MoreOthers named Debasish Ghosh in India
-
Debasish Ghosh
Data and Analytics engineer
-
Debasish Ghosh
-
Debasish Ghosh
Supply Chain Management,IIM,Indore | Buying Manager Accessories - Flipkart | KAM - Electronics at Appario (Amazon) | Ex- Portfolio Manager at BuyMore - Nutrition & Beauty | Ex- Department Manager Grocery at RIL
-
Debasish Ghosh
Senior Director, Data & Analytics, EMEA
820 others named Debasish Ghosh in India are on LinkedIn
See others named Debasish Ghosh