Formally, semiotics is the study of signs: how do they relate?, how do they structure meaning?, what rules do they follow? All these questions are important to understand how humans communicate and how we interpret the world around us, so it's no wonder that semiotics are related to the process of building software. We, as developers, create software that communicates not only to the end user, but also to other systems and even to other developers. A clear separation of each part of the ""final message"" is important to keep the code maintainable and more important, to control the meaning of our app. DCI is an elegant way to keep that separation clear, we can manage the "rules" (context), the "symbols" (data) and the "meaning" (information) of the message. During this talk I'll explore some concepts of semiotics which are important for DCI and how DCI uses those concepts to communicate. Part of the talk includes an overview of an app I'm building using grape, which allowed me to build from scratch an architecture based on DCI an experiment ideas and concepts I'd like to share with you.