Connecting Groups
Back to SiteGroups!

SpringSters - Blogging Bunch

We think therefore we are

SiteGroups Desktop Notifier now available for both PC & Mac

MangoSpring adds always-connected desktop notifier to SiteGroups2.0

Seattle, WA. - October 16, 2008 — Seattle based startup MangoSpring  today announced beta launch of SiteGroups2.0 DesktopNotifier. With SiteGroups DesktopNofier web-based communities can now easily stay connected even when the site members/users are not on the website.

“DesktopNotifier moves us closer to our vision of connected, real-time web” said Anup Kejriwal, founder and CEO of MangoSpring. “By extending the web to the always connect desktop, site owners can start to unlock the full potential of their community”.

Sitegroups2.0 DesktopNotifier is available for free as part of SiteGroups suite of services. . Visit mangospring.com to get started.

About MangoSpring SiteGroups

SiteGroups is a white-label Instant messaging solution designed for web-based services. It lets users of a given site chat with friends or other visitors on that site. Partner sites can customize the chat interface as they wish. SiteGroups is built upon the Jabber standard allowing sharing of users with other related sites and or with other Jabber supported applications.

SiteGroups comes in multiple different flavors – Business, Standard and Community. SiteGroups community edition is available through a simple do-it-yourself interface that allows instant creation and installation of the community without a need for any programming knowledge. The community edition is available for free and is supported by ads. SiteGroups will share a percentage of ad revenues with website owners, offering them innovative ways to better monetize their users.

About MangoSpring

Founded in 2007, MangoSpring offers group-centric communication technology that enables instant, intelligent, focused, one-to-one or multi-party discussions over web, desktop and mobile. These conversations securely connect website visitors, employees, partners or customers with the right people and persist as long as it makes sense.

MangoSpring Group software is targeted towards companies in a variety of industries, including social networking, technology, media, content, interest communities & groups, eCommerce and financial services. MangoSpring’s worldwide headquarters are in Seattle, Washington and EMEA headquarters in Pune, India. For more information, visit the MangoSpring website at MangoSpring.com.

For more information about MangoSpring SiteGroups, please contact:

Vishwa Malhotra
CTO & Chief product designer
Tel: (425) 274-9950, vishwam@mangospring.com

MangoSpring announces support for real-time multimedia messaging

MangoSpring adds support for real-time multimedia messaging in SiteGroups2.0
Now create Instant messaging community for your website

Seattle, WA. - October 14, 2008 — Seattle based startup MangoSpring (MangoSpring.com) today announced general avilability of SiteGroups2.0.  SiteGroups2.0 packs a rich-set of instant groups and 1-1 messaging features.  In addition to a whole new rich-media interface,  SiteGroups2.0 brings multimedia group instant messaging,  audio and video, to all websites - big or small.

“SiteGroups2.0 is a big step forward in bringing instant, rich, multimedia-enabled group messaging to the internet” said Anup Kejriwal, founder and CEO of MangoSpring. “SiteGroups’ self-serve interface allows webmasters to easily create, configure and install real-time presence and interactivity to their websites in a matter of minutes.  So what used to take years of effort, can now be added to web based services in a matter of minutes”.

Sitegroups2.0 community edition is available for free and is supported by rich media ads.  SiteGroups shares a percentage of ad revenues with website owners,  offering them innovative ways to better monetize their users.  Adding instant messaging and presence to a service has never been easier.  Webmasters can now easily create, customize and deploy SiteGroups within minutes. Visit mangospring.com to get started.

About MangoSpring SiteGroups

SiteGroups is a white-label Instant messaging solution designed for web-based services. It lets users of a given site chat with friends or other visitors on that site. Partner sites can customize the chat interface as they wish. SiteGroups is built upon the Jabber standard allowing sharing of users with other related sites and with other Jabber supported applications.

SiteGroups comes in multiple different flavors – Business, Standard and Community. SiteGroups community edition is available through a simple do-it-yourself interface that allows instant creation and installation of the community without a need for any programming knowledge. The community edition is available for free and is supported by ads. SiteGroups shares a percentage of ad revenues with website owners, offering them innovative ways to better monetize their users.

About MangoSpring

Founded in 2007, MangoSpring offers group-centric communication technology that enables instant, intelligent, focused, one-to-one or multi-party discussions over web, desktop and mobile. These conversations securely connect website visitors, employees, partners or customers with the right people and persist as long as it makes sense.

MangoSpring Group software is targeted towards companies in a variety of industries, including social networking, technology, media, content, interest communities & groups, eCommerce and financial services. MangoSpring’s worldwide headquarters is in Seattle, Washington and EMEA headquarters is in Pune, India. For more information, visit the MangoSpring website at MangoSpring.com.

For more information about MangoSpring SiteGroups, please contact:

Vishwa Malhotra
CTO & Chief product designer
Tel: (425) 274-9950, vishwam@mangospring.com

 

MangoSpring announces SiteGroups self-serve interface

MangoSpring SiteGroups announces the launch of SiteGroups self-serve interface
Now instantly create Instant messaging community for your website

Seattle, WA. - September 26, 2008 — Seattle based startup MangoSpring (MangoSpring.com) today announced geneal avilability of the self-serve interface for MangoSpring SiteGroups. This simple do-it-yourself interface allows instant creation and addition of instant messaging features to any webiste without a need for any programming knowledge.

“SiteGroups self-serve interface removes the time & effort required to adding instant messaging and presence to web-services” said Anup Kejriwal, founder and CEO of MangoSpring. “We enable webmasters to add real-time presence and interactivity around their service in a matter of minutes.  SiteGroups brings the same power and user loyalty that consumer instant messaging services like AIM, MSN or Yahoo have”.

