<?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>I’m a fan of software, startups, beer\wine and baseball.  More info: About.Me/Brad Oyler</description><title>$(Brad Oyler).TryToBuild(stuff)</title><generator>Tumblr (3.0; @bradoyler)</generator><link>http://bradoyler.com/</link><item><title>Using CloudMine to log PageViews with ASP.Net MVC</title><description>&lt;p&gt;I’ve used a few services in the past to do site “event tracking” (ie Google Analytics)  but most didn’t give me all the data and control I need to easily track what was needed… (mostly user identity stuff). Another big difference is that this is all done server-side, which has it’s pros\cons as well. &lt;/p&gt;
&lt;p&gt;Anyway, here’s how I did it using &lt;a href="http://cloudmine.me" title="CloudMine" target="_blank"&gt;CloudMine&lt;/a&gt;’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… just add the filter attribute [UserTracking] to any controller action and you’re ready to start logging…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;…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’s a really quick way to create a “draft” 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><item><title>Making Sharepoint your friend...with Powershell</title><description>&lt;p&gt;Starting some research for an upcoming project that integrates with Sharepoint (sigh). Although I wasn’t to excited to start developing against a bloated beast of an “Enterprise” application like SP 2010…but, I pushed through the tears.&lt;/p&gt;
&lt;p&gt;I first started playing around with webparts and found it quite clumsy to build and deploy stuff that was purely for experimenting with the SharePoint API.&lt;/p&gt;
&lt;p&gt;That’s when I came across the site: &lt;a href="http://get-spscripts.com/" target="_blank"&gt;http://get-spscripts.com/&lt;/a&gt; which demonstrates how to do all kinds of crazy scripting for Sharepoint using PowerShell. Finally, a legit reason to work on my PowerShell chops.&lt;/p&gt;
&lt;p&gt;Here’s a couple functions I came up with:(for these to work, you have to launch the Sharepoint Mgmt Shell as Administrator… and also change some refs to “http://yourSPserver”)&lt;/p&gt;
&lt;pre&gt;&lt;code class="javascript"&gt;# below are some SP scripts that do some basic tricks

function GetDocInfo
{
     #//this checks existence of a file in a specified SPList

  Param ( [parameter(Mandatory=$true)][string]$LibName, 
          [parameter(Mandatory=$true)][string]$DocName 
         )

   $web = Get-SPWeb http://yourSPserver
   $docLibrary = $web.Lists[$LibName]
   $folder = $docLibrary.RootFolder  
   $spFilePath = ("/" + $DocName)
   $spFullPath = $folder.Url + $spFilePath
   write-host $spFullPath "exists: " $web.GetFile($spFullPath).Exists   
}

function GetListFields
{
   #// This returns all the Fields of a given SPList
   #// Also shows how to loop through a collection with 'ForEach'
    Param (  
            [parameter(Mandatory=$true)][string]$ListName 
          )
    
    $ctx = Get-SPServiceContext http://yourSPserver
    $Scope = New-Object Microsoft.SharePoint.SPServiceContextScope $ctx
    $web = Get-SPWeb http://yourSPserver
    $splist = $web.Lists[$ListName]
    $Column = $splist.Fields
	
    foreach($Field in $Column)
	{
	   Write-Host "Field:" $Field
	}
}

function QueryList
{
  #//This queries the "Title" field of a given value in a given SPList
     Param (  
            [parameter(Mandatory=$true)][string]$Title, 
            [parameter(Mandatory=$true)][string]$ListName 
           )

    $web = Get-SPWeb http://yourSPserver
    $splist = $web.Lists[$ListName]
    $spQuery = New-Object Microsoft.SharePoint.SPQuery
    $camlQuery = '$Title'
    $spQuery.Query = $camlQuery
    $spQuery.RowLimit = 10
    $spListItems = $spList.GetItems($spQuery)

    foreach ($item in $spListItems)
    {
      write-host "Name:" $item.Name
      write-host "Title:" $item["Title"]
    } 
}

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hope this was helpful! Cheers.&lt;/p&gt;</description><link>http://bradoyler.com/post/13881012150</link><guid>http://bradoyler.com/post/13881012150</guid><pubDate>Wed, 07 Dec 2011 14:04:00 -0500</pubDate><category>sharepoint</category><category>powershell</category></item><item><title>My addendum to PSL fishbowl</title><description>&lt;p&gt;After attending PSL fishbowl last night, I have a few things I’d like to put on the record. I’m not a verbose guy, so this &lt;em&gt;should &lt;/em&gt;be rather pithy.&lt;/p&gt;
&lt;p&gt;Last night, after I gave my groups 5 min presentation on the chosen topic, “ways to fix the PSL communication/website issues”, I quickly realized I missed an opportunity to really speak my mind about how to make PSL a stronger organization.&lt;br/&gt;So here ya go…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Purpose &lt;/strong&gt;&lt;br/&gt;Philly Startups Leaders should embrace their name and be an organization for LEADERS. Why not simply support entrepreneurial leaders that are doing awesome things “for” Philadelphia? Fostering this type of environment is exactly what philly needs and can’t be accomplished with monthly happy hours or tech demos. The goal should really be to convince others to step up and earn your stripes in the community.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Challenges &lt;/strong&gt;&lt;br/&gt;There will always be fragmentation in this type of group simply because of the nature and personalities of its membership. PSL should just accept this reality and stop worrying about the marketing benefits of a “large” mailing list. Why not just &lt;em&gt;FOCUS &lt;/em&gt;on finding the next rising leaders the community can rally behind. Do that effectively, and no one will care about maintaining a mailing list. The lesson here, be careful what you measure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Execution&lt;br/&gt;&lt;/strong&gt;First off, a strategy has to be formed to recruit members that are leaders in the community. There needs to be a simple process for new members to apply by giving their relevant accomplishments and also a process for existing members to sponsor leaders that should be accepted as members.&lt;br/&gt;Second, a major factor in organizing a group of people that are willing to work with each other and are also be proud of being a part of the group, is having a common bond. So, maybe the only member requirement should be having a major accomplishment in the community (Launching a company, organizing a group or event that helps Philly startups). Also, each member should be somehow recognized for each of their accomplishments. Recognizing members for their work is a great way to inspire others to make contributions and at the same time build a stronger community. &lt;br/&gt;Lastly, a really cool way to strengthen membership is to convince them all to really “work together” once or twice a year. I could see a PSL summit, where all are invited to a 2 or 3 day event of activities that could focus on addressing local issues and team building. This could be an amazingly effective way to form and strengthen relationships amongst members.&lt;/p&gt;
&lt;p&gt;That’s all for now…keep the wheels turning.&lt;/p&gt;</description><link>http://bradoyler.com/post/10226137214</link><guid>http://bradoyler.com/post/10226137214</guid><pubDate>Wed, 14 Sep 2011 22:07:11 -0400</pubDate><category>startups</category><category>philadelphia</category></item><item><title>Google Calendar Reader : jQuery Plugin</title><description>&lt;p&gt;I was really surprised that I couldn’t find a plugin or widget that already did this, so I figured I’d make a jQuery plugin to read a public google calendar feed and custom format it so that it can be display on your site and have your own styles applied.   Here’s how the gCal reader plugin works.&lt;/p&gt;
&lt;p&gt;Here’s a link to the github repo: &lt;a href="https://github.com/bradoyler/GoogleCalReader-jquery-plugin" target="_blank"&gt;&lt;a href="https://github.com/bradoyler/GoogleCalReader-jquery-plugin" target="_blank"&gt;https://github.com/bradoyler/GoogleCalReader-jquery-plugin&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Demo is here: &lt;a target="_blank" href="http://w3gifts.com/gCalEvents.htm"&gt;&lt;a href="http://w3portals.com/gCalReader/" target="_blank"&gt;http://w3portals.com/gCalReader/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="javascript"&gt;
(function ($) {
    //Add gcal element
    $(document).ready(function () {
        $('body').prepend('Loading...');
    });

    //Resize image on ready or resize
    $.gCalReader = function (options) {
        //Default settings
        var settings = {
            feedUri: 'http://www.google.com/calendar/feeds/en.usa%23holiday%40group.v.calendar.google.com/public/full',
            maxresults: 20,
            displayCount: 1
        };

        var feedUri = options.feedUri;
        if (feedUri.indexOf("public/full") == -1) {
            feedUri = settings.feedUri;
        }

        var options = $.extend(settings, options);

        function _run() {
            var calendarService = new google.gdata.calendar.CalendarService('GoogleInc-jsguide-1.0');

            // The "public/full" feed is used to retrieve events from the named public calendar with full projection.
            var query = new google.gdata.calendar.CalendarEventQuery(feedUri);
            query.setOrderBy('starttime');
            query.setSortOrder('ascending');
            query.setFutureEvents(true);
            query.setSingleEvents(true);
            query.setMaxResults(options.maxresults);

            var callback = function (result) {

                var entries = result.feed.getEntries();
                $('#gcal').html('');
                if (options.displayCount) {
                    $('#gcal').html(entries.length + ' upcoming events');
                }
                $('#gcal').append('');

                for (var i = 0; i &lt; entries.length; i++) {
                    var eventEntry = entries[i];
                    var eventTitle = eventEntry.getTitle().getText();
                    var startDateTime = null;
                    var eventDate = null;
                    var eventWhere = null;
                    var eventContent = eventEntry.getContent().getText();

                    var times = eventEntry.getTimes();
                    if (times.length &gt; 0) {
                        startDateTime = times[0].getStartTime();
                        eventDate = startDateTime.getDate();
                    }

                    var d_names = new Array("Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat");
                    var m_names = new Array("Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec");

                    var a_p = "";
                    var d = eventDate;
                    var curr_hour = d.getHours();
                    if (curr_hour &lt; 12) {
                        a_p = "am";
                    }
                    else {
                        a_p = "pm";
                    }
                    if (curr_hour == 0) {
                        curr_hour = 12;
                    }
                    if (curr_hour &gt; 12) {
                        curr_hour = curr_hour - 12;
                    }

                    var curr_min = d.getMinutes();
                    curr_min = curr_min + "";

                    if (curr_min.length == 1) {
                        curr_min = "0" + curr_min;
                    }

                    var time = curr_hour + ':' + curr_min + a_p;
                    var day = eventDate.getDay();
                    var month = eventDate.getMonth();
                    var date = eventDate.getDate();
                    var dayname = d_names[day];
                    var monthname = m_names[month];
                    var location = eventEntry.getLocations();
                    var eventWhere = location[0].getValueString();

                    var eventhtml = '' + eventTitle + '  When: ' + dayname + ' ' + monthname + ' ' + date + ', ' + time + Where: ' + eventWhere + eventContent;
           $('#eventlist').append(eventhtml);
                }
            };

            // Error handler to be invoked when getEventsFeed() produces an error
            var handleError = function (error) {
                $('#gcal').html(error);              };            
  // Submit the request using the calendar service object                   
 calendarService.getEventsFeed(query, callback, handleError);          }                
 google.setOnLoadCallback(_run);             
})(jQuery); 
&lt;/code&gt;&lt;/pre&gt;</description><link>http://bradoyler.com/post/5920681395</link><guid>http://bradoyler.com/post/5920681395</guid><pubDate>Sat, 28 May 2011 00:34:00 -0400</pubDate></item><item><title>GeoLocate a visitor's IP address and cache the results. (C#)</title><description>&lt;p&gt;First, go over to &lt;a href="http://ipinfodb.com" target="_blank"&gt;http://ipinfodb.com&lt;/a&gt; , see how it works and get yourself an API key by signing up for free. If you’re looking to convert an visitors IP address into a geographic location, then here’s a quick code nugget in C#. Have fun!&lt;/p&gt;
&lt;pre&gt;&lt;code class="javascript"&gt;
  
  string ip = Request.ServerVariables["X-Forwarded-For"]
      
   public class LocationInfo
    {
        public string Country { get; set; }
        public string RegionName { get; set; }
        public string City { get; set; }
        public string ZipCode { get; set; }
        public float Latitude { get; set; }
        public float Longitude { get; set; }
    }

     public static LocationInfo HostIpToPlaceName(string ip)
        {
            ObjectCache cache = MemoryCache.Default;

            var key = "zzzzzgetyourowncodezzzzzz";
            string url = "http://api.ipinfodb.com/v3/ip-city/?key={0}&amp;ip={1}&amp;format=xml";
            
            url = String.Format(url,key, ip);
            var location = new LocationInfo();
            var result = cache[ip] as XDocument;
            try
            {
                if (result == null)
                {
                    result = XDocument.Load(url);
                    cache.Add(ip, result,
                   new CacheItemPolicy() { SlidingExpiration = TimeSpan.FromDays(1) });
                }

          location = (from x in result.Descendants("Response")
                      select new LocationInfo
                    {
                     City = (string)x.Element("cityName"),
                     RegionName = (string)x.Element("regionName"),
                     Country = (string)x.Element("countryName"),
                     ZipCode = (string)x.Element("zipCode"),
                     Latitude = (float)x.Element("latitude"),
                     Longitude = (float)x.Element("longitude")
                    }).First();
            return location;
        }
    }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;One thing to notice is that this caches the result for each unique IP address, so that you don’t have to call this API everytime you need this users location. Cheers!&lt;/p&gt;</description><link>http://bradoyler.com/post/3857534181</link><guid>http://bradoyler.com/post/3857534181</guid><pubDate>Mon, 14 Mar 2011 13:30:00 -0400</pubDate></item><item><title>Uploading an image with AWS SDK for .Net (C#)</title><description>&lt;p&gt;I recently started using cloud-based hosting (&lt;a title="appharbor" target="_blank" href="http://appharbor.com"&gt;AppHarbor.com&lt;/a&gt;) for my latest project (&lt;a title="MealTik" target="_blank" href="http://mealtik.com"&gt;Mealtik.com&lt;/a&gt;) and I needed a remote storage solution for the images that would be uploaded by users. I was already familiar with Amazon’s Simple Storage service (AWS S3), but never actually built a .Net app that used this API for uploading images to S3.&lt;/p&gt;
&lt;p&gt;So…here are the steps to simply get an image published\uploaded to S3.&lt;/p&gt;
&lt;p&gt;1. First go get an account with AWS at &lt;a href="http://aws.amazon.com/" target="_blank"&gt;http://aws.amazon.com/&lt;/a&gt; and then go get your accessKey and SecretKey from your account.&lt;/p&gt;
&lt;p&gt;2. Download the AWS SDK for .Net here: &lt;a href="http://aws.amazon.com/sdkfornet/" target="_blank"&gt;http://aws.amazon.com/sdkfornet/&lt;/a&gt; and include the assembly AWSSDK.dll in your project.&lt;/p&gt;
&lt;p&gt;3. Here’s the markup:&lt;br/&gt;     &lt;input type=”file” id=”fileUpload” name=”fileUpload” size=”23” /&gt;&lt;/p&gt;
&lt;p&gt;4. Here’s the C#:&lt;/p&gt;
&lt;pre&gt;&lt;code class="javascript"&gt;&lt;br/&gt;HttpPostedFileBase file = Request.Files[0];&lt;br/&gt;if (file.ContentLength &gt; 0) // accept the file&lt;br/&gt;{&lt;br/&gt;                string accessKey = "XXXXXXXXXXX";&lt;br/&gt;                string secretKey = "122334XXXXXXXXXX";&lt;br/&gt;                AmazonS3 client;&lt;br/&gt;&lt;br/&gt;   using (client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey, secretKey))&lt;br/&gt;     {&lt;br/&gt;          PutObjectRequest request = new PutObjectRequest();&lt;br/&gt;          request.WithBucketName("mealtik")&lt;br/&gt;         .WithCannedACL(S3CannedACL.PublicRead)&lt;br/&gt;         .WithKey("meals/test.jpg").InputStream = file.InputStream;&lt;br/&gt;        S3Response response = client.PutObject(request);&lt;br/&gt;     }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few things to point out:&lt;br/&gt;  1. I’m uploading my image (“test.jpg”) to folder (“meals”) which is in a bucket called “mealtik”.&lt;br/&gt;  2. I’m setting the image permissions to “public read”.&lt;br/&gt;  3. I’m using MVC, but the code should work for webforms as well.&lt;/p&gt;
&lt;p&gt;As you can see, it’s pretty simple to do, but for some reason I couldn’t find an example of this anywhere on the interwebs. Hope this helps!&lt;/p&gt;</description><link>http://bradoyler.com/post/3614362044</link><guid>http://bradoyler.com/post/3614362044</guid><pubDate>Wed, 02 Mar 2011 23:11:00 -0500</pubDate><category>mvc</category><category>asp.net</category><category>aws</category><category>cloudcomputing</category></item><item><title>Startup Weekend is coming to Philadelphia
Startup Weekend is...</title><description>&lt;iframe width="400" height="240" src="http://www.youtube.com/embed/yovXXyM-034?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;Startup Weekend is coming to Philadelphia&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Startup Weekend is scheduled for January 28th 2011 at Independents Hall (Indy Hall) in old city.  Get more info and register for the event @ &lt;a href="http://philly.startupweekend.org" target="_blank"&gt;http://philly.startupweekend.org&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br/&gt;&lt;strong&gt;What it’s about:&lt;/strong&gt; Startup Weekend is a non-profit organization based out of Seattle, WA USA. Startup Weekend is a small team of three along with community leaders around the world.  The primary mission is to be the most valuable and influential organization in startup communities around the world. Startup Weekend doesn’t have to teach entrepreneurship in a boring classroom setting, we model it in a fun, interactive, and results driven way.  As a result, we have become one of the leading catalysts for startup creation, co-founder dating, and entrepreneurship education in startup ecosystems around the world.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;How it works: &lt;/strong&gt; It is an intense 54 hour event which focuses on building a web or mobile application which could form the basis of a credible business over the course of a weekend. The weekend brings together people with different skillsets - primarily software developers, graphics designers and business people - to build applications and develop a commercial case around them.&lt;/span&gt;&lt;/p&gt;</description><link>http://bradoyler.com/post/2051702518</link><guid>http://bradoyler.com/post/2051702518</guid><pubDate>Tue, 30 Nov 2010 16:22:00 -0500</pubDate></item><item><title>PA Congressman's response to H.R. 5034 Comprehensive Alcohol Regulatory Effectiveness Act of 2010</title><description>&lt;p&gt;Recently, I contacted my local congressman (Jim Gerlach) about my opposition to H.R. 5034, which will make it nearly impossible for small artisan wineries to ship directly to their customers. The bogus argument for this, is that this enables underage kids easy access to alcohol. Anyone with half a brain would realize that no 17-year-old is ordering artisan wines online to get his buzz on. This bill is penned and supported by LARGE multi-state beer distributors…what a shocker. Anyway, here’s Gerlach’s canned, ambiguous, and lame response….&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;Dear Mr. Oyler:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Thank you for contacting me about H.R. 5034, the proposed Comprehensive  Alcohol Regulatory Effectiveness (CARE) Act of 2010. I appreciate the opportunity to respond. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Since the end of Prohibition in 1933, the authority to regulate the sale and  distribution of alcohol has been left to the states. In general, states have required that beer, wine,  and spirits be distributed to wholesalers, then to retailers, and finally to the consumer. As such, wholesalers and  retailers have been part of the sales and revenue stream and the producers of the products have  therefore sought a more direct sales approach. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;This traditional system for sale and distribution of alcoholic beverages has  recently been questioned in the courts, most notably when a federal appeals court in &lt;/span&gt;&lt;span&gt;Boston&lt;/span&gt;&lt;span&gt; struck down a state law restricting direct sale to citizens by wine  producers. Wholesalers contend that direct sale is contrary to state law and is a breach of the 21st  Amendment which grants the states the power to regulate alcohol sales. On the other hand, producers support an  approach that permits wineries and breweries to avoid a multi-layered distribution system that impacts  their profitability. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;In response to this controversy, a bipartisan group of members have  introduced H.R. 5034. The context of the bill is to underscore Congress’ view that the regulation of  alcoholic beverages is a state issue.  Nonetheless, its enactment would not prevent individuals from  challenging unconstitutional state regulations nor prohibit the direct shipment of wine. In essence, the legislation  aims to generally reaffirm that federal laws should not trump state laws.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;The bill was introduced on April 15, 2010 and has been referred to the House  Judiciary Committee. Should this bill begin moving forward in the process,&lt;/span&gt; &lt;span&gt;I will certainly weigh your views in dec&lt;/span&gt;&lt;span&gt;iding whether how to vote on &lt;/span&gt;&lt;span&gt;this  bill.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Again, thank you for contacting me regarding this legislation. If I can be of  any assistance to you or your family in the future, please let me know.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;With kind regards, I am&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Sincerely,&lt;br/&gt;&lt;br/&gt; Jim Gerlach&lt;br/&gt; Member of Congress&lt;br/&gt;&lt;br/&gt;P.S. Please visit me on the internet at &lt;a target="_blank" href="http://www.gerlach.house.gov/"&gt;&lt;a href="http://www.gerlach.house.gov" target="_blank"&gt;http://www.gerlach.house.gov&lt;/a&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://bradoyler.com/post/639295270</link><guid>http://bradoyler.com/post/639295270</guid><pubDate>Thu, 27 May 2010 22:03:23 -0400</pubDate></item><item><title>2010 Phillies: Another great season is underway</title><description>&lt;p&gt;   We are 5 games into the season and the home opening is only 1 game away. The Fightin Phils have had double digit hits in each game and have only lost 1 game so far. &lt;br/&gt;  Batting: Ryan Howard is leading the NL with 3 homer runs and 10 RBIs, Placido Polanco, who seems to be another great off season acquistion is boasting a solid .538 batting average. However, a lot of the run production has been due to Jimmy Rollins leading the league with 7 walks, which have converted to 7 runs. It’s great to see J-Roll off to a great start. &lt;br/&gt;  Pitching: The team has a combined ERA of 2.00 and each starter has showed promise with their season debuts. Not to mention Hallayday’s 9 K’s in 7 innings and J.A Happ’s 0.00 ERA.&lt;/p&gt;
&lt;p&gt;  The anticipation for the home opener this Monday is building up steam like a locomotive. Needless to say, it’s going be an awesome game…and also a more incredible season. Go Phils!&lt;/p&gt;
&lt;p&gt;&lt;img align="middle" width="400" src="http://3.bp.blogspot.com/_QT57C9FtOLU/S1-YnCx54oI/AAAAAAAAC9g/xEcmPi4pQ3Q/s1600/PHILLIES" alt="Phillies 2010" height="400"/&gt;&lt;/p&gt;</description><link>http://bradoyler.com/post/512133123</link><guid>http://bradoyler.com/post/512133123</guid><pubDate>Sat, 10 Apr 2010 23:38:10 -0400</pubDate><category>phillies</category></item><item><title>Home winemaking day 1: Primary fermentation</title><description>&lt;p&gt;&lt;img width="604" src="http://photos-a.ak.fbcdn.net/hphotos-ak-snc3/hs441.snc3/25351_398579553361_636428361_5077142_840035_n.jpg" alt="fermentation" height="453"/&gt;&lt;/p&gt;
&lt;p&gt;Tonight I started my home wine making project. The first steps were pretty simple:&lt;br/&gt;1. Sterilized the bucket, big spoon and lid.&lt;br/&gt;2. Added 1 gal of hot water with bentonite to 6gal bucket…stirred.&lt;br/&gt;2. Added Sauvignon Blanc grape juice and topped of with cold water…stirred.&lt;br/&gt;3. Added yeast to “must” and put the lid on the fermentation bucket.&lt;/p&gt;
&lt;p&gt;The next stage will take place on March 28th and I’ll be sure to share the details. Hopefully some kickass fermentation will be going on, just in time for spring. Cheers.&lt;/p&gt;</description><link>http://bradoyler.com/post/442558876</link><guid>http://bradoyler.com/post/442558876</guid><pubDate>Thu, 11 Mar 2010 22:50:00 -0500</pubDate><category>wine</category><category>homebrewing</category></item><item><title>Using the ASP.Net GridView with ObjectDataSource and IQueryable objects</title><description>&lt;p&gt;I recently started to move a project from using ADO.Net Typed DataSets to the more “efficient and flexible” Entity Framework or more specifically ”LINQ to Entities”.&lt;/p&gt;
&lt;p&gt;One of the first issues I ran into was the automatic Sorting and Paging that comes with binding GridViews to DataSets. Since I needed to change my data objects  from Datasets to IQueryable I was not happy about having to re-work how that was working. That’s where the fun began.&lt;/p&gt;
&lt;p&gt;I first came across an article by Scott Guthrie &lt;a title="Using the LINQ Dynamic Query Library" target="_blank" href="http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx"&gt;Using the LINQ Dynamic Query Library&lt;/a&gt; and my initial thoughts where that is was way to complex for my needs. Considering I haven’t used LINQ to Entities extensively I was a little reluctant to dig in.&lt;/p&gt;
&lt;p&gt;So after finally realizing how simple these extension methods for LINQ really are, I decided to prove out this would work well with my application. …here’s basically what I did.&lt;/p&gt;
&lt;p&gt;Only requirements:&lt;br/&gt;1. include the Dynamic.cs file in your project so you can use Scott’s LINQ extension methods.&lt;br/&gt;2. create an Entity DB model called “Model1” and create a table called “People”.&lt;/p&gt;
&lt;p&gt; &lt;i&gt;&lt;b&gt;// Here’s the markup:&lt;/b&gt;&lt;/i&gt;&lt;br/&gt; &lt;asp:GridView ID=”GridView1” runat=”server” DataSourceID=”odsTest” AllowPaging=”true” AllowSorting=”true”&gt;&lt;br/&gt;&lt;/asp:GridView&gt;&lt;/p&gt;
&lt;p&gt;&lt;asp:ObjectDataSource ID=”odsTest” runat=”server” SelectMethod=”GetPeople” TypeName=”BLL” SortParameterName=”sortExpr” SelectCountMethod=”SelectPeopleCount” EnablePaging=”true”&gt; &lt;/asp:ObjectDataSource&gt;&lt;/p&gt;
&lt;p&gt; &lt;b&gt;&lt;i&gt;// Here’s The CodeBehind in C#:&lt;br/&gt;&lt;/i&gt;&lt;/b&gt;// be sure to include “using System.Linq.Dynamic;” and make namespace “BLL”&lt;/p&gt;
&lt;p&gt;public Model1Entities db = new Model1Entities();&lt;/p&gt;
&lt;p&gt;public IQueryable GetPeople(string sortExpr, int maximumRows, int startRowIndex)&lt;br/&gt;{&lt;br/&gt;  var docs = from p in db.People&lt;br/&gt;                 select p; &lt;/p&gt;
&lt;p&gt;   if (string.IsNullOrEmpty(sortExpr))&lt;br/&gt;   {&lt;br/&gt;      return docs.Skip(startRowIndex).Take(maximumRows);&lt;br/&gt;   }&lt;br/&gt;   else&lt;br/&gt;   {&lt;br/&gt;      var sortedDocs = docs.OrderBy(sortExpr).Skip(startRowIndex).Take(maximumRows);&lt;br/&gt;       return sortedDocs; &lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public int SelectPeopleCount()&lt;br/&gt;    {&lt;br/&gt;       return db.People.Count();&lt;br/&gt;     }&lt;br/&gt;&lt;br/&gt;}&lt;/p&gt;
&lt;p&gt;After proving out the solution I came up with, I think my new DAL will definitely be much easier and more efficient to work with than those clunky Typed DataSets.  Cheers! &lt;/p&gt;</description><link>http://bradoyler.com/post/399042473</link><guid>http://bradoyler.com/post/399042473</guid><pubDate>Fri, 19 Feb 2010 15:02:00 -0500</pubDate><category>ado.net</category><category>linq</category><category>iqueryable</category></item><item><title>Before you can install SQL Server clustering, you must first...</title><description>&lt;iframe width="400" height="327" src="http://www.youtube.com/embed/qP56uxyPIH0?wmode=transparent&amp;autohide=1&amp;egm=0&amp;hd=1&amp;iv_load_policy=3&amp;modestbranding=1&amp;rel=0&amp;showinfo=0&amp;showsearch=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Before you can install SQL Server clustering, you must first install Windows Server clustering services. Once it is successfully installed and tested, then you can install SQL Server 2008 clustering. In this instructional video, we take a step-by-step approach to installing and configuring Windows 2008 clustering. Then, we will demonstrate how to install SQL Server clustering. Enjoy!&lt;/p&gt;</description><link>http://bradoyler.com/post/370996779</link><guid>http://bradoyler.com/post/370996779</guid><pubDate>Thu, 04 Feb 2010 15:27:10 -0500</pubDate></item><item><title>Comcast trying to block funding to their own hometown. (Philadelphia)</title><description>&lt;p&gt;A great article from the peeps over TechnicallyPhilly.com : &lt;a href="http://technicallyphilly.com/2009/12/01/comcast-comments-could-hurt-city-broadband-stimulus-plans" target="_blank"&gt;&lt;a href="http://technicallyphilly.com/2009/12/01/comcast-comments-could-hurt-city-broadband-stimulus-plans" target="_blank"&gt;http://technicallyphilly.com/2009/12/01/comcast-comments-could-hurt-city-broadband-stimulus-plans&lt;/a&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;This is outright ridiculous that this isn’t getting more coverage. &lt;br/&gt; Comcast, the company that recieved $43 million in PA taxpayer money for “their” new building is now trying to block federal &amp; state funding to their home city since it would cause them to lose business. They should be outed for this. This is a perfect example of the corporatocracy in america that is stifling innovation and robbing it’s citizens. The fact that they are trying to impede any competition is criminal and I’m so glad that I was finally able to switch to Verizon FIOS.&lt;/p&gt;</description><link>http://bradoyler.com/post/266362543</link><guid>http://bradoyler.com/post/266362543</guid><pubDate>Wed, 02 Dec 2009 10:25:15 -0500</pubDate></item><item><title>Top 5 Reasons your business should provide online giftcards.</title><description>&lt;p&gt;&lt;a href="http://blog.w3giftcards.com/post/240994134/top-5-reasons-your-business-should-provide-online" target="_blank"&gt;w3giftcards&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;#1. When a customer buys a gift card for your service, then are not only generating a sale, but they are also generating a GUARANTEED referral.&lt;/p&gt;
&lt;p&gt;#2. Gift card sales on a yearly basis have topped at around $100 billion. That’s a lot of potential revenue missed if you are not offering your own gift cards online. Source: &lt;a href="http://www.emarketer.com/Article.aspx?R=1005802" target="_blank"&gt;&lt;a href="http://www.emarketer.com/Article.aspx?R=1005802" target="_blank"&gt;http://www.emarketer.com/Article.aspx?R=1005802&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;#3. A gift card sale is equivalent to up-front financing from your OWN customers. Think about it, you can pay for business costs from services\products that have not even been rendered yet. As a business owner, you understand the value of staying ahead of your bills.&lt;/p&gt;
&lt;p&gt;#4. Gift cards contain something in the industry called ”breakage”. Which is the amount of unused or remaining balance left on the gift cards. This has been estimated at around 10-15% percent of all gift card sales. Therefore, you can automatically consider an additional 10-15% profit from gift card sales.&lt;/p&gt;
&lt;p&gt;#5. Online gift cards give you a reason to talk about your website. Social media is big business these days and is getting bigger by the second. It’s great to show your customers you are going above and beyond to reach out to them. The way we do business is changing real fast…and those that don’t catch on will get left in the dust.&lt;/p&gt;
&lt;p&gt;Why not sign up for your FREE online gift card account @ &lt;a href="http://www.W3GiftCards.com" target="_blank"&gt;&lt;a href="http://www.W3GiftCards.com" target="_blank"&gt;www.W3GiftCards.com&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://bradoyler.com/post/241024521</link><guid>http://bradoyler.com/post/241024521</guid><pubDate>Wed, 11 Nov 2009 22:19:00 -0500</pubDate><category>w3giftcards</category></item><item><title>Healthcare reform house bill passes</title><description>&lt;p&gt;The House bill narrowly passes 220 to 215. Republicans unanimously appose the bill and could be a major factor in upcoming elections. Could we see a big swing in 2010 to a GOP senate? I think so, since health care plan of 1993 had that exact same effect. It’s almost as if the Obama administration is following the same footsteps of the Clinton administration. The only small difference is that the market in ‘93 was heading towards it’s largest growth in history and we had a falling unemployment rate of 6.5%. And of course, now we have  10%unemployment, devaluing of the dollar and largest national debt in history. So maybe the economic downturn will be the difference this time, we will see…   Let’s be honest, the government taking over our lives is inevitable.  Look at all the of the past great democracies (Athens, Rome, Germania). They all peaked with democracy and then lead to socialism after elected officials learned how to buy constituents with entitlements.&lt;/p&gt;</description><link>http://bradoyler.com/post/237101932</link><guid>http://bradoyler.com/post/237101932</guid><pubDate>Sun, 08 Nov 2009 11:26:00 -0500</pubDate><category>politics</category></item><item><title>"New fav quote: “Formal education will make you a living, self-education will make you a..."</title><description>“New fav quote: “Formal education will make you a living, self-education will make you a fortune.””&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Jim Rohn&lt;/em&gt;</description><link>http://bradoyler.com/post/233184137</link><guid>http://bradoyler.com/post/233184137</guid><pubDate>Wed, 04 Nov 2009 16:06:59 -0500</pubDate></item><item><title>Uprising lyrics...a libertarian anthem??</title><description>&lt;p&gt;Here are the lyrics to Muse - Uprising. Thoughts?&lt;br/&gt;I think they are totally relevant with what’s going on right now in the U.S. &lt;br/&gt; Bottom line, no matter how you interpret these lyrics, a large amount of people in this country are fed up. Maybe MUSE is the modern day Thomas Paine…? Well, maybe not, but when foreigners start to point out massive problems going on in your back yard, you better listen up.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Paranoia is in bloom, &lt;br/&gt; The PR transmissions will resume, &lt;br/&gt; They’ll try to push drugs that keep us all dumbed down, &lt;br/&gt; And hope that we will never see the truth around&lt;br/&gt; (So come on)&lt;br/&gt; Another promise, another scene, &lt;br/&gt; Another packaged lie to keep us trapped in greed, &lt;br/&gt; And all the green belts wrapped around our minds, &lt;br/&gt; And endless red tape to keep the truth confined&lt;br/&gt; (So come on)&lt;br/&gt;&lt;br/&gt; They will not force us, &lt;br/&gt; They will stop degrading us, &lt;br/&gt; They will not control us, &lt;br/&gt; We will be victorious&lt;br/&gt; (So come on)&lt;br/&gt;&lt;br/&gt; Interchanging mind control, &lt;br/&gt; Come let the revolution take it’s toll, &lt;br/&gt; If you could flick a switch and open your third eye, &lt;br/&gt; You’d see that&lt;br/&gt; We should never be afraid to die&lt;br/&gt; (So come on)&lt;br/&gt;&lt;br/&gt; Rise up and take the power back, &lt;br/&gt; It’s time the fat cats had a heart attack, &lt;br/&gt; You know that their time’s coming to an end, &lt;br/&gt; We have to unify and watch our flag ascend&lt;br/&gt;&lt;br/&gt; They will not force us, &lt;br/&gt; They will stop degrading us, &lt;br/&gt; They will not control us, &lt;br/&gt; We will be victorious&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Music Video:   
&lt;object height="340" width="560" data="http://www.youtube.com/v/ioG2jR-obac&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash"&gt;
&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="src" value="http://www.youtube.com/v/ioG2jR-obac&amp;hl=en&amp;fs=1&amp;"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;/object&gt;
&lt;/p&gt;</description><link>http://bradoyler.com/post/221856843</link><guid>http://bradoyler.com/post/221856843</guid><pubDate>Sat, 24 Oct 2009 11:07:42 -0400</pubDate></item><item><title>"Sometimes you eat the bar…and sometimes the bar eats you."</title><description>““Sometimes you eat the bar…and sometimes the bar eats you.””&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;The Big Lebowski&lt;/em&gt;</description><link>http://bradoyler.com/post/179848463</link><guid>http://bradoyler.com/post/179848463</guid><pubDate>Fri, 04 Sep 2009 16:14:18 -0400</pubDate></item></channel></rss>

