Lessons from Evernote Usage of Apache Thrift Framework

This article throws light on underlying technology used by Evernote to meet the primary requirement of having client applications on different OS platforms connect to server application for accessing/updating the notes.   What is Evernote?   As per Wikipedia…Evernote is a suite of software and services designed for notetaking and archiving. A “note” can be a piece of formatted text, a full webpage or webpage excerpt, a photograph, a voice memo, or a handwritten “ink” note…. Evernote supports a number of operating system platforms (including OS X, iOS, Chrome OS, Android, Microsoft Windows, Windows Phone, BlackBerry, and webOS) and also offers online synchronisation and backup services. The diagram below illustrates …

Continue reading

Posted in Integration, SOA. Tagged with , , .

Why Amazon.com Pages Rely on DNS Pre-fetch

The article presents a perspective on why Amazon.com pages rely on DNS pre-fetch and what other e-commerce websites could learn from this.   Whats Happening Under the Hood? As you do the view source of the homepage, amazon.com, you would find following Javascript code snippet, right at the top of the page:   <meta http-equiv=”x-dns-prefetch-control” content=”on”> <link rel=”dns-prefetch” href=”http://g-ecx.images-amazon.com”> <link rel=”dns-prefetch” href=”http://z-ecx.images-amazon.com”> <link rel=”dns-prefetch” href=”http://ecx.images-amazon.com”> <link rel=”dns-prefetch” href=”http://completion.amazon.com”> <link rel=”dns-prefetch” href=”http://fls-na.amazon.com”>   Later, in the same page as well as other pages, you would find several resources such as images, Javascript, CSS files accessed from one of the above as base URLs. So, let’s try and explore some of the …

Continue reading

Posted in Performance Engineering. Tagged with , .

Learning Coding Tips from Martin Fowler is OK!

This article is first in the series of “Developers Hall of Fame” pages that we have recently started, and talks about some of the works of Martin Fowler, the Software Engineer, from whom I personally learnt a great deal and also recommend others, primarily rookies, from time-to-time. In his about me page, he introduces himself to be “an author, speaker… essentially a loud-mouthed pundit on the topic of software development“. Note that this page shall be updated at regular intervals with Martin’s work that would benefit developers at large in software design and development. Before I go ahead and include some of his pages which could be of great benefits …

Continue reading

Posted in Hall of Fame. Tagged with , .

Javascript Frameworks used in LinkedIn.com

The article lists down different Javascript frameworks that have been used in LinkedIn web UI and mobile app. Following are some of the key Javascript frameworks that have been used in various different LinkedIn applications (Web & Mobile). If you disagree with one or more of these frameworks, please shout out loud. Also, feel free to suggest of frameworks that I missed to include. Sorry for any typos/misspellings as you read further.   Dust.js Dust.js, the client-side templating engine, is used to serve LinkedIn webpages with common UI code for different web-apps products. These web-apps products are created using varied technology stack including Java/Grails/JRuby etc. With Dust.js, LinkedIn moved from …

Continue reading

Posted in Web. Tagged with , .

LinkedIn Application Architecture – Software Distribution View