Sitegroups community edition is available for free and is supported by ads. SiteGroups will share a percentage of ad revenues with website owners, offering them innovative ways to better monetize their users. Adding instant messaging and presence to a service has never been easier. Webmasters can now easily create, customize and deploy SiteGroups within minutes. Visit mangospring.com to get started.

About MangoSpring SiteGroups

SiteGroups is a white-label Instant messaging solution designed for web-based services. It lets users of a given site chat with friends or other visitors on that site. Partner sites can customize the chat interface as they wish. SiteGroups is built upon the Jabber standard allowing sharing of users with other related sites and with other Jabber supported applications.

SiteGroups comes in multiple different flavors – Business, Standard and Community. SiteGroups community edition is available through a simple do-it-yourself interface that allows instant creation and installation of the community without a need for any programming knowledge. The community edition is available for free and is supported by ads. SiteGroups will share a percentage of ad revenues with website owners, offering them innovative ways to better monetize their users.

About MangoSpring

Founded in 2007, MangoSpring offers group-centric communication technology that enables instant, intelligent, focused, one-to-one or multi-party discussions over web, desktop and mobile. These conversations securely connect website visitors, employees, partners or customers with the right people and persist as long as it makes sense.

MangoSpring Group software is targeted towards companies in a variety of industries, including social networking, technology, media, content, interest communities & groups, eCommerce and financial services. MangoSpring’s worldwide headquarters is in Seattle, Washington and EMEA headquarters is in Pune, India. For more information, visit the MangoSpring website at MangoSpring.com.

For more information about MangoSpring SiteGroups, please contact:

Vishwa Malhotra
CTO & Chief product designer
Tel: (425) 274-9950, vishwam@mangospring.com

Announcing Launch Of MangoSpring SiteGroups

TEAR DOWN THE WALL! HELP WEBSITE VISITORS DISCOVER EACH OTHER
MangoSpring SiteGroups® creates an interest based IM community for your website - instantly.

Seattle, WA. - July 17, 2008 –Visiting a website has been a lonely experience. Although there are hundreds of thousands of people visiting a given website at any point of time, visitors are unaware of each other. There is a virtual wall that exists between the website visitors, preventing them from knowing who else is on the same website. If visitors could see and talk to others who are doing the same things on a website as they are, significant possibilities of communication and interaction can open up. It can lead to building of ‘interest networks’, and in turn create extremely sticky and loyal users for a website. As for the website visitors themselves, they can build their social networks within the context of the services they use as opposed to having to visit destination social networks for the sake of social networking.

Seattle based startup MangoSpring (MangoSpring.com) has now made it possible for websites to unlock the value that a real time messaging community based around their content can bring. Websites can now deploy MangoSpring’s product, SiteGroups that enables visitors on a website to view others who are online with them on a website, and communicate in a group or via private conversations. SiteGroups also comes as mobile and desktop clients, so the website visitors can stay connected to their favorite communities from anywhere, creating further loyalty.

“Users today want their online experience to be more social. Success of social networks and communities like Facebook, Myspace, and Flickr support the trend” said Anup Kejriwal, founder and CEO of MangoSpring. “SiteGroups adds a face to every website visitor and humanizes their web experience by bringing real-world-like interactivity around a website and its content. The last time social networking around presence was tried, it led to creating powerful, but siloed IM communities like AIM, MSN and Yahoo. SiteGroups brings the same power and user loyalty to all websites around the world by connecting and engaging their visitors. In essence, SiteGroups brings the power of social networking to every website owner and creates new business opportunities for them”.

SiteGroups comes in three different flavors – Business, Standard and Community. SiteGroups community edition is available through a simple do-it-yourself interface that allows instant creation and installation of the community without a need for any programming knowledge. Community edition is available for free and is supported by ads. SiteGroups will share a percentage of ad revenues with website owners, offering them innovative ways to better monetize their users.

The Business and Standard editions are tailored for larger websites that attract significant traffic and need deeper integration and customization. SiteGroups Business and Standard editions can be fully customized to meet unique business needs of larger websites. In addition to monitoring and moderation capabilities, website owners have access to a feature-packed administrative console giving them easy access to numerous configuration, metrics and community management tools.

About MangoSpring
Founded in 2007, MangoSpring offers group-centric communication technology that enables instant, intelligent, focused, one-to-one or multi-party discussions over web, desktop and mobile. These conversations securely connect website visitors, employees, partners or customers with the right people and persist as long as it makes sense.

MangoSpring Group software is targeted towards companies in a variety of industries, including social networking, technology, media, content, interest communities & groups, eCommerce and financial services. MangoSpring’s worldwide headquarters are in Seattle, Washington and EMEA headquarters in Pune, India. For more information, visit the MangoSpring website at MangoSpring.com.

For more information about MangoSpring SiteGroups, please contact:

Anuj Khurana
Director, Product Marketing
Tel: (425) 274-9950, anujk@mangospring.com


Advancing the web one conversation at a time

About a year and half back when we first started MangoSpring we had this vision of making the web a more connected experience. We spoke extensively of web being a lonely experience and “connected everywhere” as our driving mission. We had this exciting contest in the office where teams came up with the best use case for ‘connected every where’ paradigm (winning team members got IPods). MangoSpring SiteGroups and our internal vision of ‘advancing the web one conversation at a time‘ was born out of these discussions and aspirations.

A few days back I came across this interesting article on ReadWriteWeb about the real time web deserving a place in the “next big thing” column. To quote from the article “a real time web can offer social connectedness, interface responsiveness and a smooth user experience that stands head and shoulders above the call-and-response web of the past.”

