<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Planning to change the world with software built for humans.  
Started  W3Portals in 2004. More @ Twitter | About.me</description><title>$(Brad Oyler).TryToBuild(stuff)</title><generator>Tumblr (3.0; @bradoyler)</generator><link>http://bradoyler.com/</link><item><title>Google I/O conference is now streamin live.</title><description>&lt;p&gt;Goto &lt;a href="https://developers.google.com/events/io/" title="google i/o" target="_blank"&gt;Google I/O live feed&lt;/a&gt; &lt;/p&gt;</description><link>http://bradoyler.com/post/50501454658</link><guid>http://bradoyler.com/post/50501454658</guid><pubDate>Wed, 15 May 2013 12:02:44 -0400</pubDate></item><item><title>When I've read Oauth specs and I did not understand anything</title><description>&lt;p&gt;&lt;a class="tumblr_blog" href="http://apijoy.tumblr.com/post/48275883858/when-ive-read-oauth-specs-and-i-did-not-understand" target="_blank"&gt;apijoy&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img alt="image" src="http://i.imgur.com/jtvCiop.gif"/&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://bradoyler.com/post/48783027710</link><guid>http://bradoyler.com/post/48783027710</guid><pubDate>Wed, 24 Apr 2013 13:12:23 -0400</pubDate></item><item><title>Team Foundation Server doing a gated check-in.</title><description>&lt;p&gt;&lt;img src="http://weknowgifs.com/wp-content/uploads/2013/03/puppy-falls-over-gif.gif"/&gt;&lt;/p&gt;

