Sun, 16 February 2020
Jamie from https://dotnetcore.show/ and Allen, ya know, from Coding Blocks, sat down together at NDC London to talk about the hot topics from the conference as well as how to get the most out of any conference you attend.
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/episode126 where you can join in on the conversation.
- 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.
How to get the most out of a Conference
- If the conference has an app - I highly recommend downloading it - typically latest breaking changes to venue, rooms, talks, etc. will be in the app
- Attend talks that are outside your immediate realm of knowledge - get exposed to new things, new ideas, new ways of thinking
- Walk away with fewer "unknown unknowns" and gain some more "known unknowns"
- Provides you with things to search when you get back from the conference
- Picking the talks you want to attend
- Sometimes you have to sacrifice bigger names just to attend talks that may pique your interest
- Know that what you're seeing on stage for an hour was probably weeks worth of effort to make it go off without a hitch - so when you try to replicate these things at home, don't lose hope when your try isn't as smooth as what you saw on stage
- This next bit goes for Meetups, Conferences, etc - Get involved in conversations - don't just sit on the sideline - many developers are introverts, but to truly get the most out of a conference you want to have some meaningful discussions
- Pacman effect - leave a gap when you're standing in a group having a conversation
- Take advantage of eating times - find a table with an open spot and don't pick up your phone!!! Say good morning or good afternoon! "What's been your favorite talk today?"
- When it's "drinking time", talk to people. If you're not a drinker, grab a water or a soda and join in on the conversation
- Try and reach out BEFORE the conference online - Twitter, Facebook, Slack, etc - try and find out who all is going to be attending and try to make a point to meet up at the event! Makes things much less awkward when you've planned a meeting rather than just shouldering your way in.
- Be a wingman/wingwoman or bring one along - help introduce people to your ring of contacts'
- Maybe sign up to be a speaker at one of these things! If you watch the other folks giving presentations, you'll see they're regular people just sharing the things they're passionate about
- The big names in the industry became big names because they took that first step - you don't become a big name overnight
Notes from some of the Talks
- Machine Learning - we as developers need to take much more care in what we release to the world
- A number of talks / discussion panels revolved around this topic
- Even with good intentions, you can make something that has consequences that aren't easy to see
- Knowing your data intimately is the key to everything - but, you need to have different perspectives on the data - it'd be really easy to get laser focused on what you think makes for a good set of data for a model, and miss the pieces that actually provide the best model
- Microsoft's ethical approach to AI - AI Principles
- Cities with most camera coverage? Looks like Allen got it wrong - London isn't in the first spot anymore, but they're still top 10!
Favorite part of the conference?
"Why go if you can just watch the videos?"
- Interacting with people
- Thanking the people who make an impact on your daily life
It's not "Steve Ardalis" as Allen said - it's Steve Smith, better known as @Ardalis online!
Twitter: @ardalis [https://twitter.com/ardalis]
App Center - DevOps Pipeline for Mobile
Zac Braddy / Jamie Taylor plan to launch a new podcast!
Jamie doesn't care about tabs or spaces...what?!?!
He also has other podcasts in the work, but they're on hold at the moment...stay tuned!
Direct download: coding-blocks-episode-126.mp3
-- posted at: 8:29pm EDT
Sun, 2 February 2020
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.
- 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.
- 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)
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.
- 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:
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)
Direct download: coding-blocks-episode-125.mp3
-- posted at: 11:35pm EDT