Wow! that is exactly what we have been after and I was glad to see the good folks at ReadWriteWeb talk about it. Needless to say, we see an immense potential in creating an instant community around a website/service and making the web browsing experience real time.

So how is MangoSpring advancing real time web?. Well like I said our vision is to advance it ‘one conversation at a time’. MangoSpring SiteGroups enables any website in the world big or small, any blog, any web page for that matter to add real time interactivity and conversations around it in a matter of few minutes. The premise is simple:

  • Show the people who are on the same site as you are (not necessarily the same page) in real time
  • Allow them to talk to each other as a collective group
  • Allow them to talk to each other in 1-1 setting
  • Allow them to easily carry these conversations with them as they move away from the site by offering rich desktop and mobile access to this micro-community

We are very close to launching SiteGroups and hope that you will be as excited about the possibilities SiteGroup opens up as we are.

Browser based real time web - Extreme social networking?

One trend that has me intrigued is that of browser based social networks. Flock, has been around for a while and now there are others like Slingpage and Me.dium. In fact RWW called it the ‘extreme social networking‘. These plug ins allow you to see which web site your friends are on and then chat with them.

So why am I writing about them? Well because they come at the same problem we are addressing with MangoSpring SiteGroups but from a completely different perspective. Both SiteGroups and tools like Me.dium enable:

  • Real time interaction on the web
  • Messaging with others on the same site

The key difference between SiteGroups and plugin based approach is that:

  • SiteGroups helps the site owner monetize the implicit social network they already have as it builds a service centric community as oppose to user-centric community
  • As SiteGroups is integrated by the business owner as part of its website, provides a richer and relevant experience
  • Is universally available to all users of the site

In addition, as plugins are built around browsers, they tend to ignore the multi-platform, multi-device world we live in.

Layout Management in J2ME

One day Anuj (Our Product Boss :)) came to me with some layouts and asked to support all of the following layouts in J2ME application.

Layout
All these layouts are combinations of images and strings. Initially, I was worried about the implementation, but after going through the layouts couple of times, I thought Gridbag layout of swings would support all these combinations. I knew how Gridbag worked but didn’t know how I could arrange components in horizontal and vertical cells. The most challenging issue was J2ME’s memory limitations for both jar and jad. We can develop a full fledged Gridbag layout class just like swing but some issues could arise.

  • Potential big class size
  • We will have to keep minimum instances of components for heap issues, the best case being one instance per component.

So let’s start engineering with minimum requirement of arranging cells.

    Here is the list of items which we need to consider while adding components in layout:

  • Starting horizontal cell
  • Starting vertical cell
  • Number of horizontal cells required
  • Number of vertical cells required
  • Component

All these will go as parameters in the add method.
add(component, start_horizontal_cell, start_vert_cell, no_of_horizontal_cell, no_of_vert_cell)

To store these components, we can have an array of components or some custom defined array list.
Each cell will have some height and width say CellH =20 and CellW = 20.

Thats all.. we are ready to construct a layout class which will hold images and strings.
Say we have two UI classes for rendering a single image MyImage and a single string as label MyLabel.

Here is the code piece for our layout class. We are considering this layout class itself as a component which will make it easy for us to add it to a container.

/**
* A class which can hold any component, which can be rendered at any position
* in this component’s boundary depending upon its cell location.
* This is a Gridbag layout. To create a label of this type with any
* component,
* e.g to add MyLabel at cell position row 0, column 0 with
* 2 horizontal cells and 1 vertical cell,
*
* TestLabel label = new TestLabel();
* myCanvas.addComponent(label);
* MLabel strLabel = new MLabel(”First label”);
* label.add(strLabel, (byte)0, (byte)0, (byte)2, (byte)0);
*/
public class TestLayout extends Component{

private MyArrayList components; //user defined array list
public int cellW = 20;
public int cellH = 20;
public int noOfRowCells;
public int noOfColumnCells;
public boolean showGrid;

/**
* Creates a new instance of TestLabel
* @Param boolean tells whether this Label will should have
* canvas width or width that is neccesary to component
*/
public TestLabel() {
height = 20;
width = canvasW;
components = new MArrayList();
calculateDimensions();
isStatic = false;
}

/**
* this method renders component
* @param Graphics
**/
protected void renderComponent(Graphics g) {
int posX = compX;
int posY = compY;
int size = components.size();
g.setColor(MMasterColors.GREY);
if(showGrid){
for(int i = 0; i < noOfRowCells ; i ++){
g.drawLine(compX, posY, width, posY);
posY += cellH;
}
g.drawLine(compX, posY, width, posY);
for(int i = 0; i < noOfColumnCells ; i ++){
g.drawLine(posX, compY, posX, compY + height);
posX += cellW;
}
}
for(int i = 0; i < size ; i ++){
((MComponent)components.get(i)).renderComponent(g);
}
}

/**
* This method calculates dimensions
**/
protected void calculateDimensions() {
noOfColumnCells = width / cellW;
noOfRowCells = height / cellH;
}

/**
* A method to add component to AdvLabel
* @param MComponent component which is to be added
* @Param byte rowNo cell at row level
* @Param byte Columno cell at Column level
* @Param byte no of horizontal rows required
* @Param byte no of vertical rows required
* @param byte alignment
**/
public void addComponent(MComponent comp, byte rowNo, byte ColumnNo, byte noOfHoriCells, byte noOfVertCells){
components.add(comp);
if(height < ((ColumnNo + noOfVertCells) * cellH))// setting height if needed
height = (ColumnNo + noOfVertCells) * cellH;
calculateDimensions();
int tempX = 0;
int tempY = 0;
tempX = compX + ((rowNo * cellW) + (((noOfHoriCells * cellW) - comp.getComponentWidth()) / 2));
tempY = compY + (((((noOfVertCells * cellH) - comp.getComponentHeight())/ 2) + (ColumnNo * cellH)));
comp.setComponentXY(tempX, tempY);
}
}

