Author: Marcus du Sautoy
Publisher: HarperCollins, 2008
Published first in the UK as Finding Moonshine, the first US edition got a title that a layman can relate to more easily. Symmetry is everywhere, in nature as well as in man-made objects. Symmetry gives balance and stability to structures. Symmetry is aesthetically pleasing just as lack of symmetry can be used cleverly to draw attention or to suggest that perfection must be left to the Gods. Flowers use symmetry to attract bees, whose vision has been honed to recognize patterns rather than colours. The way bees form their honeycombs is also symmetrical. Outward symmetry can sometimes hide inward asymmetry, as in the human body. Symmetry exists in the molecular structure of methane.
The way to explain symmetry is through mathematics and this book takes the reader through the journey of one specific branch of mathematics called group theory. In particular, the book is about the classification of finite simple groups (CFSG), which is the pinnacle of achievement in this branch. While mathematics is not every reader's cup of tea, this book simplifies the subject a great deal. Anecdotes make it entertaining. The book is also an insightful view into the world of mathematicians and how they work.
Payments made easy
It was in December 2016 that the BHIM app was launched by our Prime Minister. BHIM couldn't have asked for better timing. It came at the heels of demonetization when all of India was focusing on cashless payments. Cash was in short supply and alternative means of payments were in demand. About two months later, YourStory carried a story about 27-year old Nikhil Kumar who had apparently built the BHIM app in just three weeks. A few days ago Nikhil Kumar spoke at a small gathering of enthusiasts at Thought Factory, Bangalore. I attended mostly to know about UPI and BHIM but also partly out of curiosity to see the man behind the app.
I am yet to install the BHIM app on my smartphone. While I'm not a Luddite who stands against the advance and adoption of technology, I'm certainly not an early adopter. Since I know the engineering side of things, experience tells me that early releases are prone to contain bugs. Particularly in today's world of MVP releases and lean/agile processes, no one waits for a well-tested product. First releases will certainly contain problems when test-driven methodologies are not followed; or test automation has been sidelined due to more pressing delivery deadlines. So I haven't been using BHIM but I certainly wanted to know what it was.
The new kid on the block
The emerging IoT industry is an aggregation of products and services, complementing each other to enable efficiency and cost optimization in multiple industries. It does not have a vertically oriented value chain. IoT end nodes will be scattered in billions in various industries.
As mentioned in my earlier post ARM vs Intel: The new war frontiers, COTS processors will not be ideal for building these end nodes, as the latter are application specific. Companies would be inclined to adopt custom processors as they offer flexibility to assemble only required parts. These parts can include analogue sensor, DSP, proprietary IP, etc. Further, custom processors substantially reduce BoM cost and die size, which will minimize power dissipation. It also helps companies to differentiate their product from those of their competitors. In view of failing Moore’s Law, customization is the answer as it can reduce the BoM cost significantly.
Takeaways from Intel AI Developer Workshop @ Bangalore
Images in this article are copyright of Intel.
I just returned from a full-day developer workshop organized by Intel. The focus was on Artificial Intelligence (AI) and how Intel is contributing in mankind's best efforts to teach machines to sense, reason and decide. The event was a useful peek into what Intel is bringing to the table in terms of both hardware and software. Beyond that, it was not an event that I would call a developer workshop since there were no hands-on sessions, demos or even tips and tricks that developers can use. The event was structured as a line of talks in order to bring awareness of Intel's involvement in AI and where the market is headed.
AI originated in the 1950s but it was only in the 1980s when Machine Learning (ML) came about that people started to think it might be possible to realize AI. Machines can be trained and then asked to solve problems. Their algorithms could be tweaked as they learn and relearn with more sets of data. Deep Learning (DL) came about as a sub-branch of ML, where neural networks became the basis of learning. DL has brought us closer to the dream of realizing AI but DL alone did not achieve this.
Visualizations in R and their discussion
Two days ago I was thinking of starting a new meetup group in Bangalore but in the process I asked a few questions. I wonder how many meetup groups are there in Bangalore? I wonder many of these are really active? Which are the big ones? How many members are there in total? To answer these questions and satisfy my curiosity, I downloaded some data from Meetup.com and analyzed the same.
In fact, Meetup offers an API to make this process easier but the API has its limitations. You can only look at the details of a group after you have joined it. So I adopted a manual approach since I was interested in only high-level metrics. I copied some overview data manually from the web browser. Subsequently, individual group information was obtained by web scraping. The language of choice for this and subsequent visualization was R. So, here are the findings.
Analysis of a chat app and resolving the problem
A system in which concurrent events come in can affect behaviour depending on the relative timing of these events. Those working with embedded systems are probably familiar with this problem. Hardware interrupts come in at unpredictable times. One layer sends a message to trigger action from another layer. Data comes in via the wireless interface. A timer expires. How does one reliably handle all these events without taking the system to an unknown state? It would be worse if the system can't recover from such a state.
Real-time operating systems (RTOS) have some things to handle data synchronization, critical sections and race conditions. But can we have such problems in a web app? The answer is yes, as I found out recently when developing a "chat-like" app. The chat window of this app can be updated anytime by multiple users. When user A creates a new chat message, user B can also see it as long as the chat window is open. User B can then reply to user A's message.
Measure, analyze and optimize app experience
I come mostly from a web app background. I haven't done much work in the mobile apps except for dabbling with some sample code in React Native. Mobile has come a long way. Yes, it's built on the foundations of web app development but today it has a life and roadmap of its own. I was therefore glad to attend today's event organized by Flurry, which is a platform for mobile analytics. Flurry was founded in 2005 and acquired by Yahoo in 2014. The event this afternoon was attended by entrepreneurs, developers and marketing executives. There was so much information packed into one afternoon that I'm sure everyone took away something useful from it, even if they were experienced in the mobile space.
The format was a mix of panel discussions and focused talks. It was nice to see representation from a spectrum of Indian start-ups. It happens sometimes that events organized by US or European companies feature speakers who know quite well their US or European markets but nothing much about the Indian market. Today's event was quite different. With speakers and moderators from Paytm, Flipkart, CouponDunia, Wooplr, Bounty, YourStory and more, it was clearly and rightly focused on the Indian market. There were of course guys from Flurry, Truecaller and Branch Metrics who gave lot of additional insights.
The future of real-time apps
This afternoon I got to attend an event organized by Kranky Geek at 91Springboard, Bangalore. The topic of the day was WebRTC, an API and protocol that enables real-time communications without the pain of installing plugins, configuring devices or worrying about security. The event was nicely structured: an overview, a detailed explanation of a typical call setup and its API calls, a live coding demo, a look at multiparty complexities, and finally an insight into how a startup PiOctave is using WebRTC in its IoT product.
Real-time communications has always been a challenge on the web, although I must point out that the birth of UDP/IP/VoIP owes a lot to Network Voice Protocol (NVP) of the 1970s, perhaps the first real-time protocol of the Internet. The problem was that back then we were handicapped by low bandwidths and modem speeds. This is not much of a problem these days but true many-to-many media streaming is hampered by the architecture of the web. WebRTC is trying to overcome that.