Category Archives: Technology

Choosing the best web application development framework

I’ve discussed web frameworks before and how they can help in rapid development. In this post, I’m presenting some general guidelines around selecting the best web development framework, based on your requirements, in the the preferred language: Java, Ruby, PHP, Python. The main criterion is evaluating the non-functional requirements it provides out-of-thebox, which can greatly aid rapid development.

What to look at in a framework?

You should know how the design considerations mentioned below are addressed by the frameworks you are evaluating. Depending on the business needs, some might be redundant, but tend to provide a holistic view of the framework’s capability.

  • Scaffolding code: What is the ETD to get a web-form with basic CRUD running?
  • Does it offer the flexibility to choose between convention & configuration?
  • How is input data validation achieved?
  • Is the View layer simplified with a template engine?
  • Does it employ object-oriented design patterns? and demand OOP?
  • Does it follow MVC (Model-View-Controller) pattern? How is routing (URL management) achieved?
  • What ORM tools (object relation mapper) does it support?
  • Does it have built-in support for multi-tenancy?
  • Does it support I18n & L10n out-of-the-box? (Internationalization & Localization)
  • How is Authentication & Authorization managed: inbuilt, using a module or plug-in?
  • Does it allow rapid development/deployment in line with Agile principles?
  • Are there cases of proven success for enterprise class applications?
  • What is the performance benchmark vis-a-vis other frameworks?
  • Is there in-built support/plugins for caching, unit & scenario testing?
  • Is it easy to debug applications, and if possible with in-built support through an IDE?
  • Associated costs & TCO: to build developer & infrastructure expertise, hosting, licensing, support?
  • Does the licensing permit free use for all purposes and the right to modify code as necessary?
  • Does it have a clear product roadmap, sufficient documentation & an active community?

The decision

Don’t get carried away by flashy white-papers, classy developer events or generalized case studies. Your application is going to be different (a reason why you’re building that product in the first place) and while it is good to use guidelines, you need to see what fits your requirement best. Take a weighted approach to evaluating a framework based on the evaluation criteria above and make sure you have enough reason to be convinced.

This post is part of the SaaS Application Development series, extracted from my final dissertation submission at BITS, Pilani that closely looked at rapid-development of SaaS-based applications.

7 non-functional demands from B2B customers

Every Product Manager is a ninja when it comes to dealing with functional requirements. But it doesn’t end there in the B2B space. You may not be a technical product manager, but you still need to understand and address some non-functional requirements without which your product isn’t ready to sell – especially if its transactional in nature, holds sensitive data or requires integration with the client’s IT eco-system. By ‘address’, I don’t mean you need to plan these as features or get involved in the R&D – it’s just about getting answers to what has been done in this regard.

What makes non-functional requirements so important?

Good question! If your product touches any of the 3 aspects mentioned above, the client’s decision to buy the product is incomplete without involvement of the IT team. You might have the CXO’s approval, but even if a single IT executive deems your product unfit for the IT security standards the client is committed to – the sale is likely to fold. You need to make a compelling offer, not just to the functional decision makers, but also to these non-functional evaluators whose buying is equally important. And there is a fair reason to it. Imagine, if you’ve worked hard to keep a floor clean, and someone wants to walk in with their own shoes – no matter how clean they claim to be, would you let them in? IT doesn’t want to risk their network either. I really don’t see this coming in the way of B2C sales – a LinkedIn premium membership or even Online Banking for that matter.

What needs to be taken care of?

Here at at-least 7 areas for which you will need clear answers.

  1. Software requirements: With SaaS, customers have fallen in love with apps that railed on web browsers. But IT remains unsatisfied with the ‘my app runs in a browser’ response. They need to understand whether it runs ‘best’ on a particular browser or a specific version. As a product manager, you need to know the share of each browser version and build support accordingly. Dependency on components (e.g. FLASH) can cause the deal to hit a road-block.
  2. Data Security: Customers always question the security of their data while using hosted services. And this becomes all the more critical when you’re selling a multi-tenant application. If you’re able to help them get over the SaaS phobia, the next questions could be around data security & access control, data center certifications, third-party quality assurance reports, etc. Apart from this, customers solicit information about user authentication and authorization capabilities, user management from the application console and integration with existing user management solutions like LDAP. Don’t be surprised if a client demands a sandbox for a hands-on verification.
  3. Flexible application stack: Customers may explicitly specify software requirements such as the use of specific database engines or application servers. In some cases, they are even willing to pick the tab for additional license fees to ensure Continue reading 7 non-functional demands from B2B customers

