Flex, Regular Expressions, and Lexical Analysis

 What Makes a Programming Language?

There is an alphabet, words, grammar, statements, semantics, and various ways to organize the previous in order to create a computer program in a programming language. Flex helps developers create a tool called a lexical analyzer which identifies the words of a program during the compilation/interpretation process.

Continue reading

Tending To Infinity

What kind of thoughts does the word ‘infinity’ evoke in your mind? Do you visualize a never-ending expanse that stretches in all directions? Or maybe a straight line extending in both directions beyond visual perception. Some of us may even think of an astronomical figure and conceptualize infinity to lie much beyond this number itself. Yet, how does mathematics treat infinity? How do we logically/formally make sense of this idea and put it to great use to further enrich our understanding of this universe?

Let’s explore and demystify what this rather abstract construct really conveys to us through the language of mathematics. Continue reading

The Surface Dial and the Physical/Digital Divide in Interactions

Microsoft announced their new Surface Studio this week. It acts as an all-in-one computer, but with a modular screen that can be re-positioned to act as a drawing tablet. The idea of a computer screen that works as a drawing tablet is nothing new. Wacom and other companies have been producing devices like this for years. What’s new about this is the fact that Microsoft has made the screen an integral part of the computing device, rather than a peripheral that can be added later if needed.

surface-studio-2

The Surface Studio. (Image Credit: https://news.microsoft.com/surface-studio-2/)

By doing this, Microsoft is bringing a novel interactive technique to a wider audience. Starting at $3,000, a fairly wealthy audience, but still, comparable in price to a high-end Wacom tablets + a professional graphic artist computer.

Continue reading

Using Scrum in your research

Agile methods on software development are very popular. The root of these methods must be sought in the on the Agile Manifesto that says:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

In short, these lines says that the world is always changing, the adaptation to change, the collaboration between people and the transfer of knowledge should be a priority in our professional life.

These objectives fit with software development but also with research because, we software developers and researchers are always looking for new challenges, always updating our professional network and making improvement in science.

Continue reading

Diving into IBM’s Quantum Experience through your Browser

People tend to stay away when they hear the word “Quantum Computing”. The word itself gives the feeling that it targets scientists or physics researchers, but not your average person scrolling down in their newsfeed. However, quantum computing increasingly becomes more mature to kill its reputation as a hard field. Understanding quantum computing requires as much imagination as math or physics knowledge. In this post, I’m going to briefly spark your imagination about the next generation of computers and give you a glimpse of how IBM makes the experience accessible through your web browser; not access-restricted physics labs.

What is Quantum Computing?

Perhaps you are reading this blog post from your desktop, laptop, tablet or smartphone. All of these devices run on a traditional computer (or what we call: classical computer). Every piece of tech gadget you are using nowadays uses the concepts of classical computing. But what are classical computers and how are they different from quantum computers?  Continue reading