public class Component{

public int componentX;
public int componentY;
protected int height;
protected int width = canvasW;

protected void renderComponent(Graphics g) {
}

protected void calculateDimensions() {
}

/**
*Mutator method to set x, y positions
*@param x X co-ordinate
*@param y Y co-ordinate
*/
public void setComponentXY(int x, int y) {
componentX = x;
componentY = y;
}

/**
*returns component height
*@return height
*/
public int getComponentHeight() {
return height;
}

public int getComponentWidth() {
return width;
}
}

Above code is at very primary level which will fulfill our requirement of arranging components in a grid. We can then add (if memory permits :-) ) advanced features like:

  • Providing key navigations
  • Maintaining and highlighting current component
  • Aligning components within the mentioned cells
  • Providing more ui specific things like borders, background colors etc.
  • and so on….

Evolution of communication - Explicit to implicit

We went from closed communication on email to closed real time communication over IM. Along came always connected communication using SMS and mobile. Blogs and social networks made us go public with our messages to friends and now twitter is making us broadcast minute by minute updates of our lives.

So trying to force a sequential timeline on how we communicate in the digital world, looks something like:

BBS/IRC > Bulletin boards > Chat rooms> Email > IM > SMS > Blogs/Social networks > Twitter/Lifestreaming

Most of this is often described as ‘explicit communication or explicit social networks’. As per the Churchill Club of Silicon Valley debate, the next big trend on internet is going to be ‘Implicit web’ (read the post on VentureBeat). This is the missing element when RWW tried to discuss the evolution of communication.

We at MangoSpring firmly believe in the future of implicit communities fostering communication. The fact that you are on the same site/page as x other users puts you in an implicit community allowing communication, sharing and collaboration. It also captures your ‘attention data’ and build the community around it. Of course the secret sauce is going to be how you group the people beyond presence on a site or membership to a community. So if i am on TechCrunch reading yet another post on twitter or FriendFeed I am going to want to crib and rant about it to others who are reading the same post. But I would rather do it on TechCrunch as I read it. Don’t expect me to sign up to a group or community or a social network to be able to do so. And it would be great if users who were reading up on FriendFeed competition that just launched are also implicitly visible to me so they can join in the discussion.

So if you are wondering where that leaves the explicit communities ( read as Facebook, Myspace, Ning) ? Well I dont think much changes for them there is always going to be a need for both. Though I do see interesting scenarios where we merge the membership of explicit networks with the communities I am implicitly part of.

CleanupStack - Symbian’s partial answer to garbage collection.

Resources are always scarce, aren’t they? I have always wanted someone to take care of the resources I need and use. For instance that book I had borrowed from a friend with a promise of returning in 2 days time. Which despite all my good intentions I still forget to return even after 3 weeks have lapsed. In real life it is still a dream, but in my Symbian life I have found someone - “Cleanup Stack”.

Cleanup stack is a place to store the variables which are not member variables of any class but allocated on Heap (defined inside function). The objects are pushed onto CleanupStack once they are allocated memory. And popped from the CleanupStack after we are done with them. In between if any exception occurs (We call it a “Leave” in Symbian ), the CleanupStack Pops the object and calls the destructor of the object.

Few questions are always popped up when we talk about CleanupStack. Lets try to find the answers for some of them.

Q. What are the different types of Objects that we can push on CleanupStack?
A. CleanupStack has three overloaded Push functions.

    1) PushL(TAny* aObj): We can put any object (void* in C++)
    2) PushL(CBase* aObj): We can put a CBase class object. So it is advised in Symbian to derive your class from CBase. To use the CleanupStack functionalities.
    3) PushL(TCleanupItem aItem): TCleanupItem encapsulates the cleanup operation (function pointer) and an Object with it. That function is called if any Leave occurs.

Q. How to Use CleanupStack to handle the object of a non CBase class?
A. We should use TCleanupItem to put the object on CleanupStack of non CBase classes. Using TCleanupItem we can associate an Object with a function which will be called if a Leave occurs.
Q. What will happen if we put non CBase object on CleanupStack?
A. CleanupStack will call User::Free() for the object. But will not call the destructor. If the pushed object contains data, it’s a memory leak.

Q. What if I forget to pop the items from CleanupStack?
A. We get E32User CBase 71 Panic. You must pop an item before you leave a function.

Q. Suppose I have pushed 100 items onto CleanupStack, do I have to pop all of them manually?
A. Not actually. One of the overloaded PopAndDestroy function takes the count which is number of items to be popped and destroyed.
eg. PopAndDestroy(100);

Lastly, don’t use the “Check” function as it is for debug builds used by Symbian. It can crash your application if not used properly.

IM for websites- a trend to watch

Read this post on RWW about IM for websites is a trend to watch. To quote from the post ‘ I think real-time chat in websites is a trend we’ll see more of during 2007 and beyond. While IM services like AIM and Yahoo Messenger dominate the chat market, there is room for turn-key chat solutions like Userplane or Tangler for web sites and online communities.’

This was back in early 2007, and we are well into the second half of 2008. The trend is yet to take off - something that we hope to change with SiteGroups. Stay tuned for public launch of SiteGroups; its round the corner.

The changing face of mobile

Every year, hopefuls in the technology industry predict a revolution in mobile technologies and pronounce that the new year will be the year when mobile finally comes of age and takes the world by storm. Barring some interesting developments, that has not really happened yet. Mobile continues to be perplexing for most people to use for everything except basic calling and text messaging. Clearly, mobile has the potential to be more powerful than providing just two services.

