<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.81 (http://www.squarespace.com/) on Wed, 08 Feb 2012 01:53:34 GMT--><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>mtelligent</title><subtitle>Journal</subtitle><id>http://www.mtelligent.com/journal/</id><link rel="alternate" type="application/xhtml+xml" href="http://www.mtelligent.com/journal/"/><link rel="self" type="application/atom+xml" href="http://www.mtelligent.com/journal/atom.xml"/><updated>2012-01-12T02:59:54Z</updated><generator uri="http://www.squarespace.com/" version="Squarespace Site Server v5.11.81 (http://www.squarespace.com/)">Squarespace</generator><entry><title>Developing the idea</title><category term="OnceFound"/><id>http://www.mtelligent.com/journal/2012/1/11/developing-the-idea.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2012/1/11/developing-the-idea.html"/><author><name>David San Filippo</name></author><published>2012-01-12T02:32:34Z</published><updated>2012-01-12T02:32:34Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>I've been consistently working on the site since my last post, though none of the changes have gone live yet and probably wont for a week or so.</p>
<p>I started with the best of intentions. Add caching to the site using Windows Azure Appfabric Caching. As I started to gut the pages to add in caching, I lamented that I didn't spend much of the initial flurry of activity on writing unit tests, which would have made me feel more comfortable about the changes I was making.</p>
<p>So I spent a few days writing unit tests and refactoring my controllers to be more testable, removing dependencies on the http context and refactoring for a bit more structured and elegant code.</p>
<p>Once that was in place I implemented the caching, which was pretty straightforward except for one thing. Since the configuration section used was a collection of datacacheclients, I thought it would be neat to get windows server appfabric caching and swap between them depending on whether I was doing a dev build or a release build. The cache client had the same name and were in an assembly of the same name, so I thought it would be straight forward. But it turns out the Azure assembly is version 101.0.0.0 and the Windows server is version 1.0.0.0 and are completely incompatible.</p>
<p>When I gave up, I had to deal a slew of errors, because apparently azure only likes it if you name your datacacheclient "default".</p>
<p>Anyway, once I got the configuration squared away, implementing caching was pretty straightforward.</p>
<p>At the same time, I starting looking for help with the design of the site. I pursued a couple of leads, but couldn't find anyone I was comfortable with, so I decided to try to do it myself. (famous last words...)</p>
<p>So I think I have a nicer layout, which I plan on rolling out, but as I thought about usability and my original vision of "once found" as a research tool, I started working on major changes to the site.</p>
<p>First decision I made was for no more polls. I'm ripping them out. Most topics they didn't make sense, and the few people I got to try the site were entering answers that should have been comments.&nbsp;Comments will be prominent, with links in the sidebar.&nbsp;</p>
<p>I want to turn this into a research tool. When this is ready, I'll launch OnceFound, which will allow for research any topic, with each question site a more specific version of the site. With this in mind, here is how I picture people using it.</p>
<p>&nbsp;</p>
<ul>
<li>For each topic, users will be able to drag and drop the links and comments in any order they please. The relative rankings each users give will calculate a "score" which could then be used to guess where links appear in the shared rankings. As new links are ranked, they could appear where we think a user would rank that link if they vote like other users. They can also remove a link or comment from their personal view and switch to the shared view.</li>
<li>For each topic, users can maintain a personal log that is not shared with other users.</li>
<li>Pages will show usernames of other users "researching" the topic ordered by their activity level on the topic. Will implement a user messaging feature.</li>
</ul>
<p>&nbsp;</p>
<p>Basically I see each topic page as a research hub, which I want to enable multiple people to combine resources.</p>
<p>Here's a very preliminary screenshot to give you an idea of the basic future layout (content areas are not styled yet).</p>
<p><span class="full-image-block ssNonEditable"><span><img src="http://www.mtelligent.com/storage/FutureHOSY.png?__SQUARESPACE_CACHEVERSION=1326337154559" alt="" /></span></span></p>
<p>This will be a lot of work and not all of that may make it into the first iteration. Will provide updates as more work gets done.</p>]]></content></entry><entry><title>The Purpose</title><category term="OnceFound"/><id>http://www.mtelligent.com/journal/2012/1/5/the-purpose.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2012/1/5/the-purpose.html"/><author><name>David San Filippo</name></author><published>2012-01-06T01:45:37Z</published><updated>2012-01-06T01:45:37Z</updated><content type="html" xml:lang="en-US"><![CDATA[<div>After writing the last <a href="http://www.mtelligent.com/journal/2012/1/4/the-plan.html">post </a>on my plan for developing the sites, I took a step back and began to think about what the point of this venture was. The value proposition, the business statement, the eventual business model. As a developer I was so enamored with building the site and leveraging these cool new technologies, I didn't stop and think what need I was solving.</div>
<p>&nbsp;</p>
<div>Now that it's live, and I've had time to reflect, I think there is a real need, a pain point that can be solved. And luckily for me, I think there is an opportunity that can exploited by these sites.</div>
<p>&nbsp;</p>
<div>When it comes to using search engines, I find myself search one of two ways. Entering keywords related to what I'm looking for, or just entering a question fully flushed into google and seeing what is returned. I suspect I am not alone in this approach.</div>
<p>&nbsp;</p>
<div>The problem with existing search results, is that although there are some good results, some are geared toward a single opinion, and you have to spend time going from site to site to figure out what to trust.&nbsp;Question and answer sites like Yahoo answers are great for this sort of thing, but you find yourself finding many variations of the same questions with different answers. There is no real authoritative resource that is "the answer" or "set of answers."</div>
<p>&nbsp;</p>
<div>My goal for the sites is to become that authoritative resource. Related links worth looking at can be organized and voted on. Comments specific to that question can be posted and discussed. Even the poll can be used to give people a general sense of what sentiment on the different answers are.</div>
<p>&nbsp;</p>
<div>While I suspected that I wasn't alone in typing fully flushed out questions into google, I was surprised to how frequently other people did it. When I used <a class="offsite-link-inline" href="https://adwords.google.com/select/KeywordToolExternal" target="_blank">google's keyword estimation tool</a> to see how many people search for questions like this every month here is what I found:</div>
<p>&nbsp;</p>
<div>
<ul>
<li>How often should you: 673,000 (broad), 201,000 (phrase)</li>
<li>Where Could: 55,600,000 (broad), 40,500 (phrase)</li>
<li>How Can You Get: 277,000,000 (broad), 110,000 (phrase)</li>
</ul>
</div>

