One beautiful web across all devices – that’s the promise of responsive web design. Thankfully, there is plenty of help for us ASP.NET web developers out of the box. There is just no more an excuse to not deliver the best possible web experience, irrespective of the user’s device. Check out my article on the Telerik Developer Network on options of going responsive with the ASP.NET MVC stack.

Write-up, sample code & demos over HERE @ the Telerik Dev Network.

Thanks for reading. Adios!

 

Think the web you make can handle touch? Lack of hover making you lose sleep? Web menus not being adaptive when viewed on mobile devices? Yeah, we developers have all been there and I documented few of my tricks. Check out my article on the Telerik Developer Network, along with a host of other awesome topics from my Telerik Developer Advocate colleagues.

Write-up, sample code & demos over HERE @ the Telerik Dev Network.

Thanks for reading. Adios!

 

Love real-time communication through SignalR? Want to take the real-time experience to mobile devices? Off course, you can go native with .NET for Windows/Windows Phone; but it would be pretty darn wonderful to go cross-platform to iOS & Android. Be it the HTML5/JS approach through Telerik AppBuilder or C# everywhere through Xamarin, you can use the SignalR magic either way to delight your mobile users. Sound interesting? Check out my article on the Telerik Developer Network, along with a host of other awesome topics from my Telerik Developer Advocate colleagues.

Write-up, sample code & demos over HERE @ the Telerik Dev Network.

Thanks for reading. Adios!

 

April 2013. After years of being a consultant and having seen some of the best/worst that enterprise software development entails, it was time to see how’s life in a product company. And having already used/advocated Telerik products for years, I didn’t have to look around much either. Thus started work as a Senior Technical Trainer for the Telerik Services team. Now, trainer is an interesting word. If you already develop cool software, like to play with & talk about new technologies, and have a big involvement in the developer community, you’ll be surprised how easy training comes to you. It’s no more than dev to dev straight talk! Now, don’t get me wrong – training is plenty challenging. If you’re teaching a group of 30 enterprise developers for a week, you better know your stuff inside out, for the utter fear of humiliation. Prep, practice & repeat, no shortcuts! The past year has been a lot of fun – I travelled & stayed at home; did offsite, onsite & remote training on a whole slew of Telerik products suites. It’s always great to see what clients are actually building with your dev tools; and you grow with every new experience. But all good things come to an end .. I’m starting in a new role inside Telerik today!

Now, I can’t move on without mentioning what’s been the biggest influence on me for the past year. Steve & Michelle Smith, and the whole Telerik Services gang (ex-NimblePros) at the Hudson office. I’ve worked with many dev teams before, but no where else have I seen so many software craftsmen under one roof. Folks like Steve, Brendan, Jimmy, Kevin, Todd, Jeff, Chris, Craig, Weston, Caitlin, JoLene, Molly and others – are just crazy smart; and I’ve learnt a lot from each. Not only are they some of the best developers/designers I’ve seen around, but the whole team is like a family that values each other. Cheers to everyone at the Hudson office; it has truely been a pleasure!

Now, on to what’s next. When you find a position that’s a perfect fit, but challenges you with new work – you dive in. Starting today, I’m a Developer Advocate for Telerik in the Developer Relations team, lead by the awesome Rey Bango. My partners in crime? Glad you asked – how about a team with Michael Crump, Jeff Fritz, Burke Holland, John Bristowe, TJ Vantoll, Brian Rinaldi, Jim CowartDhananjay Kumar, Lohith Nagaraj & other super smart folks. Humbling for sure with the kind of reputation each have in our community, but exciting because we’ll get to do awesome stuff together!

Is .NET/Microsoft and Telerik DevTools your bread & butter? Do Windows apps excite you or the ubiquitousness of the web? Have you embraced JavaScript as the assembly language of the web? And off course, you are into all things mobile & the cloud/backend services. And cross-platform development isn’t for the cool kids any more; you cannot afford to not reach every potential user across any technology stack. Just like you my polyglot friend, I love it all! Let’s bridge the gap between the enterprise & hipster world. Using or considering Telerik products? Hit me up & let’s talk.

Cheers!

One snowy February Saturday morning. After about a month of telling myself that I did not need the upgrade from the original Surface RT to the new Surface 2, I gave up. Hey, one needs some cheer during the dreary winters, right? Not that I was unhappy with my original Surface; it was still serving me ok after more than a year of rough use. But the new Surface 2 with all its bells & whistles just seemed irresistible.

PS: For folks like me who desperately try to “justify” the near constant tech gadget crave or the precious device upgrade, BestBuy now seems to have a permanent device trade-in policy (details HERE). The original Surface in good condition, for example, would fetch you a decent $75. Otherwise, there is always Craigslist or eBay that might get you a bit more in consolation.

So, out with the old & in with the new shiny toy. Here are 7 things I absolutely dig about the Surface 2:

  • The screen resolution – this thing alone more than justifies the upgrade. Folks with the Surface Pro know this already, but I’m coming from a paltry 1366×768 resolution on the Surface RT. The Surface 2’s full 1080P 1920×1080 resolution is ridiculously high for a screen that small. The result – more real estate for tiles/desktop & everything is super crisp. Running 3 apps side by side is actually practical & useful. Make sure to follow the steps in Scott Hanselman’s post HERE to get the most of your pixels.
  • The Tegra 4 processor shows its mettle. Almost every app or interaction feels much zippier compared to the somewhat sluggish original Surface RT.
  • I have a generation 1 Surface Type & Touch cover each. Glad that these work seamlessly with the Surface 2 – no new accessories needed.
  • The kickstand going back a second step is very welcome, especially during long flights or when on lap. I remember Jeff Blankenburg & I unboxing the original Surface RT & wishing the kickstand went a little further back – well, now you have it!
  • The magnetic power adapter stills thinks twice before snapping in place, but is way better than the finicky one that came with the original Surface.
  • Battery life – I’m getting 10/11 + hours easy with normal multimedia usage. Let’s just say this is more than handy. Unless I need to fire up Visual Studio, I can get some good productive work done on this baby, all the while the games being just a tap away.
  • The extra OneDrive space & Skype World credits don’t hurt at all :) .