Both these functions are little more than actions that consumers have been used to for years, and as a result, need little change in their behavior. Voice calls work quite the same as telephones that we have been using for at least a century now, and text messaging is quite akin to emails that people are reasonably well used to. Can other applications be built that require minimal changes to consumer behavior, or at least require a couple of simple clicks that one can get used to as quickly as making a voice call on the mobile?

That is the question that many in the industry are trying to answer today, and there are some important tectonic shifts in the mobile industry that are underway that are slated to change this landscape. Here are some of these shifts:

    1). For the first time, major software players are entering the erstwhile carrier-dominated mobile industry in a big way. Until now, perhaps only Microsoft was a pure software player with a mobile operating system. They have played in the enterprise mobility market with sophisticated business users and have faired well in that, but have not quite been able to bring it to the masses. No other player (either big enough or creative enough) brought a user interface design to mobile that was intuitive enough for mass users to adopt and for carriers to push.

    More than being a hype, Apple’s iPhone is a sign of changing times. Even if it doesn’t itself gain a prominent market share, it is changing how software for mobile is being looked at. The ripple affect it will have will finally bring some serious creativity and ease of use to many mobiles and devices. A simple feature like visual voice mail was something long time coming. The fact that no carrier could think of it is a tell-tale sign of the difference a software and user-interface-oriented company can bring to the table in this industry.

    It is still early days to take a call on Google’s Android but if Google is able to translate its simplistic user interface philosophy to the mobile world, that would be a second successful software player that we can talk about. For now, its premature and Google still has to prove itself in this new landscape.

    Nokia-backed Symbian is another player that has a powerful and stable platform that can give Apple a run for their money. Symbian interface again lacks the simplicity that a lay user needs and still consists of relatively complex browsing of folders and accessing applications through shortcuts etc. However, with some effort and creativity, they can get it right.

    2). The advent of widgets-based design in desktop as well as web will redefine the structure of mobile operating systems at some level. User acceptance of widgets is far more plausible than expecting users to run complex “applications” on their tiny devices. The difference is not merely in the vocabulary, but the whole way in which a service is presented to the user on mobile including automatic updates, hard versus soft updates and the intelligence being split between the client and server component of the widget. The concept of one-widget-one-function will be the driving force behind mass user acceptance, as users like simple, one-click icons on their devices that perform a well-defined and useful function for them.
    3). No product is complete without great packaging. For products like Coca Cola, packaging might be as obvious as using a bottle (instead of a box, let’s say!), but for software, packaging involves navigating the intricate web of standards, business models and partnerships. A lot of people associate the success of iPod with its looks and Apple’s marketing, but dig a little deeper and you cannot miss the profound impact of iTunes and iTunes Store (and the resulting deals with record labels) behind the success of iPod. They say that content is king on the web and there is no reason to believe otherwise for mobile. Google maps on the Apple iPhone is a great example of how a good partnership and packaging could work in the mobile world.

Google Maps is actually a great example of all of these three elements (great interface, widget-like architecture and good partnership) working together to deliver great content to users in great style. There are umpteen examples of each of the three elements successfully in play on the web, from Netflix to Amazon to blogs to Facebook. It’s only beginning in the mobile world and all the plumbing for a great user interface, packaging and content delivery are only beginning to be put in place. In a sense, it is still early days and the field is wide open.

Carriers are often accused of being “closed” to some applications that can hamper their revenue stream. However, if the above shifts do take place during 2008 and beyond, there is no reason for them to not wake up to the rising potential of mobile and the new revenue streams mobile software can offer them. The key still lies with the software vendors to provide useful applications in a manner that is easily understood and accessible by a lay user.

Dare I say then that 2008/2009 will be the year of the mobile?

Mangospring @ BarCamp Pune 4

Many of us at MangoSpring have been eagerly waiting for BarCamp Pune 4. Anuj, Vishwa, Shivesh, Basant, Ravinder and myself were all in attendance. It was an exciting day, as this was the first public demo and showcase of PurpleTrail, our first big project at MangoSpring. We have been spending a lot of time and energy getting it ready for public use, and we just recently entered it into beta stage. BarCamp was the right platform to showcase it.

BarCamp is not new to most of us. Anuj had already presented in previous BarCamps in Delhi, etc and I have been an organizer for some previous BarCamps in Pune. BarCamp is always a hit, as 99% of the people attending the event are very interested in the technology, unlike other conferences.

I chose a very interesting topic: “Git Introduction”. I have been using Git for the last two months in my free time. We don’t use it at MangoSpring yet, though I hope that will change soon. Overall, I have found Git to be an excellent distributed source control management tool and I wanted to tell others about it.

On the day of the BarCamp, our talks were scheduled for the first and second talks after lunch. The entire morning at the BarCamp was noisy. People were discussing with each other, and it created a quite geeky, techie and enthusiastic environment.

At 2pm, Anuj started his fast, though relaxing, speech. He has prepared slides and explained in detail and how it works? Initially people were listening as they did not have any idea about product. As Anuj started explaining the features, I was seeing “wow” in their faces. Almost everyone listening got excited about the product. As time went by, initial small whispering in the crowd turned into silence. The only talking was Anuj’s voice, and he had captivated everyone’s attention.

Next Anuj moved onto the demo part of the talk, and this turned out to be a big success. As decided, Anuj demoed the web version and most of the clients running (Symbian, J2ME, desktop, WAP). There are two great moments I remember best. The first was when Vishwa was using WAP and the Symbian client to chat with Anuj, who was using the web version. The second was when Anuj invited two guys sitting in the audience to a demo using their mobile numbers. Within no time they received invite SMSs. Both of these were even a “wow” to me, as it was a real world thing happening in front of me. I think that I was even more happy, as I have been responsible for working on the SMS invites portion of the product. It was very clear that our communication platform the power to change people’s daily life. After seeing everyone’s reaction, I am quite sure that Anuj’s talk was the best talk in this BarCamp. Even afterwards, some people told me that they liked the product very much.


