Blog Search
Blog Latest Comments
nice!
by Hunter Eskew on Tuesday, August 16, 2011
Hahaha, not blogging from the iPad. This time it was me trying to do 8 things at once :) But I've since corrected. An...
by TJ Muehleman on Wednesday, May 11, 2011
Blogging from your iPad again, I see :). Great stuff, TJ! It's always so intriguing to hear where our architecture is ...
by kcoleman on Wednesday, May 11, 2011
Interesting stuff TJ! Please immediately come up with a clever acronym for cloud based OEM before Gartner or Forrester ...
by Kevin Fielding on Wednesday, May 11, 2011
Ho ADACarolyn, To further elaborate: any email generated from the community platform (invites, report abuse notificat...
by kcoleman on Thursday, May 05, 2011
Page  of  Total Items: 28

firstprevnextlast

ThePort's Product and Technology blog. We'll share helpful tips about the platform, talk about upcoming releases, and maybe on occasion share a story or two on how awesome the team is here.
Archive for December 2009
TJ Muehleman
Posted by TJ Muehleman
Tuesday, December 15, 2009
Comments (0)
New documentation has been added here about our Search page. Check it out!


TJ Muehleman
Posted by TJ Muehleman
Monday, December 07, 2009
Comments (0)
With ThePort’s platform, our customers are able to customize their site to meet their needs in numerous ways. But how are we able to do that? Because we are SaaS, we’re unable to build custom sites for each individual customer. Instead, we’ve taken advantage of XML and its sister language, XSLT, to build a robust and dynamic Template system. The first and most fundamental part of our Template system is XML. We take advantage of the fact that all of our data is represented in the form of XML business objects. That is, every user, customer, event, and social space, can be serialized into XML. Since .NET exposes a number of built-in serialize routines, and makes it extremely simple to tailor the schema of these objects, it was a no-brainer for us to make XML serialization a base part of our core framework.

Secondly, and certainly the most important part, is XSLT. XSLT is a style language that allows us to take basic XML and mark it up into HTML so it can be served over the web. While XSLT isn’t a fully formed OO language, it offers all of the basic constructs necessary to create living breathing webpages: variables, conditionals, loops, etc. Now to really make this whole thing work, we used a seldom used part of XSLT called “XSLT Extension Objects”. This is something that allows us, from the XSLT, to call back into our codebase. All we have to do is expose a method in an object, and then pass that object into the transform. Then, with a little import style code at the top of the XSLT, we have access to that object and all of its publicly exposed methods. We can use this to call into our database or make utility calls.

So how we do marry the two, XML and XSLT? Let’s take for example a simple module on a page: Latest Members. The Latest Members module is one of our most commonly used call-outs on our community page. It does exactly what you may think it does: it shows the latest 5 (or 10, or 15…) members who have joined the community.

When a page loads that contains this module, we use an XSLT extension method (described above) called “ProcessServerModule” that tells the XSLT page to go off and grab a certain subset of data (in this case, LatestMembers). I’ll skip our data access and caching methodologies (blog entries for another day) but suffice to say that this ProcesServerModule call will return an XPathNavigator that contains the relevant data needed to display this data: the 10 users we want to display, including their data (ID, Name, ProfileImage, etc). This data is typically enough to display what we want. However, if we wanted to, we could take another extension method “GetUser” and instantiate one of our User objects. This would give us another XPathNavigator with a lot more information about the user. Now that we have these navigator objects, what do we do? From here, it’s pretty simple. We loop through the object in XSLT and display the data however we see fit using standard HTML / CSS / JavaScript.

More on the modules, schemas, and other XSLT goodies here.
TJ Muehleman
Posted by TJ Muehleman
Wednesday, December 02, 2009
Comments (0)
Starting in Q3 of 2009, ThePort Engineering began an extensive retrofit of our entire site with a new User Interface. This new UI went hand-in-hand with a new templating system that we had been building (more to come on that in a future blog entry). The goals of our new UI were the following:
  • Speed it up: We wanted our pages to pop! when you hit them
  • Upgrade to our new templating system. As mentioned above, we've begun the conversion away from our old proprietary system to a new, open, standards based system. We're taking advantage of the power of XML and XSLT to really transform and empower our web designers with cool new toys
  • And most importantly, we wanted to make engagement much easier
The last point is absolutely the most important. The goal of our platform is to make it easy for people to engage one another and talk about what really matters to them. In our old user interface, engagement wasn't the focus. Commenting on someone's profile, interacting with a group, or creating new events took too many steps. Our new UI streamlines these processes considerably while still elevating relevant content to the end user.

Several new modules have helped accomplish this: a new community activities module that shows activities across the community, what are my friends doing (which will be available Q1 2010) shows what your friends are up to, and our feed aggregator module helps deliver news and RSS feeds that matter to users and groups.

The UI project will continue into 2010 and will continue with an overhaul of our groups and blogs technologies. Beyond groups and blogs, UI and a better customer interaction will continue to be a focal point for our team.