Everything has an expiry date – except software?

I was having a discussion with my friend/colleague Amit Shinde about the quality of things, and he brought up this topic of expiry dates. Fortunately for us, here in India, we now – at least – have an expiry date for most food stuff sold on the primary economy. The underground economy – or System D as it is known – is so vast and so uncontrolled that the government cannot even dream of regulating it.

But Amit’s concern was much beyond perishables. He mentioned his iPlugs for example (I’m not a Apple guy and don’t know if they call the iPhone earplugs that). He said that although there was no visual damage, they weren’t performing as they did. After all, everything has a shelf life – which may or may not be straight-forward to predict.

Take vessels for example. The old copper & brass vessels – now costly souveniers – have served families for years. There even exists a maintence process to extend its life. But the non-stick we use today in our fast lives is not built for centuries. Who knows how the coating disintegrates or how the lower layers react with oil/soap. I’m sure there is a point at which it has to be discarded – which is left to the consumer’s discretion. And when it comes to Indians, experimenting overage tolerances on expiry dates

Continue reading Everything has an expiry date – except software?

PHP: Print amount or number in words

Its been real long since I updated this space. And instead of adding something for the heck of it, I thought of posting something really useful. This is a piece of PHP code that returns an amount/number in words. This is in English, but you can easily translate it to your own. Hope this helps!

This reminds me of Semester 1 assignment given by Shalini Puri ma’am to determine the optimal number of currency coins & notes required to put together a specified amount. Good old days!

Rapid application development & web frameworks

Rapid Development

Over the last decade, there has been a massive growth in the number of web-based applications. For every category – email, collaboration or knowledge management to name a few – there are a large number of applications available, and new ones on their way. This has created extreme competition in the market with each application claiming to be better than the other. Even if a new concept exists that is strong enough to drive the market, time-to-market is a crucial factor that will decide the success of the product.

To address this, a rapid application development strategy needs to be in place so that the product and incremental features can be delivered at the expected rate which is dictated by the market & customers. Besides this, development needs to also follow an agile model so as accommodate ever-changing business requirements. This is especially true in the case of product development, where a single product must fit multiple customers with varying business requirements, and the classic waterfall model can lead to complete failure.

Web Application Frameworks

A web application framework (‘framework’ hereon) is a software framework that is designed to support the development of dynamic websites, Web applications and Web services by providing core, non-functional features out-of-the-box. A framework streamlines application development by automating many of the patterns employed for a given purpose and thus resolve the overheads associated with common activities performed in web development.

A framework also adds structure to the code, prompting the developer to write better, more readable, and more maintainable code. It promotes code reuse through the use of libraries for database access (using ORM), template engines, session and user management, logging, internationalization, etc.

Framework selection (we’ll elaborate this in the next post) is thus crucial in delivering the required functional & non-functional requirements within stipulated timelines. Non-functional are the primary influencers Continue reading Rapid application development & web frameworks

Definition of Multi-tenancy

Multi-tenancy was a relatively new concept back in 2010 when I was writing the dissertation report for my MS. This extract from the report aims at providing a clear understanding.

Multi-tenancy is an architectural pattern in which a single instance of the software is run on the service provider’s infrastructure, and multiple customers, or tenants, access the same instance. It is an organizational approach for SaaS applications today. SaaS-based software providers are believed to have evolved from Application Service Providers (ASPs) from the previous decade, which differ from today’s multi-tenant applications which are provided via a software-on-demand model specifically designed for SaaS distribution. Although the interest in this concept is rapidly growing since its inception in 2005, research is relatively slow.

Key aspects of multi-tenancy

  • The ability to share & optimize the use of hardware resources
  • The ability to offer of a high degree of configurability
  • The architecture to support the use of a single application and database instance to serve all tenants
  • Cost benefits from economy of scale & improved utilization
  • Ease of deploying a single instance
  • Simpler management
  • More frequent releases with bug-resolutions & new features
  • All customers are upgraded at once
  • Reduced operational costs
  • Easier to scale-up with the advent of cloud computing