After the it was time for my Git talk. The target of the talk was to inspire people to start using Git for their projects. It turned out to be a good talk, and I think I have inspired enough people to consider Git as their source control management tool.

BarCamp Pune 4 was a great success. Hats off to the BarCamp organizers and the presenters. We all are waiting for the next BarCamp which is scheduled to happen in September.

MangoSprings First Birthday Party!!!

Happy Birthday Hat

Celebrated with cakes,a treasure hunt and a special visit by the Santa!


From the first day of our existence in the web 2.0 sphere to today what a great year it’s been and what an amazing adventure! The past year saw us going through various growth spurts (scrums), immunization shots (code reviews), positive parenting (Happiness Manager) and have crossed various milestones.

Like any other one year old baby MangoSpring is ready to take the first baby steps in the web wide world. It’ll be just a matter of time before we learn to walk and then sprint.

Springsters celebrated the day with cakes and a special treasure hunt that had them running around the office, the parking lot and even the restaurant across the street that caters to their hunger pangs. It was such a gripping affair that the designated photographer of the event forgot all about the camera and photos to be clicked and we have no pictures to share with you :)

Since our birthday was just around Christmas Santa also came visiting while the Springsters were at a pot-lunch. Check out some of the photos below .

Happy New Year from the Springsters to all of you!

SAHI… Makes the Life of a Tester Easy!!

It was the other day when I was trying to automate a web 2.0 application with WATIR -an open source automation tool for web UI testing, that I was stuck in the landing page of the application trying to capture the sign up flow. It turned out that the sign up required an AJAX call used widely in every Web 2.0 app. Having forced to explore other alternatives for Web automation testing which would support AJAX calls, HTTP/HTTPS, I-Frames and Javascripts, I zeroed in on SAHI – a light weight web automation tool which I found supported all of these and offered more.

Thanks to a bangalorean named Narayan Raman from ThoughtWorks who developed this web automation tool in java and javascript, it made the life as a tester a lot more easier. This tool uses simple javascript to execute events on the browser. Like any other automation tool available in the market, it has the facility to record and playback scripts. Sahi runs as a proxy server and the browser needs to use the sahi server as its proxy. Sahi then injects javascript so that it can access elements in the webpage. This makes the tool independent of the website/ web application.


Sahi boasts of a heavy feature set including in-browser controls, intelligent recorder, text based scripts, ant support for playback of test suites, multi threaded playback, supports external proxy and HTTP/HTTPS, Dynamic applications and AJAX support, URL based script access, ANT support for running test suites, Script refactorable into functions and files and Accessor Viewer for identifying html elements for scripting. In addition to these data driven testing is possible by reading data from excel sheets and working with databases.

Running overnight batch runs are also possible using test suites integrated with ANT. For each test in the suite, the ant target opens a browser, runs the test and closes the browser. The ant target specifies a suite file, say demo.suite.

The syntax of writing the suite file is:

eg.
test1.sah /startPageForTest1.jsp
test2.sah http://www.d2.com/startPageForTest2.htm
test3.sah abc/startPageForTest3.htm

Ant target for Internet Explorer:

< sahi suite="../scripts/demo/demo.suite"
browser="C:\\Program Files\\Internet Explorer\\iexplore.exe"
baseurl="http://serverName/path/"
sahihost="localhost"
sahiport="9999"
failureproperty="sahi.failed"
haltonfailure="false"
threads="3"
>

Ant target for firefox:

< sahi suite="../scripts/demo/demo.suite"
browser="C:\Program Files\Mozilla Firefox\firefox.exe"
baseurl="http://serverName/path/"
sahihost="localhost"
sahiport="9999"
failureproperty="sahi.failed"
haltonfailure="false"
browseroption="-profile ${basedir}/browser/ff/profiles/sahi$threadNo"
threads="3"
>

Sahi has a vast follower base appreciating its simplicity and easy to bend features with its JS engine. Sourceforgenet has hosted an online community to support the members/users spread across the globe under help and Open discussions.

Sahi is a free, open source software released under the Apache License Version 2.0 and
hence can be downloaded from sahi.co.in

Springsters glowing with the holiday tan!

All through September and October the pace was frenzied as we geared up for the beta release of Pproductl. With the release out of the way on November 2nd Springsters headed to the beaches of Goa for some fun, sun and relaxation. It was a well deserved break and Springsters made the most of it spicing each day with a different experience. After a lot of online search we had zeroed in on Alcove Resorts on the Little Vagator beach. With a breathtaking view of the sea and coconut trees, open air sit outs facing the sea, it not only lived up to our expectations but also set the right mood for the holiday we will cherish forever. Surf boarding, para-sailing, hiking, campfire, river cruise with fishing and dancing, driving through the winding streets of goan villages all night, getting ourselves tattooed and chilling out in the pool with a drink in hand, visiting some good night spots, we packed all this and more in the four days we spent at Goa. As Goa wove it’s magic on Springsters the outgoing ones turned gregarious and the quiet one’s came into element of their own. Awesome food and free flowing spirits helped :).

Our web UI guys metamorphosed into “official” photographers for the trip, here are a select few capturing Springsters in action or preening especially for the camera!

MangoSpring looking for interns

At MangoSpring we have enjoyed having interns periodically over the past year.  As interns usually are, they were raring to go, forever questioning, and always learning.   As a company, we found that we benefit greatly from their fresh perspectives, which has helped us solve some of the problems we struggled with.   We are again actively looking for interns for both our product and engineering teams. So, if you are graduating from a business school or engineering college and are looking for projects, we would like to hear from you.