The article lists down the softwares used at different layers in the LinkedIn platform layered architecture. Presentation Layer Dust.js (Client-side templating JS engine) Backbone.js (Client-side MVC JS framework) JQuery  YUI Library (UI libraries started by Yahoo engineers) Google V8 Engine (Used as server side JS templating engine) Node.js (Used in mobile app) HTML5 (Used in mobile app) Business Layer Java (Applications such as Profile) Grails (Applications such as a Recruiter app) JRuby (Applications such as a Skills app) Spring (Component Model) Scala Middleware Apache Kafka (Distributed entreprise-level messaging system) Data Layer Oracle (RDBMS as primary data store used for writes) Espresso (NoSQL data store emerging as primary data store and envisioned to …

Continue reading

Posted in Architecture. Tagged with , .

OWASP Security Misconfiguration Example – Infosys Career Website

The article presents an example of “Security Misconfiguration” vulnerability that was found on Infosys career website. It could be noted that security misconfiguration is considered as one of the OWASP top 10 security vulnerabilities. The vulnerability was found with Careers web application of Infosys, which can be accessed at https://careers.infosys.com/. As you access the career site link, you would see the title icon as “SAP”. This does suggest that Infosys careers web application is created on top of SAP career module. The way I found that is following: Go to job opportunities page. Click on “Register”. You would land on the registration page with following link: https://careers.infosys.com/sap/bc/webdynpro/sap/hrrcf_a_candidate_registration Go ahead and strip the hrrcf_a_candidate_registration from …

Continue reading

Posted in Application Security. Tagged with , .

Data Architecture Lessons from LinkedIn.com Data Handling Mechanisms

The article aims to describe how data is managed at LinkedIn.com, the most popular professional social networking site.  Please shout out loud if you disagree with one or more of the aspects mentioned below. Also, do suggest if I missed on one or more aspects. Data use-cases at LinkedIn.com Following are some of the data use-cases that we may have come across while we are surfing various different LinkedIn pages: Update your profile, and the same appears in recruiter search in near real-time. Update your profile and same appears as network connections  in near real-time. Share an update, and same appears on others news feed page  in near real-time. Then, there are …

Continue reading

Posted in Architecture, Performance Engineering. Tagged with , , .

Reasons Why You Need Log Management Tools like SPLUNK

The article lists down reasons why one would want to use tools such as Splunk which primarily analyses logs (server, application etc) and create reports/events to be processed by different stakeholders. Log Management Tools – High Level Architecture Log management tools primarily aggregate logs from different servers including application, database, messaging servers etc and send the same to a centralized  server which then analyzes and index the logs in the database. The end user  can then log onto the console of these tools and analyze the reports created on top of these logs. Following diagram represents a very high level architecture along with end users classification: Following are some of …

Continue reading

Posted in Application Monitoring. Tagged with .

Developers Playgrounds to Play & Learn

The article lists down the details around different programming playgrounds that could be used by developers to learn while playing with different technologies (programming languages & APIs). What are Developers Playground? Developers playground are online applications that facilitates enhanced learning of different programming languages/API by providing developers with the IDEs like development platforms where different programs could be written and executed side-by-side and results could be studied/examined. Following is the broad classification of such playgrounds. Programming Playground In playgrounds related with programming languages, developers could learn languages while doing the coding and see the output side-by-side. Following are some of the programming playgrounds: Codecademy.com (It also presents playground for APIs …

Continue reading

Posted in API Development, Software Engg. Tagged with , .

Artificial Intelligence – Where to Put Your Time & Money

As I looked around some of the artificial intelligence (AI) related acquisitions in last few years, I got convinced, at least, on the fact that majority of large companies such as Google, Facebook, IBM are seeing various different artificial intelligence topics to play a key role in impacting end users’ life (and hence, developers) in the future. With that as the background, it gave me good enough reasons to start doing research in relation with following: As students, what topics of artificial intelligence should they take up as one of their computer science courses while  selecting under-graduate & post graduate courses? As developers/programmers, what topics of artificial intelligence should they …

Continue reading

Posted in Artificial Intelligence. Tagged with .

Java Interview Questions (Part 1) – Rookies Series

The article (first in the series) aims to present some tricky interview Java questions that could help you score high in your next Java interviews:    Programming fundamentals Question: What is difference between object-oriented programming and functional programming? Answer: Following pages present good perspective on the differences: http://stackoverflow.com/questions/6720348/difference-between-oop-and-functional-programming-scheme http://c2.com/cgi/wiki?OoVsFunctional    Java Objects Question: What is difference between comparing two objects using equals method and “==” operator? Answer: http://stackoverflow.com/questions/5848370/equals-and-operator-in-java Question: What is the significance of equals and hash method in Object class? Answer: http://www.javaworld.com/article/2074996/hashcode-and-equals-method-in-java-object—a-pragmatic-concept.html    Collections Question: What is difference between LinkedList and ArrayList? When would you want to use one and not the other? Answer: http://javarevisited.blogspot.in/2012/02/difference-between-linkedlist-vs.html Question: How come you …

Continue reading

Posted in Freshers, Java. Tagged with , .

Can Artificial Intelligence be the Next Big Bet for Developers?

The article presents an analysis on what’s trending in the world of artificial intelligence thereby providing food for thought for the developers if they would want to bet on engineering field such as artificial intelligence and develop their expertise around that. What is Artificial Intelligence? Artificial intelligence (AI) is the intelligence exhibited by machines or software, and the branch of computer science that develops machines and software with human-like intelligence. Read further on the Wikipedia page. In this article, we shall primarily focus upon the software that could have human-like intelligence. Following are some of the characteristics of AI-based software: Maintain ontology of knowledge representing concepts and their relationships. Should have …

Continue reading

Posted in Artificial Intelligence. Tagged with .

What’s Needed to Get Your Code Quality Match ISO Standard 25010

The article relates software quality characteristics defined by ISO 25010 standard (SQUARE) with code quality and, recommends on what could be done by the developers to write the code matching the ISO quality standards. SQUARE stands for Software QUAlity Requirements and Evaluation (SQUARE). Please feel free to comment and add further points in any of the sections pertaining to quality characteristics listed later below. As per ISO 25010 (SQUARE) standards, Software quality can be defined, managed and measured in terms of following two broad categories: Quality in Use: Relates to the outcome of human interaction with the software Product Quality: Relates to the static & dynamic properties of the software …

Continue reading

Posted in ISO Standards, Software Quality. Tagged with , , , .

9 Online Developer Academies for Regular & Consistent Learning

The article presents a comprehensive list of online developer academies that provide FREE courses (90% of cases) on different topics related with web and mobile technologies that may prove to be very useful for developers at large. If I missed on making a mention of one or more other interesting portals, please shout out loud and I shall include them in the list below. Lets quickly look at what are the benefits of using one or more of these portals for learning & practicing (in some cases such as codecademy.com) software development topics: On-demand learning to learn at our own pace Structured learning New topics introduced at regular intervals Learning …

Continue reading

Posted in News, Software Engg. Tagged with .

Why Facebook’s Hack May Fail to Fly With PHP Developers?

Well, for those innocent souls, I must make it clear that the title of this article has no intentions to point out that Facebook is hacked or so? This is actually about the new programming language, HACK, that Facebook officially launched few days back. Overview of Hack Language Before I go on to write further, I must thank the Facebook engineering team to have rightfully identified some of the short-comings of PHP programming language and tried to present solutions to them using Hack programming language. However, while I was going through the changes that they made by adding new features to PHP and made it as Hack language, I wondered whether …

Continue reading

Posted in News, PHP. Tagged with .

Why & When Use Java 8 Compact Profiles?

The article presents a perspective on different aspects of compact profiles in Java 8 including relevance of this feature in the first place and, when would you want to use it. As I am also getting up to speed with compact profiles, I do understand that there could be further detail to it that I might have missed and thus, would appreciate if you could share your perspectives as well. What is Compact Profile? As defined on Oracle compact profile overview page, compact profile enable reduced memory footprint for applications that do not require the entire Java platform. In Java 8 release, compact profiles provide three different groupings of libraries …

Continue reading

Posted in Java, News. Tagged with .