Benefits of multi-tenancy

Something for your empty home

Here are few lines of code that I have repeatedly found useful, especially when moving home between different web hosts.

Print the complete address of the page from where it is hosted:

<?php
$pageURL = $_SERVER[‘HTTPS’] == ‘on’ ? ‘https://’ : ‘http://’;
$pageURL .= $_SERVER[‘SERVER_PORT’] != ’80’ ? $_SERVER[“SERVER_NAME”].”:”.$_SERVER[“SERVER_PORT”].$_SERVER[“REQUEST_URI”] : $_SERVER[‘SERVER_NAME’] . $_SERVER[‘REQUEST_URI’];
echo $pageURL;
?>

Everyone knows about phpInfo – a dump of all the PHP settings:

<?php phpinfo(); ?>

When using a shared host that allows overriding your PHP ini file, it is worth while knowing the path from where the file is loaded:

<?php var_dump( get_cfg_var(‘cfg_file_path’) ); ?>

What makes Google Google?

This post is kind of self-explanatory. 3 screenshots that explain what makes Google what it is, and adds shame to our lives for never trying to do this in our products. Take a close look at all 3.

Is there a better way to exact precise feedback?
Is there a better way to get more accurate feedback?

I dont know another browser that runs JavaScript faster
I don't know another browser that runs JavaScript faster

Continue reading What makes Google Google?

Why ignorance is bliss today & 5 ways to ignore online junk

I’m a cleanliness freak – to the extent of cleaning up my Facebook wall. Over the last week, there’s been a lot of spam with wall messages that read: “Hahaha! Mine is hilarious. Check out yours”? Familiar? Yes, that silly app which tells you how you would look in the future. I never tried it, but tired of the requests, I urged friends to avoid it via a FB update. 13 people liked it, but I only hope its the latter of these 2 messages it conveys: how awful I look, and how useless that app is. (I take everybody’s privacy too seriously, hence some masking)

My Status Update
Still wondering what 13 people really liked?

Publicity fail

That application – whatever its name is – is a complete fail in terms of its messaging. Understand the scenario: that app is sending me a persuading message to try it on a friend’s recommendation. The least I expect is Continue reading Why ignorance is bliss today & 5 ways to ignore online junk

5 qualities of a useful geek, or some unsound advice from a product manager

I am a geek, may be a nerd, may be both. And may be this is the justification of never having had the opportunity to work on a killer project that was exemplar of cutting-edge technology. I never wanted to. But I’ve made most out of unmatched opportunities, to deliver business critical software that has done its job. I’m not a master of any technology/language, but a jack of many: whether for work or leisure, I’ve touched upon most known technologies. But all that diversification makes me confident of being able to solve a problem, and not necessarily using a certain technology. I am now a product manager, far from coding. So you are about to take some unsound advice. Please continue reading at your own risk. These tips are not for software engineers who are experts in a particular technology. These are for pure computer geeks – people who love writing code.

1. Focus on concepts & constructs, not syntax

People often ask: I want to do a computer course, what language do I learn? And I ask them to clarify: Do you want to learn, earn or both+fun? My answers for each (in order) are: C, Java and PHP. But at the end, it boils down to concepts. Knowing what a loop requires to run, the power of references, how strings are managed in the heap (& why they are immutable), etc. This learning is divine. So, don’t start learning syntax, focus on concepts.

2. Be single – always – and free to mingle

Don’t marry a technology or you will look at every problem from the same lens. There are things that PHP can’t do, and places where Excel Macros won’t scale – but not everything requires Java with Spring, Hibernate & MQ. May be Javascript can solve the problem. Focus on the problem, and be willing to use any technology that works best, even if it means adopting something new. Like they say about soul mates, there is some God-(or man?) gifted technology out there which is waiting for you to grab it.

3. Be Lazy, very lazy

This is the first real piece of advice that I got as a developer (back then, I was writing hex frames to speak to cars). And I couldn’t neglect it, because Continue reading 5 qualities of a useful geek, or some unsound advice from a product manager