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
- 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!)
- 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
- Primary reference: dartlang.org
- Chrome dev tools: “Observatory” for Dart
- Resources: dartlang.org, pub.dartlang.org, Avast Ye Pirates, KC Google Developer Group
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)