So, if you can spare the extra money, stop thinking & get the upgrade. I’m not repenting ..

Adios!

Are you using SalesForce for CRM? Did you know SalesForce also offers an industry-leading enterprise social network called Chatter? Are your users starting to bring Windows devices in the BYOD fold? Would you not like to custom apps on web/desktop/mobile that allows your users to interact with SalesForce applications more easily? If you answered yes to any, read on ..

Now, you probably already heard that SalesForce recently announced SalesForce Toolkits for .NET developers. This comes courtesy of my good friend, the brilliant Wade Wegner. Details about the SalesForce Toolkit announcement can be found HERE, which has links to the Force.Com & Chatter Toolkits for .NET.

When Wade asked me to take a look, my little world of Windows 8 apps was the obvious choice to try things out. So, let’s try connecting to SalesForce Chatter from a Windows Store app, to give the new APIs a spin. Here’s my step by step guide:

SFDashBoard

  • Before our 3rd party app can talk to SalesForce, we need a “Connected App”, sort of like a proxy which allows us to talk to SalesForce APIs on behalf of the user. From the dashboard, click Build->Create->Apps from the left menu; at the bottom, you’ll see Connected Apps, as below .. click New.

CreateNewApps

  • Create a new App, by specifying App name, Callback URL & OAuth permissions. The end result should be something like my SFChatterApp, as below. Let’s make note of the app’s Consumer Key & Secret; we’ll need them in our client app.

AppCreated

  • While you are just done creating your SalesForce Connected App, let’s take care of one more setting, unless you want to be left scratching your head like me later down the line. Click on your app to go to Settings and make sure you relax IP firewall settings, or allow your specific IP ranges to have access, like shown below.

AppSettings

  • That’s it .. we’re all set on the SalesForce side with our connected app. Time to now build our Windows 8 Store app to connect to SalesForce through the connected app we just created. So, back in Visual Studio, we create a new Windows 8 app from default template. Next step, let’s grab the Chatter Toolkit for .NET, which is available as a NuGet package. We could add this visually, as below or using the NuGet Package Manager Console and “Install-Package DeveloperForce.Chatter”.

SFNuGet

  • With the added DLL references, now let’s write some code to hook up our client Windows 8 Store app to the SalesForce Chatter APIs. I’m going to use the Username-Password flow to quickly get an OAuth access token from Chatter; but for anything real-world, you may want to use the WebServer or OAuth flows, so that each user can get his/her own access token. Wade has these flows nicely documented HERE and HERE. Here’s some code in my App.xaml.cs:

using Salesforce.Common;
using Salesforce.Chatter;
using Salesforce.Chatter.Models;

public AuthenticationClient SFAuth = new AuthenticationClient();
public ChatterClient SFChatter;
public Me SFMe;

 public static new App Current
 {
    get { return Application.Current as App; }
 }

private async void DoSalesForceHandshake()
{
    await SFAuth.UsernamePassword("ConsumerKey", "ConsumerSecret", "UserName", "Password");
    SFChatter = new ChatterClient(SFAuth.InstanceUrl, SFAuth.AccessToken, SFAuth.ApiVersion);
    SFMe = await SFChatter.Me(); 
}
  • You’ll notice that I have a few global variables that I want to hydrate & use elsewhere in my app. I invoke the DoSalesForceHandshake() method from my app’s OnLaunched event handler, to do the SaleForce Chatter handshaking upfront. If your AuthenticationClient object is hydrated correctly, you’re all set. Notice how we create the ChatterClient using details from our authentication call to Chatter APIs. Lastly, we grab info about our personal Chatter feed using the Me() method call. This is sounding like fun, isn’t it?
  • What we want to do is try posting a Chatter message from our Windows 8 app onto SalesForce Chatter, through our client handshaking that we just did. Here’s my over-simplified Windows 8 UI in MainPage.xaml for posting a Chatter message:

ChatterWin8

  • Here’s my code on the send button’s click event handler, so we can post to Chatter:

private async void sendChatBtn_Click(object sender, RoutedEventArgs e)
{            
    var messageSegment = new MessageSegment()
    {
       text = chatTextbox.Text,
       type = "Text"
    };

    var body = new FeedItemBody { messageSegments = new List { messageSegment } };
    var feedItemInput = new FeedItemInput()
    {
        attachment = null,
        body = body
    };

    var feedItem = await App.Current.SFChatter.PostFeedItem(feedItemInput, App.Current.SFMe.id);
}
  • Notice how we are identifying the user (through id property of Me object) as we post the FeedItemInput containing the message to Chatter. The result on button click .. sure enough, our user’s message gets posted to Chatter, as shown below:

SFChatter

  • We only scratched the surface of Chatter APIs here .. you can do many more fancy things like liking/commenting on a Chatter feed item etc. And all of this helps you make interactive mobile apps for your users.
  • Now, here’s the best part – you’ll notice that the Chatter toolkit uses the Async-Await C# pattern for asynchronous access, which allows from easy consumption from any UI client you want to build and it also uses PCLs under the covers. So, as long as you are building any modern .NET based applications, the same code/techniques apply .. this extends coverage to Windows 8, Windows Phone, Silverlight, WPF & even Console apps. Fun!

Hope this was helpful.
Adios!