<p>&nbsp;</p>

<div>Well you might think those are broad terms, but the keyword tool allows you to drill down even further and see the most common queries that include those terms.</div>

<p>&nbsp;</p>

<div><span class="full-image-block ssNonEditable"><span><img src="http://www.mtelligent.com/storage/googleKeywordTool.png?__SQUARESPACE_CACHEVERSION=1325814703227" alt="" /></span></span></div>

<p>&nbsp;</p>

<div>I&nbsp;know these are the broad matches, but if you add up all the global monthly searches for the top 200 keyword phrases that begin with the question in the three sites there are over 500 million global searches for those phrases.&nbsp;</div>

<p>&nbsp;</p>

<div>If I just focus on a subset of those to seed the topics with relevant data and work on SEO for questions I have a chance of ranking highly on, I could potential have a lot of traffic on my hands. Hopefully it will be enough traffic to be able to monetize some of that traffic with non intrusive advertising.&nbsp;</div>

<p>&nbsp;</p>

<div>I know it&rsquo;s a long road to get there, but that's the road I see. On the way, I know I need to build a community of folks who are invested in the site and it's content, and finding that audience will be difficult, but hopefully with perseverance, I'll get there.</div>

<p>&nbsp;</p>
]]></content></entry><entry><title>The Plan</title><category term="OnceFound"/><id>http://www.mtelligent.com/journal/2012/1/4/the-plan.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2012/1/4/the-plan.html"/><author><name>David San Filippo</name></author><published>2012-01-05T02:18:01Z</published><updated>2012-01-05T02:18:01Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>So the sites have been up a few days and I seeded the site with the most frequently searched for terms according to google's keyword estimation tool (whose top 200 search phrases add up to over 500 searches per month), though none of the pages have much in terms of content.</p>
<p>Here's my tentative plan for the sites: (in no particular order)</p>
<ul>
<li>Find a graphic designer to help come up with a better UI/User Experience. I think people can tell the site was designed by a developer. The current layout came from a free MVC template from the MVC 1.0 Gallery of templates on codeplex. If you know anyone who can help with this, let me know, otherwise I might have to outsource to oDesk, 99Designs or Crowdspring.</li>
<li>Implement a more robust caching strategy leveraging Azure's Caching.</li>
<li>Add a related Twitter Tweets widget to the topics pages. (Started looking at their API's and they looked interesting), and may give some default content to new pages.</li>
<li>Use Windows Azure Access Control Services (ACS) to enable login through Google and Facebook. Part of broader strategy to integrate the sites with Facebook via their API's. Plus already viewed the Pluralsight training on this, and looks pretty easy to implement.</li>
<li>Change the Voting strategy of the site. In the interest of reducing friction for using the site, currently anonymous users can vote and submit. JavaScript cookies are all that prevent users from voting over and over again. Eventually I'd like to build a more robust solution, storing user votes in Azure table storage. Right now all the data is in SQL Azure, but depending on how this goes, maybe its worth moving other items into Table or Blob Storage.</li>
<li>Create a "curator" role either for topics or tags, to allow notifications when content changes. Hoping to give users the ability to monitor the site. Also allow these users to modify content (answers, comments, etc)</li>
<li>Add a set of FAQ pages</li>
<li>Add RSS Feed Support for tags or topics.</li>
<li>Figure out how to implement a robust search function and implement it.</li>
<li>Leverage above mentioned search functionality to automatically identify and handle duplicate topics like google does with "Did you mean?". Maybe depending on the confidence level, display a page with similar sounding question instead of creating a new topic, like we do today, which I think is a cool feature for now.</li>
<li>Figure out how to monetize the site. I was rejected from Adsense due to a lack of content.&nbsp;</li>
<li>Come up with a better content strategy. I might end up finding a virtual assistant or someone to help seed the site with content.&nbsp;</li>
<li>Build out a better deployment strategy. I've grown tired of waiting for all the servers to be updated whenever I deploy a new package. I've heard of quick web deployments using the Windows Azure accelerator for web roles, and it's something I'm thinking of looking once the pain has become too much. And as far as automated builds go, I'm looking of forward to seeing how it will fit together with git. Right now, I'm pushing all my code to bit bucket before every deployment as a practice and it's worked out nice so far.</li>
<li>Create a catch all site, "OnceFound" to describe the purpose of all of this. Eventually the plan could be to acquire more domains and leverage the same technology, or perhaps allow others to use this technology to park question oriented domains (become a host).</li>
</ul>
<p>Sounds like enough&nbsp;to keep me busy for a while.</p>
<p>If anyone else has any other ideas, let me know.</p>
<p>&nbsp;</p>]]></content></entry><entry><title>Introducing WhereCould.com, HowCanYouGet.com</title><category term="HCYG"/><category term="HOSY"/><category term="OnceFound"/><category term="WhereCould"/><id>http://www.mtelligent.com/journal/2012/1/1/introducing-wherecouldcom-howcanyougetcom.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2012/1/1/introducing-wherecouldcom-howcanyougetcom.html"/><author><name>David San Filippo</name></author><published>2012-01-02T03:56:08Z</published><updated>2012-01-02T03:56:08Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>As of now, the OnceFound network has grown by two additional sites. Both WhereCould.com and HowCanYouGet.com are now live.</p>
<p>To accomplish this, I didn't haven't to deploy anything additionally, and the domains are actually redirected to a single Windows Azure application instance.</p>
<p>The architecture of the codebase, allows the host names to drive the content of the site (title, branding, etc, thought not much is customized for now).&nbsp;</p>
<p>I also cleaned up some of the code and layout, added images for upvotes/downvotes, added google adsense (which appears blank until google approves) and made a few other minor tweaks.</p>
<p>Feel free to check them out.</p>
<p><a class="offsite-link-inline" href="http://www.wherecould.com/" target="_blank">http://www.wherecould.com/</a></p>
<p><a class="offsite-link-inline" href="http://www.howcanyouget.com/" target="_blank">http://www.howcanyouget.com/</a></p>]]></content></entry><entry><title>Introducing HowOftenShouldYou.com (HOSY)</title><category term="HOSY"/><category term="OnceFound"/><id>http://www.mtelligent.com/journal/2011/12/31/introducing-howoftenshouldyoucom-hosy.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2011/12/31/introducing-howoftenshouldyoucom-hosy.html"/><author><name>David San Filippo</name></author><published>2012-01-01T03:32:53Z</published><updated>2012-01-01T03:32:53Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>In the past month, I started coming up to speed on Windows Azure, having attended a developer camp in Microsoft's NYC offices in early December.&nbsp;</p>
<p>I then signed up for a Pluralsight membership and had been viewing a ton of their training materials on my new Kindle Fire using their app, and spent a good amount of time looking at their stuff for ASP.Net MVC, jquery and Windows Azure, all of which I have not had much experience with.</p>
<p>Wanting to work with all these technologies, and build something new, I spent the last 8 days developing a new site: "How Often Should You," a site which allows users to discuss, share information and vote related to questions users typically ask that start "How Often Should You."</p>
<p>Any question searched for automatically gets a topic specific page.&nbsp;In the interest of getting things live as quickly as possible, I've only implemented bare bones functionality for topics including:</p>
<p>
<ul>
<li>Submit and Vote on answers to the question, Poll Style.</li>
<li>Submit and Vote on Links related to the question</li>
<li>Submit, Reply and Vote on comments related to the question.</li>
<li>Tag each topic with keywords that will relate the question to other questions.</li>
</ul>
</p>
<p>There's also a basic account/login model, which isn't really used for much now, as for now anonymous users can vote and submit content.&nbsp;</p>
<p>There is plenty of room for feature improvements, and I already have a large backlog including rolling out sister sites for a few domain names I already registered (WhereCould, HowCanYouGet). I will actually be able to leverage the same servers and db as this is architected into the approach. It's part of my plan to create these sites under an umbrella site called "OnceFound," which right now is just another domain name I own.</p>
<p>Ultimately, I'm planning on running ads on the sites, and is this my first venture of this kind, I'm curious to see how successful this could be.&nbsp;</p>
<p>Under the hood, I'm using a bunch of technologies I haven't gotten a chance to work with before including: ASP.Net MVC3, Entity Framework 4.1 (code first), JQuery (JQuery UI and a few other plugins), SQL Azure (Plan on using table storage down the road) and of course Windows Azure. I'm also using GIT for the first time, and saving my code in a private repository on bitbucket, which has been a nice experience so far.</p>
<p>Luckily my MSDN subscription gives me a number of Azure computing hours for free, which I'm hoping will eliminate most of my costs for running this experiment. Right now the site is powered by 3 extra small instances.</p>
<p>I plan on posting more details about the technical implementation and planned features so stay tuned.</p>
<p>There is not a lot of content now, but I'll be adding generic pages based on search estimates from google's keyword estimator tool.</p>
<p>Check out the site here: <a class="offsite-link-inline" href="http://www.howoftenshouldyou.com/" target="_blank">http://www.howoftenshouldyou.com/</a></p>]]></content></entry><entry><title>Support Server Side Databinding with Sencha Touch and ASP.Net webforms</title><category term="Sencha Touch"/><id>http://www.mtelligent.com/journal/2011/8/25/support-server-side-databinding-with-sencha-touch-and-aspnet.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2011/8/25/support-server-side-databinding-with-sencha-touch-and-aspnet.html"/><author><name>David San Filippo</name></author><published>2011-08-25T04:04:13Z</published><updated>2011-08-25T04:04:13Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>So I have working code to support binding server data to Sencha Touch components like lists and select widgets using the same data binding approach you typically use with other ASP.Net controls.</p>
<p>I created a "store" server control that will handle registering a data model and creating a store and filling it with data from the data source. Since it inherits from CompositeDataBounControl, you can set the DataSource property or specify the DataSourceID of any ASP.Net data source control. Finally you need only set your widgets store property to the same ID that the store uses to have that component work off of that store.</p>
<p>Here is the ASPX markup for a simple object data source, store and List control (similar to the List sencha touch sample):</p>
<p>&lt;asp:ObjectDataSource runat="server" SelectMethod="GetContacts" TypeName="Contact"&gt;&lt;/asp:ObjectDataSource&gt;</p>
<p>&lt;SD:Store runat="server" DataSourceID="ObjectDataSource1" &gt;</p>
<p>&nbsp; &lt;sorters&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;SU:Sorter property="FirstName" /&gt;</p>
<p>&nbsp; &lt;/sorters&gt;</p>
<p>&nbsp; &lt;getGroupString&gt;</p>
<p>&nbsp; function(record) {</p>
<p>&nbsp;&nbsp;&nbsp; return record.get('lastName')[0];</p>
<p>&nbsp; }</p>
<p>&nbsp; &lt;/getGroupString&gt;</p>
<p>&lt;/SD:Store&gt;</p>
<p>&lt;ST:List fullscreen="true" runat="server" grouped="true" indexBar="false" store="contactsStore"&gt;</p>
<p>&nbsp; &lt;div class="contact2"&gt;&lt;strong&gt;{firstName}&lt;/strong&gt; {lastName}&lt;/div&gt;</p>
<p>&lt;/ST:List&gt;</p>
<p>Couple things to note, the GetContacts method is a simple method that dummy's up some names in a list. I've also tested with a SqlDataSource with parameters which also works fine. Right now the component will render every property of the data item, though I can imagine adding properties to allow folks to control which columns will be rendered.</p>
<p>I also have been playing with PersistanceMode and the ParseChildren property to improve the readability. The store supports this for Sorters and Filters and the GetGroupString property, which allows you to easily specify a custom javaScript function to get the groups. The list component itself maps the inner content to the itemTpl property which allows you to easily setup a tpl template using the standard Sencha Touch {fieldName} syntax.</p>
<p>This markup will output the following javaScript into the head of the page:</p>
<p>Ext.regModel('contactsStore_Model', {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fields: ['firstName','lastName']</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var contactsStore = new Ext.data.Store({</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; model: 'contactsStore_Model'</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , data: [ {firstName:'Captain',lastName:'America'},</p>
<p>{firstName:'Tony',lastName:'Stark'},</p>
<p>{firstName:'Super',lastName:'Man'},</p>
<p>{firstName:'Wonder',lastName:'Woman'},</p>
<p>{firstName:'Peter',lastName:'Parker'} ]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,storeId : 'contactsStore',</p>
<p>getGroupString : function(record) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return record.get('lastName')[0];</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var listMain = new Ext.List({</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fullscreen : true,</p>
<p>grouped : true,</p>
<p>indexBar : false,</p>
<p>itemTpl : '&lt;div class="contact2"&gt;&lt;strong&gt;{firstName}&lt;/strong&gt; {lastName}&lt;/div&gt;',</p>
<p>store : 'contactsStore'</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new Ext.Application({</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; launch: function() {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listMain.show();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });</p>
<p>&nbsp;</p>
<p>I know&nbsp;the javaScript code rendered&nbsp;isn't the prettiest thing in the world, but it is functional. Even if you hate it, this approach could be used for simple scenarios or for rapid prototyping, after which you can take the rendered javaScript and manually clean and move.</p>
<p>I also have this working for the select form control. I eventually want to give some more thought on how to modify the control to better support other store scenarios binding to data sets external to the javaScript code (localStorage, REST, etc).</p>
<p>So far I have working samples that match the Carousel,&nbsp; Forms, Overlays, Tabs and Tabs2 samples.</p>
<p>Want to work on getting some of the Media controls and map control working and will update. I'm getting close to the point where I need to figure out what to call this library (nTouch?)&nbsp;and where to put it (codeplex, github, etc)</p>]]></content></entry><entry><title>Supporting Post Backs for Sencha Touch Forms and Buttons</title><id>http://www.mtelligent.com/journal/2011/8/17/supporting-post-backs-for-sencha-touch-forms-and-buttons.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2011/8/17/supporting-post-backs-for-sencha-touch-forms-and-buttons.html"/><author><name>David San Filippo</name></author><published>2011-08-18T03:42:39Z</published><updated>2011-08-18T03:42:39Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Although I haven't tested everything nor do I support all scenarios, I have a base framework with server controls for each Sencha Touch JavaScript component element that renders to javaScript and got samples working for forms, docking panels, buttons and the carousel rendering properly.</p>
<p>Today I spent some time trying to get post backs working properly which actually was more challenging than I thought.</p>
<p>The main problem arose from the fact that Sencha Touch renders its own Form tags, and the form elements it rendered would only be contained within those form tags, such that performing a post back on the main ASP.Net form would not include any details about the elements of the sencha touch form.</p>
<p>My solution so far, which seems to be working, has been to hook into the change listener on each form input and copy the changed value to a hidden input the control renders in the ASP.Net form. This still will only work (properly) if you have one FormPanel on your page, but I suspect that should suffice for most applications.</p>
<p>One little gotcha I discovered, is that the Ext.form.Text component's value property isn't auto updated as you type. Instead you actually need to call the getValue() function to get the current value.</p>
<p>I also did some work on databinding, and although I haven't hooked anything up to a data bound control yet, I did managed to get DataSource controls to render as JavaScript that registers a model and creates a simple store. Once I have that working, I'll post some details.</p>]]></content></entry><entry><title>How to set your main view in Sencha Touch (Ext.Setup vs. Ext.Application)</title><category term="Sencha Touch"/><id>http://www.mtelligent.com/journal/2011/8/14/how-to-set-your-main-view-in-sencha-touch-extsetup-vs-extapp.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2011/8/14/how-to-set-your-main-view-in-sencha-touch-extsetup-vs-extapp.html"/><author><name>David San Filippo</name></author><published>2011-08-14T04:26:52Z</published><updated>2011-08-14T04:26:52Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>I'm trying to build ASP.Net server controls to emit Sencha Touch javaScript and need to decide on the basic structure of the JavaScript that will be emitted. I've encapsulated the logic to emit elements into the pages header during pre-Render and it's working pretty well, though I'm not sure the script I'm rendering is the best.</p>
<p>Half the samples I read use Ext.Setup and others use Ext.Application. Saw a few forum answers that said Applications were primarily for MVC applications, but also read that applications had support for targeting profiles.</p>
<p>Right now I have code using the Ext.Application. My current approach is having all server controls inherit from a base class that extends a normal ASP.Net Panel. During pre-Render, I walk the stack and then emit JavaScript in reverse depenency order to declare/configure each object. (generate variables using control ID's as the name), Then in the Applications launch function, call show on the outer most components.</p>
<p>Not sure if this approach makes sense, or I should use Ext.Setup and create a separate Application Control if that is needed.</p>
<p>So far, this is working for Panels. Right now, this snippet:</p>
<p style="padding-left: 30px;">&lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %&gt;<br />&lt;%@ Register TagPrefix="ST" Assembly="Sencha.Touch.Core" Namespace="Sencha.Touch.Core" %&gt;<br />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;</p>
<p style="padding-left: 30px;">&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"&gt;<br />&lt;head runat="server"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;title&gt;&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&nbsp;&nbsp;&nbsp; &lt;form id="form1" runat="server"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;div&gt;<br />&nbsp;&nbsp;&nbsp; &lt;ST:Panel ID="panelOuter" runat="server" fullScreen="true" style="background-color:Red"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;ST:Panel ID="panelInner" runat="server" dock="bottom" style="background-color:Blue"&gt;<br />&nbsp;&nbsp;&nbsp; Hello There<br />&nbsp;&nbsp;&nbsp; &lt;/ST:Panel&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/ST:Panel&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/div&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
<p>Renders the following:</p>
<table>
<tbody>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;html <span class="webkit">xmlns</span>="<span class="webkit">http://www.w3.org/1999/xhtml</span>"&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;head&gt;</span><span class="webkit">&lt;title&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&lt;/title&gt;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;script <span class="webkit">src</span>="<a class="webkit-html-resource-link webkit-html-attribute-value" href="http://localhost:61756/SenchaKitchenSink/src/sencha-touch.js" target="_blank">src/sencha-touch.js</a>" <span class="webkit">type</span>="<span class="webkit">text/javascript</span>"&gt;</span><span class="webkit">&lt;/script&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;link <span class="webkit">href</span>="<a class="webkit-html-resource-link webkit-html-attribute-value" href="http://localhost:61756/SenchaKitchenSink/resources/css/sencha-touch.css" target="_blank">resources/css/sencha-touch.css</a>" <span class="webkit">rel</span>="<span class="webkit">stylesheet</span>" <span class="webkit">type</span>="<span class="webkit">text/css</span>" /&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;script <span class="webkit">type</span>="<span class="webkit">text/javascript</span>"&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">var panelInner = new Ext.Panel({</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">html : 'Hello There',</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">style : 'background-color:Blue',</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">dock : "bottom"</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">});</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">var panelOuter = new Ext.Panel({</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">html : '',</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">style : 'background-color:Red',</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">dockedItems : [panelInner],</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">fullscreen : true</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">});</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">new Ext.Application({</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">launch: function() {</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">panelOuter.show();</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">}</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">});</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&lt;/script&gt;<span class="webkit">&lt;/head&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;body&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;form <span class="webkit">method</span>="<span class="webkit">post</span>" <span class="webkit">action</span>="<span class="webkit">default.aspx</span>" <span class="webkit">id</span>="<span class="webkit">form1</span>"&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;div <span class="webkit">class</span>="<span class="webkit">aspNetHidden</span>"&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;input <span class="webkit">type</span>="<span class="webkit">hidden</span>" <span class="webkit">name</span>="<span class="webkit">__VIEWSTATE</span>" <span class="webkit">id</span>="<span class="webkit">__VIEWSTATE</span>" <span class="webkit">value</span>="<span class="webkit">/wEPDwUINzE2MDI0MjlkZE+ZVR52o7CJnpfk3GNcmZ3iwEPl29BJRNRvhoXb4JuH</span>" /&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;/div&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;div&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit">&nbsp;</td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;/div&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;/form&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;/body&gt;</span></td>
</tr>
<tr>
<td class="webkit">&nbsp;</td>
<td class="webkit"><span class="webkit">&lt;/html&gt;</span></td>
</tr>
</tbody>
</table>
<p>What I hope to eventually do, is handle layout controls, and then add buttons and other form controls (supporting post backs) and eventually look to support databinding as well, though I'm a ways from that...</p>]]></content></entry><entry><title>If you want docking to work for Panels in Sencha Touch, don't forget the Stylesheet</title><id>http://www.mtelligent.com/journal/2011/8/14/if-you-want-docking-to-work-for-panels-in-sencha-touch-dont.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2011/8/14/if-you-want-docking-to-work-for-panels-in-sencha-touch-dont.html"/><author><name>David San Filippo</name></author><published>2011-08-14T04:21:00Z</published><updated>2011-08-14T04:21:00Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>As I mentioned before, I've been playing with Sencha touch, with the eventual goal of creating server controls to emit JavaScript. Right now I'm focused on layouts and spent some fustrating time trying to figure out why things weren't docking properly.</p>
<p>I created a nested panel, and set the dock property to 'bottom', but no matter what I did, it showed up on the top.</p>
<p>Eventually I figured it out. I needed to have the correct path to the sench touch style sheet. As soon as that was setup, the docking appeared correctly.</p>
<p>&nbsp;</p>]]></content></entry><entry><title>An update, long overdue</title><id>http://www.mtelligent.com/journal/2011/8/3/an-update-long-overdue.html</id><link rel="alternate" type="text/html" href="http://www.mtelligent.com/journal/2011/8/3/an-update-long-overdue.html"/><author><name>David San Filippo</name></author><published>2011-08-04T03:25:51Z</published><updated>2011-08-04T03:25:51Z</updated><content type="html" xml:lang="en-US"><![CDATA[<div>It's been a long time since my last post right before I left for Mumbai, India. The seventeen days I spent there went quickly, working nearly every day and not taking much time to see the country, though the team I worked with were very hospitable and I found it helpful to meet the team in person. Perhaps one day I will spend the time on a more detailed description of my experience.</div>
<div></div>
<br /><div>I spent the rest of 2010 workin long hours and helped successfully deliver a finished product. At the end of the year, my wife and I found out we were expecting another child, and with a local less stressful project, I decided to refocus.</div>
<div></div>
<br /><div>When I was younger, armed with a high metabolism and love of basketball, I was lean with little effort. Since I began my working career over ten years ago, I managed to gain weight with just as little effort. In February, I weighed over 250 lbs, and was fed up enough to do something about it.&nbsp;</div>
<div></div>
<br /><div><span class="full-image-block ssNonEditable"><span><img style="width: 550px;" src="http://www.mtelligent.com/storage/Maggies%20Camera%20020.JPG?__SQUARESPACE_CACHEVERSION=1312429423429" alt="" /></span><span class="thumbnail-caption" style="width: 550px;">Before Pic, with Robert looking on.</span></span></div>
<br /><div>A colleague on my last project had great success with a workout program called p90x, and I decided to try it myself. At the end of 90 days, I managed to lose over 30 lbs and decided to try another program from the same company called insanity. After 60 days, I lost another 20 lbs and found myself under 200 lbs for the first time in at least a decade.</div>
<div></div>
<div></div>
<br /><div>At the same time, I also managed to complete two running programs, couch to 5k and then bridge to 10k , working my way from not being able to run a few minutes, to being able to run an hour straight.</div>
<br /><div>After the sixty day program ended, I took a week off and tried to start p90x plus, but before I was able to finish my first week, my wife went into labor a little less than a month early. I think it had a lot to do with my wife having to deal with a eight hour blackout in the middle of a 105 degree day.</div>
<div></div>
<br /><div></div>
<div>So, William Ragnar Gerard San Filippo was born on July 23, 2011 at 6:39am, weighing only 4 lbs 3 oz. His small size led to him staying in the NICU almost a week, but we brought him home last Thursday.</div>
<div></div>
<br />
<div><span class="full-image-block ssNonEditable"><span><img style="width: 550px;" src="http://www.mtelligent.com/storage/2011-07-23%2006.55.12.jpg?__SQUARESPACE_CACHEVERSION=1312429729892" alt="" /></span><span class="thumbnail-caption" style="width: 550px;">Welcome William Ragnar Gerard San Filippo</span></span></div>
<div></div>
<div></div>
<br /><div>So I write this in the middle of the first week of 5 weeks of paternity leave. Besides helping my wife and keeping my older son, Robert busy, I have a few goals. I restarted p90x plus in the morning and actually am trying to see if I can pull off doubles, doing insanity asylum, a 30 day program at night.</div>
<br /><div>More interestingly, I'm digging deep into mobile development with HTML 5 and actually looking into two frameworks, sencha touch and phone gap and my preliminary goal is to figure out a way to get them to work with asp.net. If all goes well, I may submit an abstract to give a talk on it at the next NYC .net code camp. More posts to follow as I dig into this topic.</div>]]></content></entry></feed>
