DigiGirlz and Hour of Code

Today is Take Your Child to Work day. Well... when I'm not traveling, I work in my basement office. The kids spend plenty of time down there in general, have attended many a conference call, and have seen their fair share of code and whiteboarding.

So today, we switched things up a bit, and I took my two daughters (young teens) to a local DigiGirlz event at Microsoft Store.

The two-hour event was split: An hour of DigiGirlz, and an Hour of Code. The former was keynoted by a 15-year Microsoft veteran, and they had a great discussion about tech, passion, and, well... girl power. During the second hour, the girls went through the Minecraft code exercise, and built code blocks to help their character navigate through the Minecraft world.

The girls all received student discount cards and earbuds. Swag is always good!

For me, the rewarding part was after the event, when I got to listen to my daughters ramble on about how valuable they thought the event was. My older daughter walked away with a better appreciation for what coding actually is. My younger one though: She's ready to Do Something Great. And if it weren't for this being a school night, she'd already be working on another Hour of Code.

Thanks to Microsoft (and the Bethesda, MD Microsoft Store for sponsoring this event. If you have kids, seriously consider the Hour of Code events. And if your kids are girls, DigiGirlz is a great option as well.

And thanks to my daughters who spent some geek time with me this evening.

PS - My son wasn't left out of the mix: I'm taking him to a coding competition tomorrow.

Global Azure Bootcamp 2016: Redmond edition

Global Azure Bootcamp 2016: Redmond edition

I had the honor of presenting a session during the 2016 Global Azure Bootcamp, a worldwide event held in 162 confirmed locations. The individual events at each location are typically run by Microsoft MVPs and community leaders.

This year, I gave a talk in Redmond, on the Microsoft campus. Coincidentally, the event took place in the same building my team works out of. This event was run by Manesh Raveendran, a Microsoft Azure MVP. Feel free to say hi to Manesh on Twitter at @ManeshRavendran.

Bootcamp audience I may have snuck up behind another presenter to grab this pic...

About 30-40 attendees participated, and we had a content-packed agenda, along with afternoon hands-on labs.


For my session, I spoke about the concept of polyglot persistence, the idea of using multiple databases within an app, taking advantage of each database's core strengths. This talk included overviews and demos of each core non-relational database type: key/value, document, column, and graph.

The demos took advantage of Azure's database-as-a-service (DBaaS) offerings, such as Table Storage, Redis, and DocumentDB. I also demo'd DataStax Cassandra, as this is a certified offering in the Azure Marketplace which rolls out an entire Cassandra cluster automatically. For the graph database, I demo'd with Neo4j in a VM, but also showed two hosting partners (Graph Story and GrapheneDB). The talk wrapped up with a walkthrough of a hypothetical storefront, and we dreamed up best-fit suggestions for shopping cart, product descriptions, order history, product suggestions, and website logging/telemetry.

All of the talk materials are on my Github repo, github.com/dmakogon/globalazure2016.

A big THANK YOU to Manesh for offering a speaking slot, and to the super-awesome audience who didn't get stressed when I threw stress balls at them. And thanks to Andrew Liu (@aliuy8) of the DocumentDB engineering team, for letting me know about the event.

If you haven't been to a Global Azure Bootcamp before, I highly recommend them - same time, next year. And if one isn't in your area, feel free to step up and volunteer to organize one!

//build/ session: JSON Document modeling

//build/ session: JSON Document modeling

Ryan CrawCour and I recorded a fun session for //build/ 2016:

Modeling Data for NoSQL Document Databases

Document databases are non-relational databases that store data as collections of JSON documents, such as:

   "id": "P468",
   "title": "Modeling Data for NoSQL Document Databases",
   "speakers": [
      {"name": "David Makogon"},
      {"name": "Ryan CrawCour"}
   "synopsis": "...",
   "tags": ["data"],
   "level": 200

If you hail from the relational database world, this type of embedded, denormalized document might seem a bit jarring!

Turns out: There's quite a bit to consider when modeling documents, especially when the intent is to store and query them in a database. For example:

  • Embedding vs referencing (yep, you can still reference data in other documents)
  • Normalization vs denormalization
  • Homogeneous vs heterogeneous data

In this short (30 minute) talk, Ryan and I dive into these specific challenges. We also walk through some real-world use cases we've helped our partners solve, such as:

  • Hierarchical data
  • Keyword / tag searching
  • Telemetry
  • Logging