Unless the online store is only a small component of your website you should go with an open-source e-commerce platform. We have worked with osCommerce, x-cart, zencart, ubercart and Magento. Overall Magento as a package is the arguably the best open-source free-to-use ecommerce platform available in the “market”. Why it is the best, will leave it for another article. Key advantages I see:
i. Out-of-the-box mobile website and mobile applications are available
ii. Beautiful (& fully customizable) themes available for all kind of verticals (electronics/books/flowers) are available.
iii. You get a feature rich back-end and admin dashboard. You name it and you will find it in Magento.
iv. You get number of options for custom functionality in terms of third party extensions and plug-ins.
v. It is built over a robust MVC based PHP framework – Zend
Some of the advantages mentioned above are applicable for osCommerce, zencart and x-cart as well. Having said this, Magento is not the fastest when it comes to performance and others platforms are also fairly capable, but overall Magento is a very nice package to start with.
When should I build an e-commerce application from scratch and not use a platform?
Almost never. Because it is a myth that one has to compromise on the quality or speed or customizability if he/she uses an existing platform to build the online store. Building a full-fledged online store from scratch is not a trivial task. An online store is not just a shopping cart module. These days, there are so many backend modules and front-end features in any “respectable” online store that it can take you months and maybe a year to build something that will come close to what a fully tested, feature rich and widely used e-commerce platform such as Magento can provide. Moreover, you will have to put in all the effort to make your store render perfectly on tablets and smart-phones. Why do that when somebody has already done that for you. An online store built over a popular platform requires much lesser maintenance as regular code updates are available in the form of new releases. To summarize the key advantages of using an e-commerce platform are:
• Much lesser go-to-market time
• Tried and tested
• Regular updates and addition of new features
• Mobile friendly sites get created without too much of additional work
• Much lesser investment. The cost saving can be used on marketing the site.
When you are getting into the online retail business you should focus more on core business tasks like building a strong base of suppliers, logistics, variety of items available in your store, explore cross selling opportunities, marketing and most importantly, delivery & customer support. While it is important to choose a scalable and flexible platform for future needs, planning too much into the future is not the best idea at the starting-up stage. If your online store is able to attract good numbers of customers who are doing actual transactions then it is more likely that you shall also be able to raise investment. At that point of time you can even go for a custom-built e-commerce site if you feel that it would not be possible to scale the existing site built on a platform such as Magento for the huge amount of traffic your site is expecting. Till the time you have validated your idea and business model you should stick to an out-of-the-box solution with some customizations as the case maybe.
Lets not solve for problems that don’t exist just yet.]]>
It is required at this stage to mention the CAP Theorem, which says that any distributed computer system can provide at max two of these properties: Consistency, Availability and Partition tolerance. Consistency says that the data will be consistent throughout the database system. Availability can be thought of as the up-time of the system and Partition tolerance means that if a few messages are lost, the system should continue working. Relational databases guarantee Consistency and Availability, but at the cost of speed. There are applications where a minor loss of data or delay in updation of data is no big issue. These applications don’t require the overheads of consistency and can give it away for greater speed. Here we welcome NoSQL, popularly expanded as Not Only SQL, which guarantees Availability and Partition tolerance. Most of the popular systems also talk about eventual consistency, which means that over a long period of time, due to all the changes made in the database, the data will eventually become consistent.
NoSQL covers a wide variety of storage systems that do not use SQL as their querying language. Majorly, they can be classified as Key-Value systems, Document based systems, Graph databases and BigTable based systems. These are non-relational systems, don’t go by fixed schemas and do not use joins. The reason for their existence is the need of scalability. While a MySQL system will require faster hardware for scaling (vertical scaling), a NoSQL system can just add a new cheap machine to add to the power (horizontal scaling). Relational systems implement the ACID properties: Atomicity, Consistency, Isolation and Durablity. NoSQL systems implement BASE: Basically Available, Soft state, Eventually consistent). Their potential can be better realised after knowing that web giants such as Google, Twitter, Facebook and FourSquare have migrated most of their systems to some form of NoSQL databases.
NoSQL however has its own set of issues. Being relatively new, not all implementations are truly reliable. Proper documentations are not available for all systems; all that’s there are some blog posts and forum discussions, and one may have to dive into the source to understand how to get things done. However, most of the popular implementations like MongoDB, Cassandra, CouchDB and HBase are devoid of these issues and are being used in many production applications.
The question is, is it suitable for you? Take the case of Twitter. If a person’s timeline doesn’t show a tweet just as it was added or doesn’t show one of the followers in the list, it hardly matters. Twitter can compromise with consistency for speed. However, if a Walmart system shows the day’s sales figures as different from what they actually are, it can create a lot of problem. They have to have consistent data in any case. So, it just depends on what you are planning to make.]]>
Earlier complicated animations, games, screen-casts, video and audio were mostly possible only with Flash but support for these features has been incorporated in HTML5. Adobe is already working on increased support for hardware based acceleration in Flash which is already a key feature of HTML5 for quite some time. Now with the help of HTML5 and CSS3 amazing texts effects and fonts can be used that was mostly done by Flash in the days gone by.
Inspite of the numerous advantages that HTML5 holds over Flash, it would be unwise to declare Flash as dead. Flash is still important as a software and game development tool. We should not forget that HTML5 is still in its drafting stage and it needs to undergo many changes before it can replace Flash. However, there are companies that have been using Flash for years to develop their products and HTML5 alone cannot make them to drop Flash. In terms of Open Web technologies, HTML5 may be able to completely route out Flash from areas where it has been acting as a stub.]]>
The queston is: Is it possible to build “native-class” in HTML5 app? If Yahoo Mail for Android (written in HTML5) is something to go by then he answer is yes. Yahoo’s HTML5 Yahoo! Mail Web app for iPhone and iPod touch offers users desktop-class features, lightning-fast speed, and an engaging, rich media experience. The counterpoint, largely true, is that the native apps can hook into the device’s ecosystem, e.g. Widgets and notifications on Android, in a much better way. Native apps can typically act on hard keys being pressed, like Android’s search button and volume controls etc. Native apps have better access to hardware, like GPS and camera. Some of it is possible, but if say you have to detect the remaining battery charge from HTML5 it woud probably not be possible. Even some native apps interact with other apps (Yes! Android allows that). This much is not possible with “web” apps. However the good news is that the web is closing the gap (very fast).
Talking about the ease of development, web apps are usually easier to develop especially if you are targetting multiple devices and platforms. Also, the availability of web developers is much higher than the availability for native mobile app developers. If you have to integrate the app very tightly with the system (device) then it could be much easier to build a native app.
So, do we have a winner? The answer is there is no clear winner. If depends on the kind of application you want to create. One technique getting popular these days is hybrid apps, and this may be the best compromise for some developers: web view where it’s possible and platform-specific native components where it’s not. More on this soon in another article.]]>
As a Company or even as someone who wants to be host to web services, this is definitely something you want to be familiar with.
Dynamic, on-demand-scaling has been and remains the biggest advantage of Amazon EC2. You can use the Amazon EC2 web service APIs to start, monitor, terminate, etc. as many virtual machines as you want. This means you can scale your application to as many servers as you need on the fly. If you do the resource (web servers) planning to handle the potential “peak load” then for majority of the time, you are likely to use only 10% – 20% of your computing resources. The other 80% is sitting there “just in case”. It’s obviously not a great use of resources and/or money. This is where EC2 scores. The resource allocation on Amazon EC2 can be done dynamically and programmatically i.e. you can “reserve” the servers on the fly as per the traffic load. You don’t have to worry about scaling. Let Amazon handle that for you.
Another, big advantage of EC2 is Amazon’s brand name. To quote the Chief Geek and Co-founder of a SaaS company – Grexit, Nitesh Nandy: “”AWS’ compliance with Type II SAS 70 requirements and PCI data security requirements made it a very good fit for us to store our data and code in a virtualized environment. For SAAS applications that deal with a lot of sensitive customer data, AWS provides a great infrastructure which is secure, and also offers dynamic scaling of compute and storage capabilities.”. (Disclaimer: This articles is primarily based on the inputs gathered from EC2 users Niraj Ranjan Rout and Nitesh Nandy, Founders of GrexIt Inc.)
Amazon EC2 has its share of cons as well.
- Amazon web services are costlier than the other options such as Linode. But If you go for a reserved instance, the cost is less, on demand ones cost more.
- No persistence in instances. If you want persistence you will have to get EBS. On EBS if you have lots on I/O operations, you get charged a lot. EBS is good on machines that host database and other data as its a real time backup.
- There is a learning curve to ec2 for sure. But, once you get past the learning curve and get comfortable with the idea of putting data only on machines which have EBS and using other machines as pure compute units, Amazon is good to work on. I think that is the key part of the learning curve (Plus making insances, images etc.).
Bottom-line: If one primarily needs dynamic scaling then it makes more sense to go for ec2, otherwise EC2 is not the best option and not the best value for money for sure.]]>
So what is this semantic web all about? The Semantic Web is all about enabling applications / documents / links in the whole web talk to and exchange data with each other. Imagine if you were to plan for your vacation. In the Semantic Web ideally, your calendar, Maps, weather forecast website and bank accounts will be able to talk to each other. There will be a robot sitting at the back who will only receive a single command from you saying that you want to go for a vacation and then it does all the job and planning for you. The robot will take your appointments from your calendar and then decide possible days when you are free. It checks for possible destinations on Google Maps which may be covered in that duration you are free and then automatically checks for hotel reservations available over the web. The robot also will also be capable of checking if the weather is suitable for travel and then access your bank account to check for funds required to book an affordable hotel. This example might be too farfetched at this point of time and many of us may not even want that much automation. But technically speaking to make these possible different apps should be able to talk to each other even if these are written in different languages/frameworks/technologies. The universal standard for making different apps talk to each other to enable the path for web3.0 is not yet finalized and its a matter of debate in the web community/leaders.]]>
Where the activities would be shared: It would appear on the user’s Facebook Timeline. When a user gives permission to the app to add activity to his/her timeline, that activity may also appear in ticker and News Feed depending upon the settings.
That said, it doesn’t mean the user can not opt out of sharing of activities on Facebook. It would entire depend upon the privacy and sharing settings. There is an in-line audience selector on the app install screen that controls who can see your activity from that app.
Facebook has referred to the Timeline apps as ‘frictionless sharing’ and is extremely bullish about the prospects of timeline apps. Carl Sjogreen, Facebook director of platform products said: “We think that thousands of applications will be built on this platform in the coming weeks and months”, at the launch of the apps in San Francisco. At the time of launch Facebook has 60 timeline apps. This number is likely to be in thousands very soon.
We at Mobicules have always been prompt in adopting latest facebook features in our apps. Locotext, our soon to be launched location based services utility app for android and facebook platforms makes full use of the timeline features.
If you want to explore how your website/web-app/mobile-app can benefit from this new facebook feature for app developers do write in to us at firstname.lastname@example.org to schedule a free consultation session.]]>
Why Use E4X?
JSON is marginally more compact to encode— than for attribute intensive XML or element heavy encodings. But this advantage disappears if the resource is gzipped as for both the cases we are storing labels and associated values. Thus if transmission is concerned then gzipping the content will occur as a matter of fact and the speed becomes insignificant comparison. Apart from this some very interesting work is going on with EXI (i.e. Efficient XML Interchange) that to at W3C level that is trying to make EXI more compact than even compressed JSON.
Moreover it is very easy to use and user friendly as for an example we can define the XML object variable just any other variable such as Date, Array etc. using new operator.
var myXmlObj = new XML();
var myDate = new Date();
The most significant difference between working JSON and working with XML using E4X is that the latter is an example of array programming.
Things like “html.body.p” aren’t possible to express in most programming languages. The fact to be noticed here is above expression in E4X and JSON means something completely different.
In E4X “html.body” returns a trampoline object (XMLList), which asks all the elements in it for their “p” children, where as working with JSON, “html.body” returns one object or a list of objects. If it’s a list we write loop to do something with children. Just getting the text contents of all p will require 2 nested loops. Of course the code behind E4X uses loops but the point is we don’t have to.
Creating E4X Objects
Creating E4X object is very easy …
To load an XML doc var xmlDoc=new XML(); xmlDoc.load("note.xml"); document.write(xmlDoc.body); The above will print the content of body tag from the note.xml doc We can access any XML node using “.” (dots) e.g. var myXmlVar =
document.write(myXmlVar.to); Above code will print “Mr X” Mr X Mr.Y
Key features of E4X include
Limitations of E4X
Moving on to technical stuff, titanium has four parts:
Once built, Titanium-based applications can be tested, packaged, and distributed through the Appcelerator Network’s cloud services. They also boast of titanium desktops applications taking up to 1/10th the memory of Adobe AIR apps and having complete access to the local system.
In all, our conclusion is that Titanium is an all out winner when it comes to binding web, desktops and phones together. As an easy to learn and use platform, it opens up immense possibilities to build more feature rich, more engaging applications and to build them fast. However, once HTML5 is supported by all major mobile browsers the need of mobile applications might only be limited to games or those application which are very tightly integrated with a phone’s native feature set like call recording, auto SMS responses etc
PS: We will soon come out with an article on Titanium’s comparison with other cross platform mobile application development tools Sencha and PhoneGap.]]>