KCDC Notes: First Day

Yesterday’s Precompiler conferences notwithstanding, today was the first full day of #KCDC14. It was announced that there were TWELVE HUNDRED attendees (which is why 3G was faster than WiFi almost all day).  My notes on the sessions I attended are as follows: First Session: MongoDB

  • In Mongo, “Database > Collections > Documents” is somewhat akin to “Database > Table > Row” in a relational database
  • Mongo’s javascript shell uses Google’s V8 engine
  • GridFS (I didn’t catch everything that was said about this feature, only that I need to look it up and learn more)
  • MMS (Mongo Monitering Service): free if you host from Mongo; paid to host it on your box
  • GeoJSON data supported
  • As of version 2.6.x full text search is on by default (you have to activate it on 2.4.x)
  • Aggregation framework: “like Map-Reduce but different” and uses a pipeline architecture
  • Disk-based sorting (is new as of 2.6.x?)
  • Safety: write safety (w) and journal protection (j) << gets into “eventual consistency”
  • DB.findOne() returns first item in “natural order” which can change
  • Something about mapping and nested DBObjects (I didn’t catch this all)
  • Pro tip on Mac: install MongoDB using “Brew install”
  • The presenter pronounces GUID as “goo-id” (like the dude yesterday)
  • Default config will assume production presets, which will seize 10% of your hard drive
  • I might have been seeing it incorrectly, but it looked like a newly provisioned database with one collection and two simplistic records was taking 78MB (0.078GB). Really?
  • No transactions in the DB — do that stuff in your code (or service bus!)
  • Doesn’t do fancy quotes (eg: MS Word copy & paste)
  • Document design: CONSIDER THE ACCESS PATTERN so you don’t screw yourself later
  • “Who is using Mongo and how” << read more at the Mongo website
  • MongoDB University (with code in Python, Java, and NodeJS)
  • Big Data Summit in KC in November (DST is to blame for this)

Second Session: Intro to iOS Development with Xamarin

  • Pricing is per platform — getting Xamarin.Android and Xamarin.IOS means you’re buying two licenses
  • C# 4.5 is supported (including awesomeness like async await)
  • Xamarin Studio has NuGet support (w00t!)
  • iBeacons
  • Monogame.net << based on XNA Studio
  • Pro tip: get a powerful MacBook Pro and use Parallels for a mobile Xamarin dev rig

Third Session: Web Performance Analysis with Free Tools

  • The presenter’s accent was a trip!
  • Main bottlenecks for websites: Latency, bandwidth, server processing, client rendering
  • Glimpse: get with NuGet (of course!) and activate it at /glimpse.axd
  • Can deploy glimpse in prod and lock down access by policy
  • Glimpse is extendable (and I presume there are OSS plugins)
  • sp_BlitzIndex: don’t ask — just d/l it, run it on your DB, and realize how inefficient stuff is
  • WebPageTest — brilliant tool!
  • Chrome Dev Tools; using Canary you get an early warning to what Google is going to break on your website. Of particular note is the timeline tool.
  • Page Speed (plugin for Chrome dev tools)
  • Other ideas: use a CDN, Optimize images (get: image optimizer VS extension)
  • VS Web Essentials: Mads deserves mad props for this
  • GIYF — there are more great tools on the interwebz

Lunch was… interesting.  No vegetarian option, really? Fourth Session: Windows Azure Mobile Services (This isn’t the session I wanted to attend, but I spent too long talking to one of the vendors and the session I wanted to attend — on Angular $scope — was filled to capacity.)

  • Aside from me and two co-workers, I presume everyone at this session meant to be here… so why is the presenter making such a sales push for Azure?
  • Microsoft App Studio: learning about this was worth stumbling into this session by accident!

Fifth Session: Intro to Google Dart

After the Dart session I joined in on a discussion about Xamarin when getting a seat in the room for the next session. Practical advice: follow Paul Betts on twitter if you’re into Xamarin. Sixth Session: Delivering Push Notifications with Microsoft Notifications Hub

  • Memo to DPEs at conferences: if I’m in your session don’t pull a hard-sell on me. Just explain the merits of MSFT’s product and treat me like an adult capable of making a rational decision.
  • Notifications hubs on Service Bus: these look awesome from the perspective of feeding one notifications queue and getting the messages delivered to every mobile platform under the Sun.  Forget IoC: just make Azure do the delivery to each platform you support and your code only needs to be able to support Azure’s message bus
  • Another memo to DPEs: you aren’t funny… don’t try to be. ScottHa is the exception.
  • Microsoft.WindowsAzure.Messaging for push notifications (get it via NuGet — are we getting the trend regarding NuGet?)

Sixth and last session of the day: WebAPI 2: Beyond the basics

  • This presenter, Matt Milner, was awesome! On the merits of this presentation alone I’m going to get my own Pluralsight subscription (assuming I can’t talk my boss into getting the team subscription within a week)
  • Key new features in WebAPI:
  • OWIN (use NuGet — duh!)
  • AuthOptions (eg: Twitter, Google, etc.. or regular aspnet auth stuff. Or roll your own)
  • CORS (you can allow cross-site script requests to your API — ftw!)
  • Help Pages / API Explorer — your integration partners will love this!
  • Attribute Routing (define on the control or method; Routes.IgnoreRoute() wins!)
  • Global Error Handling (Add: ExceptionLogger; Replace: ExceptionHandler)
  • IHttpActionResult (can you say “unit testing”?)
  • HttpRequestContext (we didn’t really get to this)
  • OData features (we certainly didn’t get to this… but it rocks apparently. GIYF)