
Role:
Co founder, Strategy, UI prototypes, UX research, Product Management, Content, SEO
Platforms:
ASP.NET, iPhone, Android, SQL server, HTML, jQuery
Tools:
Visual Studio, JIRA, Bitbucket, Source Tree
About Indian Weekender
Indian Weekender began as an after hours project in an effort to stretch my skills as a coder post completion of my Diploma course in Software development. Back in 2007, there wasn’t any serious online effort targeting one of NZ’s biggest ethnic groups. The strategy I aimed at was to grow the user base using traditional ways like advertising to monetise it and follow that up with additional services to create stronger customer engagement and monetary opportunities by piggybacking off it’s content.
Solution architecture
The solution architecture was designed to keep the website easy to develop for. I envisaged a plugin modular architecture that would allow future services to be easily added. To avoid the mixing the front end and business logic and make it easy to update, the codebase was designed as 3 layers that cleanly separated the Front end views from the Business logic and the Database logic. The Views layer would manage all front end logic, the Business layer held all classes, including business and caching logic while the Database layer would manage all database calls with ADO.NET.
At the time of development, Microsoft forms was shipped as the standard framework for .NET development. but it had huge flaws in the way it’s design. In an effort to replicate a desktop application (Go figure) It aimed to replicate the experience by adding Viewstate and it’s own version of internet controls. It output copious amounts of Viewstate to maintain state between pages. A feature that had a few use cases for and only added unnecessary load to the front end.
Adding to that, MS forms inbuilt controls spat out control names dynamically making it very difficult to work with using Jquery. To eliminate these issues I turned off Viewstate and dropped using any of MS controls and used the StringBuilder class to spit out clean HTML. This eliminated Microsoft’s bulky Viewstate design and gave me complete control over the website frontend. For the backend CMS that wasn’t public facing I continued to use Microsoft’s form controls to speed up coding time.
Being an online newspaper that needed to scale with traffic volume, database queries was a primary concern especially on the home page. I implemented a caching mechanism that only cached all unchanged content in the CMS and would refresh only articles from a single category when a new story was added by an editor in the CMS. All other highly queried tables especially where data didn’t change regularly like Article categories were stored as Application variables to significantly cut database calls.
Caching substantially reduced database calls and allowed us to handle large amounts of traffic at launch especially on a bootstrapped shared server. The website was later migrated to using Azure as a hosting platform with Blob storage and CDN for high speed image delivery.
Modules developed
Articles: Article module with features for adding, editing, search and formatting using a full-featured HTML editor.
Advertisement: An advertisement module to add advertisements on any channel or plugin in the website with an algorithm that auto-rotates multiple advertisements. Advertisement statistics as Clickthroughs and Impressions could be viewed and exported to Excel. Tags that are tracked by Google Events.
Newsletter: A newsletter wizard that creates and sends HTML newsletters by adding in Articles, Classifieds, Jobs, Events and Advertisements.
Business directory: A business directory module to enable Indian Business owners to submit their business to the directory. The aim of the module was to grow this into it’s own revenue generation opportunity with the introduction of newer services for businesses. All businesses would be approved by the website administrator post submission. The view also included a Google map with the users address and street view of the business.
RSS scraper: A RSS reader that reads articles from RSS feeds every hour from related websites and added it to my website. To overcome the issues when a third party website and could potentially cause the application to crash, I created an automated job that fetched RSS feeds every hour and saved them as XML feeds on the server so I had the latest copy of the feed to read from.
Classifieds/Events/Jobs: Plugin modules that allowed users to register on the website and post Classifieds/Events and Jobs on the website to build website interactivity. Users had to register and sign in to be able to post to these modules.
YouTube videos: Used YouTube’s API to read videos thumbnails to create a Video channel. Developed the module using JQuery and Ajax to improve the user experience of paging videos while viewing a video.
SEO: Developed a module to improve SEO by creating an automated XML news feed sitemap and pinging Google News server with the latest feed.
Custom Membership/Roles Provider: Overrode Microsoft classes to use the membership functionality but with a custom implementation of Membership and Roles so I had greater control over the end user membership functionality.

Ticket Bazaar
Designed and developed Ticket Bazaar an Event ticketing website for Indian events in NZ. Designed two mobile apps for Event promoters including a Ticket scanning and a real-time Ticket sales app for iOS and Android.