Coding Blocks

Coding Blocks

The world of computer programming is vast in scope. There are literally thousands of topics to cover and no one person could ever reach them all. One of the goals of the Coding Blocks podcast is to introduce a number of these topics to the audience so they can learn during their commute or while cutting the grass. We will cover topics such as best programming practices, design patterns, coding for performance, object oriented coding, database design and implementation, tips, tricks and a whole lot of other things. You'll be exposed to broad areas of information as well as deep dives into the guts of a programming language. While Microsoft.NET is the development platform we're using, most topics discussed are relevant in any number of Object Oriented programming languages. We are all web and database programmers and will be providing useful information on a full spectrum of technologies and are open to any suggestions anyone might have for a topic. So please join us, subscribe, and invite your computer programming friends to come along for the ride.... Show More

We dive into declarative vs imperative query languages as we continue to dive into Designing Data-Intensive Applications while Allen is gallivanting around London, Michael had a bullish opinion, and Joe might not know about The Witcher.

If you’re reading this episodes show notes via your podcast player, you can find this episode’s full show notes at https://www.codingblocks.net/episode125 where you can join in on the conversation.

Sponsors
  • Datadog – Sign up today at codingblocks.net/datadog for a free 14 day trial and get a free Datadog t-shirt after creating your first dashboard. Read Datadog’s new State of Serverless research report that breaks down the state of Serverless, with a detailed look at AWS Lambda usage.
  • Educative.io – Level up your coding skills, quickly and efficiently. Visit educative.io/codingblocks to get 10% off any course or annual subscription.
  • Clubhouse – The fast and enjoyable project management platform that breaks down silos and brings teams together to ship value, not features. Sign up to get two additional free months of Clubhouse on any paid plan by visiting clubhouse.io/codingblocks.
  • Survey Says How do you pronounce data?

    Take the survey at: https://www.codingblocks.net/episode125.

    News
  • We thank everyone that left us some great reviews:
  • iTunes: 3divint, RyansWorld23
  • Stitcher: Thomasvc, thew_s_witcher4, DaveTheShirt, Yarpskendaya
  • Get your shin kicking shoes on and sign up for the South Florida Software Developers Conference 2020, February 29th, where Joe will be giving his talk, Streaming Architectures by Example. (fladotnet.com)
  • Come meet us at the 15th annual Orlando Code Camp & Tech Conference, March 28th. Grab some swag and kick us in the shins. (orlandocodecamp.com)
  • Query Languages Declarative vs Imperative
  • The relational model introduced a declarative query language: SQL.
  • Prior models used imperative code.
  • An imperative language performs certain operations in a certain order, i.e. do this, then do that.
  • With a declarative query language, you specify the pattern of data you want, the conditions that must be met, any sorting, grouping, etc.
  • Note that you don’t specify how to retrieve the data. That is left to the optimizer to figure out.
  • Declarative languages are attractive because they are shorter and easier to work with.
  • Consider UI frameworks where you declaratively describe the UI without needing to write code that actually draws a button of a specific size in a specific place with a specific label, etc.
  • Additionally, declarative languages hide the implementation details.
  • This means it’s easier to continue using the code as the underlying engine is updated, be it a database, UI framework, etc.
  • This also means that the declarative code can take advantage of performance enhancements with little to no change (often) to the declarative code.
  • Because declarative languages only specify the result, instead of how to get the result, they are often more likely to be able to take advantage of parallel execution.
  • Conversely, because imperative code needs to happen in a specific order, it’s more difficult to parallelize.
  • MapReduce
  • Made popular by Google, MapReduce is a programming model meant for processing large amounts of data in bulk in a horizontally distributed fashion.
  • Some NoSQL databases, such as MongoDB and CouchDB, support MapReduce in a limited form as a way to perform read-only queries across many documents.
  • MapReduce isn’t a declarative query language but it’s also not completely an imperative query API either.
  • This is because to use it, you’re implementing the Template Pattern (episode 16).
  • With MapReduce, you implement two methods: map() and reduce().
  • The map() and reduce() functions are pure functions.
  • They can only use the data passed into them, they can’t perform additional queries, and they must not have side effects.
  • Pure functions are a concept used in functional programming.
  • From a usability perspective though, it does require writing two functions that are somewhat tied to each other, which may be more effort than just writing a single SQL query.
  • Plus a purely declarative SQL query is better able to take advantage of the optimizer.
  • For this reason, MongoDB added a declarative query language called the aggregation pipeline to wrap the MapReduce functionality.
  • It’s expessiveness is similar to a subset of SQL but in a JSON syntax.
  • Graph-Like Data Models
  • Relationships, particularly many-to-many, are an important feature for distinguishing between when to use which data model.
  • As relationships get even more complicated, graph models start to feel more natural.
  • Where as document databases have documents, and relational databases have tables, rows, and columns, graph databases have:
  • Vertices: Nodes in the graph
  • Edges: Define the relationships between nodes, and can contain data about those relationships.
  • Examples of graph-like data:
  • Social graphs: Vertices are the entities (people, media, articles), and edges are the relationships (friends with, likes, etc.)
  • Web graph: Vertices are the pages, and edges are the links.
  • Maps: Addresses are the vertices, and roads, rails, sidewalks are the edges.
  • There are some things that are trivial to express in a graph query that are really hard any other way.
  • For example, fetch the top 10 people that are friends with my friends, but not friends with me, and liked pages that I like sorted by the count of our common interests.
  • These queries work just like graph algorithms, you define how the graph is traversed.
  • Graph databases tend to be highly flexible since you can keep adding new vertices and nodes without changing any other relationships.
  • This makes graphs great for evolvability.
  • Resources We Like
  • Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppmann (Amazon)
  • Grokking the System Design Interview (Educative.io)
  • Design Patterns Part 2 – Oh behave! (episode 16)
  • Developer Survey Results 2019 (Stack Overflow)
  • Graph Algorithms (episode 85)
  • CloudSQL with Amy Krishnamohan (gcppodcast.com)
  • Tip of the Week
  • Is there an equivalent of tail -f on Windows? (Stack Overflow)
  • Recursively find files whose content matches a regex pattern and display the first 10 lines for context:
  • Get-ChildItem .\*.txt -Recurse | Select-String -Pattern 'MyPattern' -context 10,0

  • Use the Microsoft Application Inspector to identify and surface well-known features and other interesting characteristics of a component’s source code to determine what it is and/or what it does. (GitHub)
  • Automatically silence those pesky, or worse: embarrassing, notifications while screensharing on your Mac. (Muzzle)
  • Share
    Mark as Played

    Chat About Coding Blocks

    Popular Podcasts

    Commencement: Speeches For The Class of 2020
    Commencement: Speeches For The Class of 2020
    iHeartRadio knows how important the graduation ceremony is. After four long years of hard work, commencement offers one last moment to reflect before you toss your hat into the air and take on the world. We know that during these difficult times, most graduates won’t get to attend their ceremony in person. So, we've partnered with some of the biggest names across industries, to write a commencement speech just for you. From 4-star generals to all-star comedians, legendary coaches to John Legend himself, these are the words we hope will inspire you. Thank you to DORITOS® , State Farm® , T-Mobile and the 2020 Census.
    Stuff You Should Know
    Stuff You Should Know
    If you've ever wanted to know about champagne, satanism, the Stonewall Uprising, chaos theory, LSD, El Nino, true crime and Rosa Parks then look no further. Josh and Chuck have you covered.
    The Breakfast Club
    The Breakfast Club
    The World's Most Dangerous Morning Show, The Breakfast Club, With DJ Envy, Angela Yee And Charlamagne Tha God!