MangoSpring has a fun small office atmosphere with a unique open culture.  It will definitely give you a taste of what it is like in a living, breathing industry.   As a company we push to learn and make our products the best they can be. We love the work that we do, and strive for the best each day.   Our past interns all agree that their experience at MangoSpring is one they will remember for a long time.  So, if you are up for an exciting, challenging, and educational experience, contact us.

Riding the next wave

Much has changed in India since the mid-nineties. The opening up of the economy gave India access to foreign markets. One place India grabbed the opportunity was of course, IT exports. But even before all the hoopla of IT services, changes were already taking shape. Small schools in nondescript towns started introducing computers for sixth graders and business systems were being automated using computers. While, automation of systems such as payroll and inventory were not new to India even in the eighties, what was new (world over) was availability of cheap personal computers for everyone from a college graduate to big corporations. Things were chugging along in their own sheepish pace until the mid-nineties, when we realized that the rupee had depreciated to half it’s value while we were sleeping – from 18.1 on 2nd Jan, 1991 to 35.21 on 2nd Jan, 1996.

This is a story that has been told many times, and each time for a reason. The IT services exports boom is of course everyone’s favourite reason. The reason I am bringing it up today is that rupee went up in another curve to about 48 and is back to the level it was in January, 1998. The IT services boom lasted through this curve, and if markets are left alone, we will see a shift in economy towards a higher-value rupee. The rising rupee has the services giants nervous. Nobody likes to challenge status quo, much less a successful organization in an industry that has seen a 30-40% compounded annual growth rate over a decade and more. But we are at another inflection point in the history of India Inc. Rising rupee, increasing wages, foreign investment - all of them together are leaving more money in the hands of people, government and institutions, resulting in higher spending by all. The rising rupee needs to be looked at in its complete context of this new wave. To successfully ride this next wave, it is important to look at what was achieved in the last wave.

Some years ago, a friend of mine and I were talking about what US has gained from India and vice versa. We decided that US companies have been able to concentrate on creative, design, architectural and strategic stuff – the stuff that thought-leadership and dreams are made of. We were left thoughtful and humbled, and we didn’t really end up discussing what India gained. But what I realize today is that during the last decade, we built products that were world class. We didn’t do it for ourselves, so we never owned the intellectual property on what we did. What we did own however, is the intellectual capital in the form of people who built this IP (well most of them anyway). We have a large pool of knowledge-rich, smart folks who can build products. All we need is right direction and good leadership.

To build products, managers and engineers will need to adapt to some important differences from the services business. For example, the business cycle in a services company starts with sales and ends with product delivery. Most managers in the Indian IT business today started their careers with the IT services boom and are all too familiar with this model. As part of the next wave, when we see more and more product companies proliferating the market, these companies will need managers who are adept at building and delivering products not as an end in itself, but as the beginning of a longer and more complex business cycle. The difference is subtle, but has important ramifications for an organization.

This is not to say that the era of services is ending. Far from it, it will evolve into better things and higher-value-chain work. But before we know it, everyone will be talking about the new wave and Indian software products will start selling globally. A decade ago, we joined the IT services industry blissfully unaware of what was brewing and were fortunate to have been part of an incredible boom. In today’s India of choices, the question is, do you foresee another wave and can you catch it right at the beginning?

J2ME platform Limitations and ways around these limitations

I am a J2ME fan but that doesn’t stop me from noticing some of the limitations of J2ME J.This post is about some of the ways/ideas I have found to overcome those limitations.

 

  1. In J2ME as we all know there is no API for sending an email. Such an API would have been of great use when we wanted to send an email through our J2ME application. But if you just have to send an email through a J2ME application you could pass the email subject and body as well as the senders and receivers name to a Java Servlet the Java Servlet will then collect all this information passed to it by the J2ME application and use Java Mail API to send the email to the desired recipient.
  2. There is no way to access the SMS inbox in J2ME this is because the J2ME midlet runs in a sandbox and has limitations on what all operations it can perform.The idea for overcoming this limitation is to have a native program (written in the native O.S.) which reads the SMS inbox and writes to a Local Socket the J2ME application can then read the data from the Local Socket. But this is not perfect solution because we will require different native programs for different devices.
  3. Every mobile device has an SMS port i.e. the port at which the mobile device receives the incoming Messages (SMS) for example Nokia devices receive SMS at port 0. Now for a Midlet to receive the incoming Messages(SMS) it has to listen at a specific port on the device. Now one can send Messages (SMS) to a device using J2ME (i.e. by using Wireless Messaging API) as well as the normal method (without using J2ME).The Messages send using normal method will be received by the receiving device on the SMS port. On the Other hand Message send using J2ME will carry port number and will be send to a specific port of the receiving device. So we require a midlet on the receiving device listening on that specific port to receive a SMS sent through J2ME.This puts forth an interesting question i.e. if we have a midlet listening on the SMS port of the device will it receive both type of message? (i.e. Normal messages as well as message send through J2ME.) I actually tried it out and found that this didn’t happen. I was unable to receive both types of messages on the device when my midlet was listening for messages on the SMS port of the device. So we can say that we can only receive the Messages sent through J2ME when we have a midlet listening for messages on the receiving device. As I said previously there is no way for accessing the SMS inbox in J2ME but what we can do is to have a midlet listening for SMS on a specific device i.e. get the Message before it actually goes to the inbox and we can have our own created inbox (J2ME application created) for storing the Messages received by the Midlet.
  4. We use platform Request method in J2ME for making a voice call. But the problem here is that we really don’t have any way to end a voice call programmatically. The facility such as ending a voice call programmatically would have been useful for situations such as giving a Miscall through J2ME.The problem with platform Request is that it is totally under the native Systems control so once we call the platform Request for making a voice call we have no way to stop this initiation of voice call programmatically. But now the Mobile Telephony API (MTA) (JSR - 253) is released which promises to have more control over voice call initiation and by using this API we can also end a call programmatically. But still no device yet supports or has the implementation for this API.
  5. Many times we would like our applications to provide Text to speech facility but there again because of the limited resources on the mobile device we may not get fast conversion of text to speech. By that I mean that there may be a some time lag between text to speech conversions of each word because of the limited processing power of the mobile device. The only idea I can think over here is to pass the entire text sentence to a servlet and J2SE also has some classes for text to speech conversion and get back the audio from the servlet and simply play the received audio in the midlet.By doing so we are assigning the much heavy operation of text to speech conversion to servlet which will run on some server and will definitely have more powerful resources than that of the mobile.