&lt;p&gt;Waited 20mins for TFS to finish gated check-in and 1 unit test fails for absolutely NO REASON!&lt;/p&gt;</description><link>http://bradoyler.com/post/48781937978</link><guid>http://bradoyler.com/post/48781937978</guid><pubDate>Wed, 24 Apr 2013 12:52:18 -0400</pubDate><category>aspnet</category></item><item><title>Hello Brad, I was checking out the jquery plugin that you wrote, but the demo seems to be down, any chance you've got another copy of it lying around?</title><description>&lt;p&gt;Yes, try: &lt;a href="http://www.w3portals.com/SDevents.html" target="_blank"&gt;&lt;a href="http://www.w3portals.com/SDevents.html" target="_blank"&gt;http://www.w3portals.com/SDevents.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://bradoyler.com/post/46589716044</link><guid>http://bradoyler.com/post/46589716044</guid><pubDate>Fri, 29 Mar 2013 09:28:00 -0400</pubDate></item><item><title>It's worth diving into Javascript</title><description>&lt;p&gt;When I get questions from non-programmers on what language to learn first, I&amp;#8217;m fairly convinced that my best suggestion, as of today, is to seriously take up Javascript. &lt;/p&gt;
&lt;p&gt;Even though Javascript has quite a few quirks and shortcomings, I would have to say that it is the most rewarding language to get into since there is so much you *can* do with it. Not to mention, every company needs a javascript developer (or will soon). Also, javascript isn&amp;#8217;t really as bad as people tend to think, it is really just the most misunderstood. So if you&amp;#8217;re going to learn it, you&amp;#8217;re going to have to dive deep.&lt;/p&gt;
&lt;p&gt;It has also become the swiss-army knife of programming languages. Mostly thanks to the amazingly successful projects like &lt;a href="http://jquery.com/" title="jquery" target="_blank"&gt;jQuery&lt;/a&gt;, &lt;a href="https://developers.google.com/v8/" title="V8" target="_blank"&gt;Google&amp;#8217;s V8&lt;/a&gt;, and &lt;a href="http://nodejs.org/" title="Node" target="_blank"&gt;Node.js&lt;/a&gt;. Not to mention the fast-growing community that has sprung up around &lt;a href="https://npmjs.org/" title="NPM" target="_blank"&gt;Node&amp;#8217;s Packaged Modules (NPM)&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;So to get started, check out:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;Javascript from the Ground up&lt;/span&gt;: &lt;a href="http://www.youtube.com/watch?v=hdEn3P3ZbiY" target="_blank"&gt;&lt;a href="http://www.youtube.com/watch?v=hdEn3P3ZbiY" target="_blank"&gt;http://www.youtube.com/watch?v=hdEn3P3ZbiY&lt;/a&gt;&lt;/a&gt; [video for beginners]&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Eloquent Javascript&lt;/span&gt;: &lt;a href="http://eloquentjavascript.net" target="_blank"&gt;http://eloquentjavascript.net&lt;/a&gt; [free e-book]&lt;/li&gt;
&lt;li&gt;&lt;span&gt;How Javascript objects work&lt;/span&gt;: &lt;a href="http://helephant.com/2008/08/17/how-javascript-objects-work/" target="_blank"&gt;http://helephant.com/2008/08/17/how-javascript-objects-work/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Javascript: The Good Parts&lt;/span&gt;: &lt;a href="http://shop.oreilly.com/product/9780596517748.do" target="_blank"&gt;http://shop.oreilly.com/product/9780596517748.do&lt;/a&gt; &lt;a href="http://www.youtube.com/watch?v=hQVTIJBZook" target="_blank"&gt;[also video]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Javascript Module pattern: In-Depth&lt;/span&gt;  &lt;a href="http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html" target="_blank"&gt;http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html&lt;/a&gt;  &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I also suggest using these tools/libraries to get your hands dirty.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Node.js: &lt;a href="http://nodejs.org/" target="_blank"&gt;&lt;a href="http://nodejs.org/" target="_blank"&gt;http://nodejs.org/&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;NPM (comes with Node) &lt;/li&gt;
&lt;li&gt;Express: &lt;a href="http://expressjs.com/" target="_blank"&gt;&lt;a href="http://expressjs.com/" target="_blank"&gt;http://expressjs.com/&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;BackBone.js: &lt;a href="http://backbonejs.org/" target="_blank"&gt;&lt;a href="http://backbonejs.org/" target="_blank"&gt;http://backbonejs.org/&lt;/a&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;Have fun and keep making javascript better!&lt;/span&gt;&lt;/p&gt;</description><link>http://bradoyler.com/post/46088219432</link><guid>http://bradoyler.com/post/46088219432</guid><pubDate>Sat, 23 Mar 2013 14:10:00 -0400</pubDate><category>javascript</category></item><item><title>Hackathon tools for 2013</title><description>&lt;p&gt;&lt;span&gt;Here&amp;#8217;s what I&amp;#8217;m currently using for my hacks / prototypes. Keep in mind a lot of these tools are chosen because they get you up and running fast and\or have some widespread use. Team-friendly tools are key.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Machine&lt;/strong&gt;&lt;br/&gt;&lt;span&gt;MacBook Pro - yep, finally ditching my PC, but still have a VM for asp.net projects. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IDE / Text Editor&lt;/strong&gt;&lt;br/&gt;&lt;span&gt;&lt;a href="http://www.sublimetext.com/" target="_blank"&gt;Sublime Text&lt;/a&gt; - an amazing text editor for working with almost any type of open source project. Command palette makes it fun to learn and gets better the more I use it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Project Mgmt&lt;/strong&gt;&lt;br/&gt;&lt;a href="https://trello.com/" target="_blank"&gt;Trello&lt;/a&gt; - try it out. May still need Basecamp for some projects, but this is a great tool to try out. &lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;Hosting &lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;a href="http://nodejitsu.com" target="_blank"&gt;http://nodejitsu.com&lt;/a&gt; &lt;br/&gt;&lt;a href="http://heroku.com" target="_blank"&gt;http://heroku.com&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;Source Control &amp;amp; Issue Tracking  &lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&lt;br/&gt;&lt;a href="https://github.com/" target="_blank"&gt;Git + GitHub &lt;/a&gt;- a no brainer at this point. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Open source Tools&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;a href="http://twitter.github.com/bootstrap/" target="_blank"&gt;Bootstrap&lt;/a&gt; - mainly because i know it so well and gets the job done.&lt;br/&gt;&lt;a href="http://foundation.zurb.com/" target="_blank"&gt;Foundation3&lt;/a&gt; - a pretty awesome responsive front-end lib. Nice to have a decent alternative to bootstrap.&lt;br/&gt;&lt;a href="http://nodejs.org/" target="_blank"&gt;Node.js&lt;/a&gt; - changing the way the web is built. &lt;a href="https://npmjs.org/" target="_blank"&gt;NPM&lt;/a&gt; rocks.&lt;br/&gt;&lt;a href="http://meteor.com/" target="_blank"&gt;Meteor&lt;/a&gt; - this is an amazing jumpstart to building awesome apps. Serves as full-stack.  &lt;br/&gt;&lt;a href="http://www.mongodb.org/" target="_blank"&gt;MongoDb&lt;/a&gt; - a must have document db, try &lt;a href="https://www.mongohq.com" target="_blank"&gt;MongoHQ&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Other tools/services &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://hackpad.com/" target="_blank"&gt;Hackpad&lt;/a&gt; - great for creating docs.&lt;br/&gt;&lt;a href="https://cloudmine.me/" target="_blank"&gt;Cloudmine&lt;/a&gt; - back-end as a service&lt;br/&gt;&lt;a href="http://launchrock.com/" target="_blank"&gt;LaunchRock&lt;/a&gt; - creating a landing page in minutes&lt;br/&gt;&lt;a href="http://keynotopia.com/" target="_blank"&gt;Keynotopia&lt;/a&gt; - great for a non-coder to build a usaable UI. I usually use HTML though.&lt;br/&gt;&lt;span&gt;Photoshop&lt;/span&gt; - duh.&lt;br/&gt;&lt;a href="http://www.appgyver.com/prototyper" title="AppGyver" target="_blank"&gt;AppGyver&lt;/a&gt; - build a mobile prototype from UI images in minutes.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;If you think I&amp;#8217;m missing anything, let me know. I suppose I could list some wireframing tools, but I rarely use them.&lt;/span&gt;&lt;/p&gt;</description><link>http://bradoyler.com/post/42669224724</link><guid>http://bradoyler.com/post/42669224724</guid><pubDate>Sat, 09 Feb 2013 10:53:00 -0500</pubDate><category>tools</category><category>hackathons</category><category>meteor</category><category>mac</category></item><item><title>Are top web properties making the transition to mobile?</title><description>&lt;a href="http://arielseidman.com/post/36837684818/are-top-web-properties-making-the-transition-to-mobile"&gt;Are top web properties making the transition to mobile?&lt;/a&gt;: &lt;p&gt;&lt;a class="tumblr_blog" href="http://arielseidman.com/post/36837684818/are-top-web-properties-making-the-transition-to-mobile" target="_blank"&gt;arielseidman&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Comscore &lt;a href="http://www.comscore.com/Insights/Press_Releases/2012/11/comScore_Announces_Beta_Release_of_Media_Metrix_Multi-Platform" target="_blank"&gt;released&lt;/a&gt; unduplicated audience size across mobile and desktop (US only for now) for the top 30 web properties/services.&lt;/p&gt;
&lt;p&gt;Using the Comscore data and the fact that &lt;a href="http://gigaom.com/mobile/carrier-data-confirms-it-half-of-us-now-owns-a-smartphone/" target="_blank"&gt;more than half&lt;/a&gt; of US wireless subscribers are using a smartphone I color coded the data (&lt;a href="https://docs.google.com/spreadsheet/ccc?key=0At-EroXQnXCSdEVTcVBMWjVmQWhKNkkwNVFsTTdwN1E&amp;hl=en#gid=0" target="_blank"&gt;link to Google Doc)&lt;/a&gt; so you can…&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://bradoyler.com/post/40816977765</link><guid>http://bradoyler.com/post/40816977765</guid><pubDate>Thu, 17 Jan 2013 22:49:00 -0500</pubDate></item><item><title>My choice of champagne for  tonight. 
Happy New Year!! #2013</title><description>&lt;img src="http://25.media.tumblr.com/c32d03c4a4ae0d865b8eb6b0b8167683/tumblr_mfwpzjl8A61qzlioro1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;My choice of champagne for  tonight. &lt;br/&gt;
Happy New Year!! #2013&lt;/p&gt;</description><link>http://bradoyler.com/post/39317929037</link><guid>http://bradoyler.com/post/39317929037</guid><pubDate>Mon, 31 Dec 2012 12:59:43 -0500</pubDate><category>2013</category></item><item><title>Querying Abstract Multi-Map Indexes in RavenDB (C#)</title><description>&lt;p&gt;So&amp;#8230; let&amp;#8217;s say you have 2 similar classes in your system, like User &amp;amp; Person.&lt;/p&gt;
&lt;script src="https://gist.github.com/4261491.js" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;Now lets say we&amp;#8217;d like to return those documents into a single list. In order to do this you simply need to define the &amp;#8220;AbstractMultiMapIndex&amp;#8221;, like so:&lt;/p&gt;
&lt;script src="https://gist.github.com/4261380.js?file=PeopleIndex.cs" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;I call it the People index, (because Users are people too!)&lt;/p&gt;
&lt;p&gt;After we&amp;#8217;ve done that we need to create that index, like so (on App_Start):&lt;/p&gt;
&lt;pre&gt; IndexCreation.CreateIndexes(typeof(PeopleIndex).Assembly, ds);&lt;/pre&gt;
&lt;p&gt;Now&amp;#8230; all that&amp;#8217;s left is creating an Action like so:&lt;/p&gt;
&lt;script src="https://gist.github.com/4261416.js?file=PeopleController.cs" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;All this does, is execute the query on the index and return the results to the View (with a dynamic ViewBag)&lt;/p&gt;
&lt;h3&gt;Enjoy!&lt;/h3&gt;
&lt;p&gt;See last post on &lt;a href="http://bradoyler.com/post/37411243648/ravendb1" title="Initializing RavenDB with StructureMap" target="_blank"&gt;Initializing RavenDB with StructureMap&lt;/a&gt;&lt;/p&gt;</description><link>http://bradoyler.com/post/37730309234</link><guid>http://bradoyler.com/post/37730309234</guid><pubDate>Tue, 11 Dec 2012 15:11:00 -0500</pubDate><category>ravendb</category><category>asp.net</category><category>MVC</category></item><item><title>Initializing RavenDB in MVC4 with StructureMap</title><description>&lt;p&gt;I hear more and more .Net devs are starting to get into the world of NoSQL, partly in thanks to the insanely awesome product, &lt;a href="http://ravendb.net" target="_blank"&gt;RavenDb&lt;/a&gt; (from the builders of RhinoMocks and NHibernate Profiler). I feel pretty strongly this is one of the biggest contributions to .Net web developers since MVC. &lt;/p&gt;
&lt;p&gt;So, I want to share a very simple/clean way to initialize the RavenDB DocumentStore (on app start) and ALSO the DocumentSession (on each Http Request) using a popular IoC (Inversion of Control) container called &lt;a href="http://structuremap.net/" target="_blank"&gt;StructureMap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s how it works:&lt;/p&gt;
&lt;p&gt;1. Create a new MVC4 project (I&amp;#8217;m using the empty template) and use NuGet to install the RavenDB client and StructureMap from the package manager console.&lt;/p&gt;
&lt;pre&gt;PM&amp;gt; Install-Package RavenDB.Client -pre &lt;br/&gt;PM&amp;gt; Install-Package StructureMap.MVC4
&lt;/pre&gt;
&lt;p&gt;2. Even though RavenDb is very simple to install locally, try out &lt;a href="http://RavenHQ.com" target="_blank"&gt;RavenHQ&lt;/a&gt; and get yourself a free db. All you will need is the connection string (under &amp;#8216;Manage&amp;#8217;) after you create a db.&lt;/p&gt;
&lt;p&gt;3. Add the RavenDb connection string to your web.config, like so:&lt;/p&gt;
&lt;pre&gt;&amp;lt;connectionStrings&amp;gt;&lt;br/&gt; &amp;lt;add name="Raven" connectionString="Url=https://2.ravenhq.com/databases/your-db; ApiKey=your-api-key" /&amp;gt;&lt;br/&gt;&amp;lt;/connectionStrings&amp;gt;&lt;/pre&gt;
&lt;p&gt;4. Find the &lt;strong&gt;IoC.cs &lt;/strong&gt;file and add these 2 &amp;#8220;Initialize expressions&amp;#8221;.
&lt;script src="https://gist.github.com/4233393.js?file=RavenDB_IoC.cs" type="text/javascript"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;5. Now, just add a Controller which accepts IDocumentSession in the constructor and you&amp;#8217;re all set. Like so:
&lt;script src="https://gist.github.com/4233590.js?file=HomeController.cs" type="text/javascript"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;I personally don&amp;#8217;t mind having the IDocumentSession in each of my controllers if the project isn&amp;#8217;t too large. But there are some other ways to handle this, like a base controller or a ActionFilter, but I may have a forthcoming post on that as well.&lt;/p&gt;
&lt;p&gt;If you have any feedback why you like\dislike this approach, I would love to hear your thoughts.&lt;/p&gt;
&lt;p&gt;Remember, keep it &lt;em&gt;simple&lt;/em&gt;&amp;#8230;but not &lt;em&gt;simpler&lt;/em&gt;.&lt;br/&gt;Cheers!&lt;/p&gt;</description><link>http://bradoyler.com/post/37411243648</link><guid>http://bradoyler.com/post/37411243648</guid><pubDate>Fri, 07 Dec 2012 12:31:00 -0500</pubDate><category>asp.net</category><category>mvc</category><category>ravendb</category></item><item><title>Software design with cats</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_mdr170gZXk1rfb6p5o1_250.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_mdr170gZXk1rfb6p5o2_250.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_mdr170gZXk1rfb6p5o3_250.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_mdr170gZXk1rfb6p5o4_250.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_mdr170gZXk1rfb6p5o5_250.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_mdr170gZXk1rfb6p5o6_250.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_mdr170gZXk1rfb6p5o7_250.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_mdr170gZXk1rfb6p5o8_250.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;&lt;strong&gt;Software design with cats&lt;/strong&gt;&lt;/p&gt;</description><link>http://bradoyler.com/post/36706318241</link><guid>http://bradoyler.com/post/36706318241</guid><pubDate>Tue, 27 Nov 2012 20:44:43 -0500</pubDate></item><item><title>How to Create a Great Interactive Tutorial for Your Web Application </title><description>&lt;a href="http://t.co/jixI8yMk"&gt;How to Create a Great Interactive Tutorial for Your Web Application &lt;/a&gt;</description><link>http://bradoyler.com/post/36297109938</link><guid>http://bradoyler.com/post/36297109938</guid><pubDate>Thu, 22 Nov 2012 13:53:22 -0500</pubDate></item><item><title>User-Authenticated Event Tracking with jQuery + Google Analytics</title><description>&lt;p&gt;You probably already know about Google Analytics, and if you use it enough you may even know about &lt;a href="https://developers.google.com/analytics/devguides/collection/gajs/eventTrackerGuide" title="event tracking" target="_blank"&gt;Event Tracking with Google Analytics&lt;/a&gt; , but haven&amp;#8217;t quite figured out an easy and useful way to put it to use, so here&amp;#8217;s an idea.&lt;/p&gt;
&lt;p&gt;I typically use an MVC framework like Ruby on Rails or Asp.Net MVC to build web apps. However, any framework that allows you to authenticate a user (maybe PHP, Node.js, or Python) and return the username to your html view\page will work for this solution.&lt;/p&gt;
&lt;p&gt;Once you have Google Analytics &amp;amp; jQuery working on your page, all you have to do is put this little jQuery nugget on your page:&lt;/p&gt;
&lt;script src="https://gist.github.com/4007387.js" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;&lt;em&gt;*example uses &lt;a href="http://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-razor-syntax" title="razor" target="_blank"&gt;ASP.Net Razor&lt;/a&gt; syntax to include the authenticated user&amp;#8217;s username*&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now, you can easily create a custom report in GA, that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image" src="http://media.tumblr.com/tumblr_mcwzhuGMQF1qzitrw.png"/&gt;&lt;/p&gt;
&lt;p&gt;Obviously, this can be pretty useful, since you&amp;#8217;re now able to track the users that are logged onto your site and even try to understand user&amp;#8217;s behavior flow.&lt;/p&gt;
&lt;p&gt;Btw, I should disclose that storing &amp;#8220;personally identifiable information&amp;#8221; is against the GA terms of use, so storing a username could result in getting your GA account banned&lt;/p&gt;</description><link>http://bradoyler.com/post/34898634850</link><guid>http://bradoyler.com/post/34898634850</guid><pubDate>Sat, 03 Nov 2012 09:54:00 -0400</pubDate><category>jquery</category><category>analytics</category><category>asp.net</category><category>php</category><category>javascript</category><category>rails</category></item><item><title>WePay API now has a C# SDK and MVC examples</title><description>&lt;p&gt;  As you may or may not know, I like to move money. I&amp;#8217;ve been dealing with the &lt;a href="http://www.purecodedesign.com/taking-the-pal-out-of-paypal/" title="paypal" target="_blank"&gt;likes of PayPal&lt;/a&gt; for almost a decade and more recently &lt;a href="http://www.wired.com/business/2012/08/crowdfunding-gets-sticky-for-amazon-startups-payments-halted/" title="FPS" target="_blank"&gt;Amazon &amp;#8220;flexible&amp;#8221; payments&lt;/a&gt; and have been conditioned to just live with their &amp;#8220;kind&amp;#8221; of customer service. I&amp;#8217;ve also tried some smaller payment processors and most didn&amp;#8217;t have a flexible approach to payments that I needed.&lt;/p&gt;
&lt;p&gt;  A little while ago I was forced to find an alternative. A colleague suggested &lt;a href="http://wepay.com" title="wepay" target="_blank"&gt;WEPAY&lt;/a&gt;, which I glanced over about a year ago, and I&amp;#8217;m not sure why. Long story, short. It is a pretty awesome API\service for building payment platforms\marketplaces.&lt;/p&gt;
&lt;p&gt;  Unfortunately, WePay did not have a SDK for asp.net, so I whipped one up last week. You can see source for SDK and examples in ASP.Net MVC on GitHub here: &lt;a href="http://github.com/bradoyler/WePayASPNet" target="_blank"&gt;http://github.com/bradoyler/WePayASPNet&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s a small snippet for creating a checkout.&lt;/p&gt;
&lt;p&gt;
&lt;script src="https://gist.github.com/3343950.js" type="text/javascript"&gt;&lt;![CDATA[// &lt;![CDATA[

// ]]]]&gt;&lt;![CDATA[&gt;]]&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s obviously more to it, so read the API docs here: &lt;a href="https://www.wepay.com/developer/reference" target="_blank"&gt;https://www.wepay.com/developer/reference&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Also, I have the examples hosted at &lt;a href="http://wepay.apphb.com" target="_blank"&gt;http://wepay.apphb.com&lt;/a&gt; (for the time-being)&lt;/p&gt;
&lt;p&gt;The list of supported WePay SDKa are available here: &lt;a href="https://www.wepay.com/developer/plugins" target="_blank"&gt;https://www.wepay.com/developer/plugins&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cheers.&lt;/p&gt;</description><link>http://bradoyler.com/post/29357874298</link><guid>http://bradoyler.com/post/29357874298</guid><pubDate>Mon, 13 Aug 2012 17:06:35 -0400</pubDate><category>asp.net</category><category>wepay</category><category>web</category><category>APIs</category></item><item><title>User Account Management For Mobile Apps</title><description>&lt;p&gt;&lt;a class="tumblr_blog" href="http://blog.cloudmine.me/post/24124991903/user-account-management-for-mobile-apps" target="_blank"&gt;cloudminellc&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We’re pleased to announce a dedicated set of tools for managing user accounts on all apps developed using our platform.  All examples in this tutorial use the CloudMine iOS SDK, however, all of the operations are also available through our REST API.&lt;/p&gt;
&lt;h2&gt;Creating Accounts&lt;/h2&gt;
&lt;p&gt;The CMUser class contains all the methods you need to manage user accounts. To create a new account, initialize a new CMUser object and call the &lt;a href="https://cloudmine.me/ios-docs/interface_c_m_user.html#a75cc2286b78639d55992ee35a5a98ad9" title="createAccountWithCallback" target="_blank"&gt;createAccountWithCallback&lt;/a&gt; method.&lt;/p&gt;
&lt;script src="https://gist.github.com/2423906.js?file=CreateAccount.m" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;(see also: &lt;a href="https://cloudmine.me/developer_zone#ref/account_create" target="_blank"&gt;&lt;a href="https://cloudmine.me/developer_zone#ref/account_create" target="_blank"&gt;https://cloudmine.me/developer_zone#ref/account_create&lt;/a&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Login&lt;/h2&gt;
&lt;p&gt;Once the account is created, the user can be authenticated by calling the &lt;a href="https://cloudmine.me/ios-docs/interface_c_m_user.html#a3051b10f7ec22fa1a7064ad8d97b1c73" title="loginWithCallback" target="_blank"&gt;loginWithCallback&lt;/a&gt; method.&lt;/p&gt;
&lt;script src="https://gist.github.com/2423906.js?file=Login.m" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;(see also: &lt;a href="https://cloudmine.me/developer_zone#ref/account_login" target="_blank"&gt;&lt;a href="https://cloudmine.me/developer_zone#ref/account_login" target="_blank"&gt;https://cloudmine.me/developer_zone#ref/account_login&lt;/a&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;There is a shortcut for creating an account and logging in with one operation called  &lt;a href="https://cloudmine.me/ios-docs/interface_c_m_user.html#adc2b15ea9176fb8756ab1492974c79d6" title="createAccountAndLoginWithCallback" target="_blank"&gt;createAccountAndLoginWithCallback&lt;/a&gt;:&lt;/p&gt;
&lt;script src="https://gist.github.com/2423906.js?file=CreateAccountAndLogin.m" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;Once the user is logged in, you will need to configure the &lt;a href="https://cloudmine.me/ios-docs/interface_c_m_store.html" title="CMStore" target="_blank"&gt;CMStore&lt;/a&gt; for making authenticated requests.&lt;/p&gt;
&lt;script src="https://gist.github.com/2423906.js?file=ConfigureAuth.m" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;From now on, all requests for user-level data will be authenticated with the user’s credentials.&lt;/p&gt;
&lt;h2&gt;Logout&lt;/h2&gt;
&lt;p&gt;When you want to terminate a user’s session, call the &lt;a href="https://cloudmine.me/ios-docs/interface_c_m_user.html#aadef7929e7f621df7d08c97b11195e97" title="logoutWithCallback" target="_blank"&gt;logoutWithCallback&lt;/a&gt; method.&lt;/p&gt;
&lt;script src="https://gist.github.com/2423906.js?file=Logout.m" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;(see also: &lt;a href="https://cloudmine.me/developer_zone#ref/account_logout" target="_blank"&gt;&lt;a href="https://cloudmine.me/developer_zone#ref/account_logout" target="_blank"&gt;https://cloudmine.me/developer_zone#ref/account_logout&lt;/a&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Password Change&lt;/h2&gt;
&lt;p&gt;Users now have the ability to change their password. For security purposes, the user must provide their old password along with their new password.&lt;/p&gt;
&lt;script src="https://gist.github.com/2423906.js?file=PasswordChange.m" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;(see also: &lt;a href="https://cloudmine.me/developer_zone#ref/password_change" target="_blank"&gt;&lt;a href="https://cloudmine.me/developer_zone#ref/password_change" target="_blank"&gt;https://cloudmine.me/developer_zone#ref/password_change&lt;/a&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;Forgotten Password Reset&lt;/h2&gt;
&lt;p&gt;If a user forgets their password, they can request that an email be sent with instructions on how to reset it.&lt;/p&gt;
&lt;script src="https://gist.github.com/2423906.js?file=PasswordReset.m" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;(see also: &lt;a href="https://cloudmine.me/developer_zone#ref/password_reset" target="_blank"&gt;&lt;a href="https://cloudmine.me/developer_zone#ref/password_reset" target="_blank"&gt;https://cloudmine.me/developer_zone#ref/password_reset&lt;/a&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;How to Store and Retrieve User Data&lt;/h2&gt;
&lt;p&gt;There are many different methods for retrieving data from the &lt;a href="https://cloudmine.me/ios-docs/interface_c_m_store.html" title="CMStore" target="_blank"&gt;CMStore&lt;/a&gt;. Each method has two versions: one to fetch app-level data, and one for user-level data. To store or retrieve user objects, call the “user” version of any method in &lt;a href="https://cloudmine.me/ios-docs/interface_c_m_store.html" title="CMStore" target="_blank"&gt;CMStore&lt;/a&gt;: as long as the &lt;a href="https://cloudmine.me/ios-docs/interface_c_m_store.html" title="CMStore" target="_blank"&gt;CMStore&lt;/a&gt; has been initialized with a logged-in user, requests will transparently be authenticated with that user.&lt;/p&gt;
&lt;p&gt;For example, to retrieve all user objects, call the &lt;a href="https://cloudmine.me/ios-docs/interface_c_m_store.html#a0129298f1e9de520c117d4de9e6fe2a3" target="_blank"&gt;allUsersObjectsWithOptions&lt;/a&gt; method.&lt;/p&gt;
&lt;script src="https://gist.github.com/2423906.js?file=GetData.m" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;For more information, visit our &lt;a href="https://cloudmine.me/ios-docs" target="_blank"&gt;iOS Library Documentation&lt;/a&gt;.&lt;/p&gt;
&lt;script language="JavaScript" type="text/javascript"&gt;&lt;![CDATA[// &lt;![CDATA[
// &lt;![CDATA[
// &lt;![CDATA[
// &lt;![CDATA[
var OB_langJS = 'http://widgets.outbrain.com/lang_en.js'; var OBITm = '1338504503798';var OB_raterMode = 'none';var OB_recMode = 'dualBox'; 

var OutbrainPermaLink='http://blog.cloudmine.me/post/24124991903/user-account-management-for-mobile-apps'; 

 if ( typeof(OB_Script)!='undefined' )OutbrainStart(); else { var OB_Script = true; var str = unescape("%3Cscript src=\'http://widgets.outbrain.com/OutbrainRater.js\' type=\'text/javascript\'%3E%3C/script%3E"); document.write(str); }
 
// ]]]]]]]]]]&gt;&lt;![CDATA[&gt;&lt;![CDATA[&gt;&lt;![CDATA[&gt;&lt;![CDATA[&gt;
// ]]]]]]]]&gt;&lt;![CDATA[&gt;&lt;![CDATA[&gt;&lt;![CDATA[&gt;
// ]]]]]]&gt;&lt;![CDATA[&gt;&lt;![CDATA[&gt;
// ]]]]&gt;&lt;![CDATA[&gt;]]&gt;&lt;/script&gt;&lt;/blockquote&gt;</description><link>http://bradoyler.com/post/24193399115</link><guid>http://bradoyler.com/post/24193399115</guid><pubDate>Fri, 01 Jun 2012 09:32:59 -0400</pubDate></item><item><title>PitchSwap: Getting Entrepreneurs to listen to themselves.</title><description>&lt;p&gt;After some thinking (over shots of tequila) on how to create a simple, fun, worthwhile event for entrepreneurs, I stumbled upon the idea of getting people together that have something they&amp;#8217;d like to pitch, but then forcing them to pitch someone else&amp;#8217;s idea, in hopes the favor would be reciprocated.&lt;/p&gt;
&lt;p&gt;I initially thought this would be cool, because this concept could have a few benefits. (1) It &lt;strong&gt;could&lt;/strong&gt; force people to talk to strangers about their idea for the first time, this is a big step to many aspiring entrepreneurs. (2) To the audience, it &lt;strong&gt;could&lt;/strong&gt; seem a lot less like a commercial since your not hearing it from the founder. (3) As the founder, it &lt;strong&gt;could&lt;/strong&gt; be great feedback to hear your pitch from another perspective, not to mention hear a bunch of other pitches in lightening talk fashion. (4) As the Pitcher, there&amp;#8217;s not a whole lot of pressure or reason to be embarrassed, since it&amp;#8217;s not your idea anyway.  (5) With the right setting, it &lt;strong&gt;could&lt;/strong&gt; be a lot of fun.&lt;/p&gt;
&lt;p&gt;I say &lt;strong&gt;*could*&lt;/strong&gt; because I have no friggin idea, but there&amp;#8217;s only one way to find out. And that&amp;#8217;s why &lt;a href="http://PitchSwap.co" title="PitchSwap.co" target="_blank"&gt;PitchSwap.co&lt;/a&gt; was born.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img height="171" src="http://media.tumblr.com/tumblr_m4k3iomXTq1qzitrw.png" width="194"/&gt;&lt;/p&gt;
&lt;p&gt;So, here&amp;#8217;s an attempt to lay out some basic ground rules for the &lt;a href="http://pitchswap.ticketleap.com/philly/" title="tickets" target="_blank"&gt;inaugural event on June 14.&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Bring an idea for &lt;strong&gt;&lt;em&gt;someone else&lt;/em&gt;&lt;/strong&gt; to pitch or be willing to pitch someone else&amp;#8217;s idea. You can always think of something on the spot&amp;#8230;if not, ideas are dime a dozen with this crowd.&lt;/li&gt;
&lt;li&gt;You will have &lt;strong&gt;~1 hour to network&lt;/strong&gt; and find someone to pitch your idea of vice versa. I&amp;#8217;m sure many will do this on the fly, but having note cards could be a great aid to transposing your pitch to someone else. Also, you&amp;#8217;re not required to speak, if you&amp;#8217;re not up for it, no problem. But remember, you can&amp;#8217;t enjoy the glory of victory without getting in the game.&lt;/li&gt;
&lt;li&gt;Pitches will be lightening talk fashion: &lt;strong&gt;~2 minutes.&lt;/strong&gt; Due the the presence of adult beverages, I&amp;#8217;m actually hoping a lot of the pitches will attempt to be humorous. But trust me, that&amp;#8217;s even harder that pitching a serious pitch. However, I completely encourage the silly pitch.&lt;/li&gt;
&lt;li&gt;After the pitches commence, judges will deliberate and give awards for various categories, decided on the fly. (ie. Best Delivery, Best Idea, Best Comic, etc.)&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;I hope that covers most of it. But expect to be surprised. I also plan to take a lot of pictures to document the event. So put on your Sunday best (or not) and get your &lt;a href="http://pitchswap.ticketleap.com/philly/" title="tickets" target="_blank"&gt;Tickets here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cheers!&lt;br/&gt;- Brad&lt;/p&gt;</description><link>http://bradoyler.com/post/23712931475</link><guid>http://bradoyler.com/post/23712931475</guid><pubDate>Thu, 24 May 2012 22:54:00 -0400</pubDate><category>event</category><category>entrepreneur</category></item><item><title>LINQ to SQL DataContext Wrapper (Adapter)</title><description>&lt;p&gt;If plan to Mock LINQ to SQL for Unit testing (using a repository pattern). You&amp;#8217;ll most likely need one of these: &lt;/p&gt;
&lt;script src="https://gist.github.com/4001262.js?file=DataContextWrapper.cs" type="text/javascript"&gt;&lt;/script&gt;</description><link>http://bradoyler.com/post/36361975242</link><guid>http://bradoyler.com/post/36361975242</guid><pubDate>Mon, 23 Apr 2012 12:35:00 -0400</pubDate><category>.Net</category><category>C</category><category>LINQ</category><category>unit testing</category></item><item><title>Using CloudMine to log PageViews with ASP.Net MVC</title><description>&lt;p&gt;I&amp;#8217;ve used a few services in the past to do site &amp;#8220;event tracking&amp;#8221; (ie Google Analytics)  but most didn&amp;#8217;t give me all the data and control I need to easily track what was needed&amp;#8230; (mostly user identity stuff). Another big difference is that this is all done server-side, which has it&amp;#8217;s pros\cons as well. &lt;/p&gt;
&lt;p&gt;Anyway, here&amp;#8217;s how I did it using &lt;a href="http://cloudmine.me" title="CloudMine" target="_blank"&gt;CloudMine&lt;/a&gt;&amp;#8217;s backend service in ~20 lines of code.&lt;/p&gt;
&lt;p&gt;Step1. Add this &lt;a href="http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs" title="action filter" target="_blank"&gt;Action Filter&lt;/a&gt; to your MVC application (ie Global.asax.cs)&lt;/p&gt;
&lt;pre&gt;&lt;code class="javascript"&gt;

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
    public class UserTrackingAttribute : ActionFilterAttribute
    {
        public static readonly string appId = "your CloudMine app Id";
        public static readonly string appSecret = "your CloudMine app Secret";

        class PageRequest
        {
            public int PageId { get; set; }
            public Double Created { get; set; }
            public string Url { get; set; }
            public string UserName { get; set; }
            public string UserIP { get; set; }
            public string Controller { get; set; }
            public string Action { get; set; }
        }

        public override void OnResultExecuting(ResultExecutingContext context)
        {
            PageRequest preq = new PageRequest
            {
              Url = request.RawUrl, 
              UserIP = request.UserHostAddress, 
              UserName = context.HttpContext.User.Identity.Name, 
              Created = ExtensionMethods.JsonDate(DateTime.Now),
              Action = (string)context.RequestContext.RouteData.Values["action"], 
              Controller = (string)context.RouteData.Values["controller"],
              PageId = Convert.ToInt32(context.RouteData.Values["Id"]),
            };
          
          using (var client = new WebClient())
          {
           client.Headers.Add("X-CloudMine-ApiKey", appSecret);
           client.Headers.Add("Content-Type", "application/json");
           var serializer = new JavaScriptSerializer();
           var data = serializer.Serialize(preq);
           var payload = "{\"PV_" + DateTime.Now.Ticks + "\":" + data + "}";
           var bytes = Encoding.Default.GetBytes(payload);
           client.UploadDataAsync(new Uri("https://api.cloudmine.me/v1/app/" + appId + "/text"), "PUT", bytes);
          }
        }
         
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then&amp;#8230; just add the filter attribute [UserTracking] to any controller action and you&amp;#8217;re ready to start logging&amp;#8230;in real-time. &lt;/p&gt;
&lt;p&gt;The full example project is on &lt;a href="https://github.com/bradoyler/CloudMine-UserTracking-MVC/blob/master/Global.asax.cs" title="github" target="_blank"&gt;my GitHub&lt;/a&gt;&amp;#8230;so go fork it.&lt;/p&gt;</description><link>http://bradoyler.com/post/17432138623</link><guid>http://bradoyler.com/post/17432138623</guid><pubDate>Sat, 11 Feb 2012 12:09:00 -0500</pubDate><category>asp.net</category><category>C</category><category>MVC</category><category>CloudMine</category></item><item><title>Creating a Logo in 10 seconds with LogoType</title><description>&lt;p&gt;I wanted to play around with the Google WebFonts API for some reason and came up with a somewhat cool little web-based utility called:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3portals.com/logotype" title="logo type" target="_blank"&gt;&lt;img alt="logotype" src="http://w3portals.com/img/logotype.png"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Demo here: &lt;a href="http://www.w3portals.com/logotype" title="logo type" target="_blank"&gt;&lt;a href="http://www.w3portals.com/logotype" target="_blank"&gt;http://www.w3portals.com/logotype&lt;/a&gt;&lt;br/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Source: &lt;a href="https://github.com/bradoyler/LogoType" target="_blank"&gt;&lt;a href="https://github.com/bradoyler/LogoType" target="_blank"&gt;https://github.com/bradoyler/LogoType&lt;/a&gt;&lt;/a&gt;&lt;a href="http://www.w3portals.com/logotype" title="logo type" target="_blank"&gt; &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a really quick way to create a &amp;#8220;draft&amp;#8221; logo. &lt;/p&gt;
&lt;p&gt;So after you select your colors and Font, you can simply take a screenshot of the page and copy into your favorite image editor. If I guess enough requests, I may even add some other features and additional fonts.&lt;/p&gt;
&lt;p&gt;P.S. I seem to get the best resolution in Firefox.&lt;br/&gt;Happy branding!&lt;/p&gt;</description><link>http://bradoyler.com/post/15514977025</link><guid>http://bradoyler.com/post/15514977025</guid><pubDate>Sun, 08 Jan 2012 12:14:00 -0500</pubDate><category>design</category><category>logo</category><category>webfonts</category></item><item><title> AddThis just published their 2011 stats on “sharing” across the...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lw5s0yBfR31qz8q0ho1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt; AddThis just &lt;a href="http://adage.com/article/the-media-guy/facebook-makes-52-sharing-web/231528/" target="_blank"&gt;published their 2011 stats&lt;/a&gt; on “sharing” across the web.&lt;/p&gt;</description><link>http://bradoyler.com/post/14299061829</link><guid>http://bradoyler.com/post/14299061829</guid><pubDate>Fri, 16 Dec 2011 00:47:54 -0500</pubDate><category>social media</category></item></channel></rss>