Watch out for more in the next post J


Memory Management on Mobile Platform

 

When I was a school kid, I never actually worried about the resources I was using or occupying. I always finished my pocket money before the month end. I was wasting a lot of resources and the reason for that I think was that I didn’t realize where the importance and also the source of resources! But after finishing my schools I never remained careless about my resources. I would attribute the change to learning C and C++ in my college. “Isn’t it funny?” JYes, the memory management in C and C++ encouraged me to handle my resources.

Then came mobile platforms in my life. The best platform to learn doing a lot of things with very less resources. Every chunk of memory you allocate, needs a reason to do so. Gives another dimension to your resources handling skills.

In last few years I have come across a few mobile technologies. Started with Symbian switched to Palm OS for some amount of time and then back to Symbian a little bit of Windows mobile here and there for a change of taste for few days. I came across different memory management techniques, ways to handle exceptions. And of course distinguishing features for every platform. For Palm its “Locking and unlocking of memory chunk”. This I could talk about in one of the later posts. This one is about my first love Symbian and the bunch of features that distinguish Symbian

Two of the Symbian features I like most are:

  1. Two phase construction
  2. Cleanup stack

Two phase construction:

How do you feel when you just start to construct something and it fails? Some things don’t happen as per the expectations, it’s failure on the planning side. Lets take an example: you start building your house and during construction you notice that the carpenter you booked for your furniture didn’t give you proper estimates for resources and your construction fails .. or at least gets delayed for few weeks or months. But in this scenario you can recover by finding another carpenter. But while programming what if the code in your constructor fails? Lets take an example -

class Person

{

char* name;

char* surname;

public:

// constructor and destructor

Person();

~Person();

}

Now let’s say we allocate these two member variables in a constructor as follows:

Person()

{

name = new char[100];

surname = new char[200];

}

Now the allocation for “name” goes well according to plan. And due to unavailability of a free 200 bytes the allocation for “surname” fails. Now what will happen to the “name” which is already allocated? Its orphaned and finally a memory leak in my application. The constructor of any class should not throw any exceptions ( Leave in Symbian ).

According to me, the best way to handle this situation would be a Two phase construction. It’s a method of creating an object in two phases. First phase would be a constructor and other is say “Construct” method. Let’s take above example class and add a two phase constructor to it.

Class Person

{

Person();

bool Construct()

public:

static Person* Create();

~Person()

}

Person* Person::Create()

{

Person* me = new Person();

if(Person == NULL)

{

return NULL;

}

if( me->Construct() == false)

{

delete me;

return NULL;

}

return me;

}

bool Person::Construct()

{

name = new char[100];

// check for allocation

if(name == NULL )

{

// allocation failed

return FALSE;

}

surname = new char[200];

if(surname == NULL )

{

// allocation failed

// delete previously allocated memory

delete name;

name = NULL;

return FALSE;

}

// everything is successful it means my object is properly allocated

return TRUE;

}

 

This technique of allocation of memory is very impressive for mobile platform because it handles the failure of object construction. I would love to see non wireless platform adopting similar techniques to ensure cleaner object construction.

Be back with the next post on “Cleanup Stack” soon, remember thats other feature I like the most in Symbian.

- Kiran

Of This n That

There’s nothing that gets the adrenaline soaring like the closing in of a deadline. We are as impatient to throw off the stealth mode as you are curious about finding out what we are all about. Within a few weeks from now 13friends would be ready to take it’s first few set of visitor’s by invitation. Last few months have been exhilarating to say the least. We have spent umpteen no of hours trying to figure out in our minds what is it that you would need. It’s almost like being parents of a toddler about to step on to the center stage for the first time!!

Last few months we have really seen the activity around social networking products picking up. There are quite a few cool products out there. However have you ever had feelings like wow! that’s cool , but don’t think it’s for me? I think we have a kind of understanding about the lacunae that exists between the need and the type of products hitting the market at regular intervals. Maybe that’s got something to do with the complexity involved. And we are going to do it one step at time …..relentlessly ! What I am reminded at this point is of a quote I read somewhere…

Be THE , not “A”

“A” is random. “A” is generic. “A” is one of many. “A” is adequate.

 

“THE” is singular. “THE” is specific. “THE” is the only. “THE” is expert.

Anyways, if you happen to be in and around Pune do drop us a line and let us know if you would be interested to be a part of the lunch 2.0 movement (true Silicon Valley Style ) that we have started in Pune.

And oh ! did you notice the new Services tab that we have added to the site? As mentioned, community and communication is our forte. If you would like to learn more, don’t be shy about dropping us an email at sevices@mangospring.com. We do answer all legitimate (non-spam) emails we get :)

-Anjali

©2007 - 2008 MangoSpring. All Rights Reserved.