Coding Blocks

We take a deep dive into the various forms of duplication and jump aboard the complain train as Allen complains about Confluent's documentation, Michael complains about Docker's documentation, and Joe complains about curl.

Direct download: coding-blocks-episode-106.mp3
Category:Software Development -- posted at: 11:01pm EDT

We begin our journey into the wisdom of The Pragmatic Programmer, which as Joe puts it, it's less about type-y type-y and more about think-y think-y, while Allen is not quite as pessimistic as Joe, and Michael can't wait to say his smart words.

Direct download: coding-blocks-episode-105.mp3
Category:Software Development -- posted at: 8:01pm EDT

We dig into the nitty gritty details of what a Progressive Web App (PWA) is and why you should care, while Allen isn't sure if he is recording, Michael was the only one prepared to talk about Flo and the Progressive Price Gun, and Joe has to get his headphones.

Direct download: coding-blocks-episode-104.mp3
Category:Software Development -- posted at: 8:01pm EDT

The Date deep dive continues as we focus in on C# and JavaScript, while Michael reminisces about the fluorescent crayons, Joe needs a new tip of the week, and Allen confuses time zones.

Direct download: coding-blocks-episode-103.mp3
Category:Software Development -- posted at: 10:26pm EDT

We take a deep dive into understanding why all Date-s are not created equal while learning that Joe is not a fan of months, King Kong has nothing on Allen, and Michael still uses GETDATE. Oops.

Direct download: coding-blocks-episode-102.mp3
Category:Software Development -- posted at: 11:35pm EDT

After being asked to quiet down, our friend, John Stone, joins us again as we move the conversation to the nearest cubicle while Michael reminds us of Bing, Joe regrets getting a cellphone, and Allen's accent might surprise you.

Direct download: coding-blocks-episode-101.mp3
Category:Software Development -- posted at: 8:23pm EDT

We gather around the water cooler to celebrate our 100th episode with our friend John Stone for some random developer discussions as Michael goes off script, Joe needs his techno while coding, and Allen sings some sweet sounds.

Direct download: coding-blocks-episode-100.mp3
Category:Software Development -- posted at: 8:01pm EDT

We learn all about JAMstack in real-time as Michael lowers the bar with new jokes, Allen submits a pull request, and Joe still owes us a tattoo.

Direct download: coding-blocks-episode-99.mp3
Category:Software Development -- posted at: 8:01pm EDT

We dig into heaps and tries as Allen gives us an up to date movie review while Joe and Michael compare how the bands measure up.

Direct download: coding-blocks-episode-98.mp3
Category:Software Development -- posted at: 1:16am EDT

We ring in 2019 with a discussion of various trees as Allen questions when should you abstract while Michael and Joe introduce us to the Groot Tree.

Direct download: coding-blocks-episode-97.mp3
Category:Software Development -- posted at: 7:40pm EDT

Just in time to help you spread some cheer this holiday season, the dad jokes are back as we dig into the details of hash tables and dictionaries.

Direct download: coding-blocks-episode-96.mp3
Category:Software Development -- posted at: 10:58pm EDT

We continue our deep dive into data structures, this time focusing in on arrays and array-like types as Allen gives Shania Twain some singing competition, Joe is going to owe us another tattoo, and wait ... when does Michael think C++ was invented?

Direct download: coding-blocks-episode-95.mp3
Category:Software Development -- posted at: 10:55pm EDT

We begin our journey into data structures by taking a deep dive into primitives while Allen makes Michael blush and Joe crashes his browser.

Direct download: coding-blocks-episode-94.mp3
Category:Software Development -- posted at: 10:10pm EDT

With the holiday season soon approaching, we address the most important requirements list of all ... our wish lists as Joe has to disclose a cheese powder incident, Michael hopes his Bitcoin gains some value, and Allen researches his purchases to the extreme.

Direct download: coding-blocks-episode-93.mp3
Category:Software Development -- posted at: 9:43pm EDT

This is a special collaboration featuring John Calloway of The Six Figure Developer and our own Allen Underwood. The episode was recorded out at Microsoft Ignite 2018, and features talk about the future of cloudy infrastructures with a particular focus on Azure Functions and Azure Cosmos DB.

Direct download: coding-blocks-episode-92.mp3
Category:Software Development -- posted at: 8:12pm EDT

We continue our dive into how to learn things while Michael's voice sounds an awful lot like Joe's, Joe says it's a square, and Allen says it's as triangle ... oh, and Google Feud is back!

Direct download: coding-blocks-episode-91.mp3
Category:Software Development -- posted at: 9:14pm EDT

We have some fun with our names, get ahead of ourselves during Survey Says, and vet Michael's tip on-air as we take a deep dive into comparing some popular Git workflows and when should we use which.

Direct download: coding-blocks-episode-90.mp3
Category:Software Development -- posted at: 8:51pm EDT

We wrap up our conversation on complexity and play some more over/under as Allen thinks learning is backwards, Michael doesn't write clean code, and Joe brings his dog to the discussion.

Direct download: coding-blocks-episode-89.mp3
Category:Software Development -- posted at: 8:59pm EDT

We continue our dive into Rob Conery's The Imposter's Handbook as Allen is Allen, Joe is Michael, Michael is Joe.

Direct download: coding-blocks-episode-88.mp3
Category:Software Development -- posted at: 8:51pm EDT

Joe's voice sounds funny, Allen has a theme, and Michael pours one out for Media Play as Michael's and Allen's impersonation of Joe is on point (#NailedIt).

Direct download: coding-blocks-episode-87.mp3
Category:Software Development -- posted at: 9:50pm EDT

We meet up around the water cooler for a quick round of lightning talks as Allen and Michael sing FizzBuzz while Joe passes the caching buck.

Direct download: coding-blocks-episode-86.mp3
Category:Software Development -- posted at: 10:52pm EDT

We continue digging into Rob Conery's The Imposter's Handbook as Joe explains Florida time, Allen likes greedy algorithms, and Michael shares his geography knowledge.

Direct download: coding-blocks-episode-85.mp3
Category:Software Development -- posted at: 11:40pm EDT

It's time we discuss algorithms we all need to know as we continue diving into Rob Conery's The Imposter's Handbook while Michael will read anything, Allen questions Greenland's name, and Joe talks wormholes.

Direct download: coding-blocks-episode-84.mp3
Category:Software Development -- posted at: 11:34pm EDT

We're talking databases, indexes, search engines, and why they're basically microwaves in this episode while Joe wears a polo, Allen's quick brown fox jumps over whatever, and Michael gives out fake URLs.

Direct download: coding-blocks-episode-83.mp3
Category:Software Development -- posted at: 9:20pm EDT

Inspired by Rob Conery's The Imposter's Handbook, we take an introspective look at ourselves to find two weaknesses and one strength while Allen shows off his vocal prowess in song, Joe needs a list, and Michael is a dash.

Direct download: coding-blocks-episode-82.mp3
Category:Software Development -- posted at: 1:49pm EDT

This episode we talk complexity theory while digging into Rob Conery's The Imposter's Handbook as Allen channels his inner Austin Powers, Michael finds linearly to complex to pronounce, and Joe ruins Batman for the rest of us.

Direct download: coding-blocks-episode-81.mp3
Category:Software Development -- posted at: 10:09pm EDT

This episode we're talking about server naming conventions, confusing command line arguments, and how high we can get our voices. Huge thanks to the NSA and the freedom of information act for making this episode possible.

Direct download: codingblocks-episode-080.mp3
Category:Software Development -- posted at: 10:07pm EDT

This week we're talking about some software anti-patterns, and the kinds of maintenance problems that arise from them. There are some anti-patterns we're very familiar with, and some we aren't so familiar with.

Direct download: codingblocks-episode-079-64.mp3
Category:Software Development -- posted at: 8:00pm EDT

It's time for more cowbell as we have a special guest in the studio, Will Madison (@IAmWillMadison), join us as Allen finally gets tripped up trying to pronounce a name, Joe teaches us the value of practice, and Michael evacuates in a rainbow colored straight line.

Direct download: coding-blocks-episode-78.mp3
Category:Software Development -- posted at: 10:49pm EDT

We're back with our last deep dive into Robert C. Martin's latest book, Clean Architecture, while Allen suffers from sleep deprivation, Joe shows us his dance moves, and Michael's mind is blown on how to unit test.

Direct download: coding-blocks-episode-77.mp3
Category:Software Development -- posted at: 10:15pm EDT

It's time for another deep dive into Robert C. Martin's Clean Architecture as Joe puts us on the spot, Allen has a new mission, and Michael shares his Easter eggs.

Direct download: coding-blocks-episode-76.mp3
Category:Software Development -- posted at: 10:32pm EDT

Michael can't tell higher from lower, Allen puts his views where he wants them, and Joe snaps it to a Slim Jim as we discuss how to make our architectures scream while discussing Robert C. Martin's Clean Architecture.

Direct download: coding-blocks-episode-75.mp3
Category:Software Development -- posted at: 7:08pm EDT

It's time for another deep dive into Robert C. Martin's Clean Architecture as Allen warns us about driving in front of him, Joe tries to describe a diagram again, and Michael can't understand the survey results.

Direct download: coding-blocks-episode-74.mp3
Category:Software Development -- posted at: 7:56pm EDT

Joe drinks too much coffee, Allen spits his coffee out, and Michael feels vindicated as the discussions about Robert C. Martin's latest book, Clean Architecture, continues.

Direct download: coding-blocks-episode-73.mp3
Category:Software Development -- posted at: 9:59pm EDT

Joe baits Michael, Michael takes the bait, and Allen lets it happen, as Uncle Bob explains how we can quantify the coupling between our components from his latest book, Clean Architecture.

Direct download: coding-blocks-episode-72.mp3
Category:Software Development -- posted at: 8:28pm EDT

Joe is down with OCP, Michael argues DRY, and Allen deletes our show notes as we dig into Components and Component Cohesion from Robert C. Martin's (aka Uncle Bob) Clean Architecture.

Direct download: coding-blocks-episode-71.mp3
Category:Software Development -- posted at: 9:40pm EDT

We're back with another installment as we challenge ourselves to compare how we'd each spend $2,500 on developer gear as Allen waxes on about the loudest quiet keyboard, Joe teaches us how cheese is made, and Michael puts some neon on his computer.

Direct download: coding-blocks-episode-70.mp3
Category:Software Development -- posted at: 11:52pm EDT

Michael forgets what his favorite part of the show is, Joe makes us wait to learn what his favorite part is, and Allen pronounces it "pair-a-dig-'ems" as we continue our deep dive into Uncle Bob's latest book: Clean Architecture.

Direct download: coding-blocks-episode-69.mp3
Category:Software Development -- posted at: 9:50pm EDT

Joe learns of our harebrained idea, Michael learns of Eisenhower's matrix, and Allen explains polyfills as we begin our dive into Uncle Bob's latest book, Clean Architecture.

Direct download: coding-blocks-episode-68.mp3
Category:Software Development -- posted at: 9:33pm EDT

Allen brings the dad jokes, Michael unplugs, and Joe gets a second wind as we discuss the anti-patterns found in object oriented programming.

Direct download: coding-blocks-episode-67.mp3
Category:Software Development -- posted at: 8:03pm EDT

It's time for another episode as Joe wants to choke a developer, Michael scraps his new social networking platform, and Allen finally learns of dad jokes while we continuing the anti-pattern conversation.

Direct download: coding-blocks-episode-66.mp3
Category:Software Development -- posted at: 8:01pm EDT

We've discussed design patterns too much. Now it's time for some discussion about anti-patterns as Joe has dark visions about robots, Allen has to take sensitivity training, and Michael picks Arial.

Direct download: coding-blocks-episode-65.mp3
Category:Software Development -- posted at: 6:05pm EDT

More Domain Driven Design talk this week: Supple Design, Declarative(ish?) Programming, and Ohio Envy.

Direct download: coding-blocks-episode-64.mp3
Category:Software Development -- posted at: 6:19pm EDT

Know what Joe and Waldo have in common? We can't find either, as this week, it's just Allen and Michael to continue the dive into Domain Driven Design.

Direct download: coding-blocks-episode-63.mp3
Category:Software Development -- posted at: 10:06pm EDT

We're not saying that Michael is Carmen Sandiego. We're just saying that nobody has ever seen them in a room together. And this week, we don't know where in the world either are, as Allen and Joe continue the Domain Driven Design discussion without Michael. Nor Carmen.

Direct download: coding-blocks-episode-62.mp3
Category:Software Development -- posted at: 10:16pm EDT

Stitcher is back and so are we as Michael proves he doesn't have a career as a rapper, Allen can't type on his phone, and Joe tweets with famous authors as we continue our dive into Domain Driven Design talking about aggregate roots, factories, and repositories.

Direct download: coding-blocks-episode-61.mp3
Category:Software Development -- posted at: 11:10pm EDT

We continue our Domain Driven Design conversation this week as Allen is indecisive, Michael decides for him, and Joe can't handle the night life.

Direct download: coding-blocks-episode-60.mp3
Category:Software Development -- posted at: 12:21am EDT

We're back with another exciting episode as Michael questions Hollywood, Allen dreams of his Hackintosh, and Joe is surrounded by Star Wars as we talk about how to jumpstart your next app with Michael Crump (@mbcrump) and Clint Rutkas (@clintrutkas).

Direct download: coding-blocks-episode-59.mp3
Category:Software Development -- posted at: 1:39pm EDT

This week, Michael asks his customers about their anemic domain model, Allen talks in front of people, and Joe plays Rocket League as we begin our dive into understanding domain driven design.

Direct download: coding-blocks-episode-58.mp3
Category:Software Development -- posted at: 8:43pm EDT

This week we talk about all of the bad things we've done while making software. The good, the bad, ... oh wait, it compiles, never mind.

Direct download: coding-blocks-episode-57.mp3
Category:Software Development -- posted at: 11:12pm EDT

We're back with another deep dive into the infamous book Clean Code by Uncle Bob as Joe alters columns, Michael misreads things, and Allen has a positive customer service experience.

Direct download: coding-blocks-episode-56.mp3
Category:Software Development -- posted at: 7:54pm EDT

This week Allen is troubled by circles, Michael talks like a game show host, and Joe announces it's twins as we continue our deep dive into the classic Clean Code book by Robert C. Martin.

Direct download: coding-blocks-episode-55.mp3
Category:Software Development -- posted at: 4:58pm EDT

When and why should you write unit tests, and just how important are they? Take a listen and see what YOU think.

For the full show notes visit:
http://www.codingblocks.net/episode54

Direct download: coding-blocks-episode-054.mp3
Category:Software Development -- posted at: 7:02pm EDT

Clean Code - Integrating with Third Party Libraries the Right Way

For the full show notes visit:

http://www.codingblocks.net/episode53

Direct download: coding-blocks-episode-053.mp3
Category:general -- posted at: 4:37pm EDT

This week, we continue our Clean Code discussion as we dive into the joys and pains of error handing.

Direct download: coding-blocks-episode-52.mp3
Category:Software Development -- posted at: 9:30pm EDT

Direct download: coding-blocks-episode-051.mp3
Category:general -- posted at: 10:06pm EDT

Clean Code - Formatting Matters

For the full show notes visit:
http://www.codingblocks.net/episode50

News

  • Husain and Mike - Check your email!
  • Shout out to AngryZoot! We just haven’t mentioned her in a while, and she’s awesome - and does martial arts
  • Cynical Developer - James Studdart - Cake, XAML, React (Zac Braddy)
  • Mark McDow - Winner of the O’Reilly Software Architecture Convention - $1700
  • Maurizio Pozzobon - Code Maid retraction
  • O’Reilly discount code - 50% off print, 40% off e-books! (Soft Skills - JavaScript: The Good Parts)

So - you should probably follow us on twitter, or join the mailing list!

Michael attended DevFest 2016 - Google Developer Group
http://www.gdgatl.xyz/

Secret Back Door in Some U.S. Phones Sent Data to China, Analysts Say
http://www.nytimes.com/2016/11/16/us/politics/china-phones-software-security.html

Allen attended MVP Summit - amazing

Reply All - Pepe the Frog
https://gimletmedia.com/episode/77-the-grand-tapestry-of-pepe/

Want a Coding Blocks sticker?
Send us a Self-Addressed-Stamped-Envelope

Clean Code - Drawing!
Oddvar Tengesdal won a copy of Clean Code!

Programming Beyond Practices
http://shop.oreilly.com/product/0636920047391.do

Survey

[yop_poll id="26"]

Formatting

  • If your code is a mess, then people will assume that your attention to detail in how the app was coded is also a mess - perception
  • Teams should adopt formatting rules and follow them
  • Automated tools help with the process
  • “Code formatting is important”
  • Code formatting has a direct affect on maintainability and extensibility of code over time

Vertical Formatting

  • Try to keep max length around 500 lines long and smaller is better - FitNesse app is in this range
  • Tomcat and Ant - several thousand lines long and at least half are over 200
  • Newspaper metaphor - read it vertically - headlines at the top detail increases as we go down the page
  • Separate concepts with blank lines
  • Closely associated code should be grouped together so it’s dense
  • Concepts (methods) that are closely related should be grouped as closely together as possible to keep from hunting through files
  • Variable declarations should be as close to their usage as possible
  • If the methods are short, then the variable declarations should be at the top of the function!
  • Control variables for loop should be defined within the loop
  • Instance variables should be declared at the top of a class
  • When one function calls another, those should be close vertically in the file
  • Conceptual affinity - when methods do similar things or are named similarly, they should also appear close to each other
  • Vertical ordering of methods - the caller should be first, then the callee, and that method’s callee, etc…on down the page

New Survey
New Macbooks
- Death of Macbook Pro?
- The beginning of a new awesome era?

Horizontal Formatting

  • How wide should a line be?!
  • In the popular projects examined, it appeared that 40% of lines were between 20 and 60 characters
  • Another 30% of lines were less than 10 characters…
  • Author suggests that beyond 100-120 is careless
  • Put spaces on both sides of an assignment operator (equals sign)
  • Don’t put spaces between the function name and the parens
  • DO put spaces after individual arguments / parameters in a list - shows they are separate
  • Also use spacing to indicate the precedence of operations - think of spacing in math equations with several parentheses - author calls it out for order of precedence, I actually don’t like this one - I prefer grouping with parens
  • Lining up variable declarations, names, types - found that it was distracting to the “story” of the code….I agree
  • Hierarchically lining up code based on it’s scope - super important
  • Author would sometimes condense multiple lines into one (like a get; set;) eventually set it back for readability (breaking indentation)
  • What about for PRINT statements in SQL???
    while statements - indent the semicolon on the next line…otherwise they’re hidden
  • Follow the team’s formatting rules…don’t go vigilante
  • He threw in Uncle Bob’s formatting rules

Resources we Like

Clean Code
Clean Code

Tip of the Week

Direct download: coding-blocks-episode-050.mp3
Category:general -- posted at: 11:59pm EDT

This week, Michael fails geography, Allen introduces us to Croom, and Joe has to potty as we head into our third installment of the Clean Code series.

Direct download: coding-blocks-episode-49.mp3
Category:Software Development -- posted at: 8:04pm EDT

We continue talking our way through Clean Code, taking a deep look at the building blocks of programming in the quest to write the best functions. Oh, and everybody sings.

The original version of the show notes can be found at:
http://www.codingblocks.net/episode48

Direct download: coding-blocks-episode-048.mp3
Category:programming -- posted at: 8:40pm EDT

Clean Code - Writing Meaningful Names

In this episode, we take our first dive into the book Clean Code by Robert Martin and specifically we talk about writing meaningful names for all things code related.  You'll be amazed at how following some decent rules that you can start naming things that will help you and fellow coders understand your code at a glance.

Clean Code - Writing Meaningful Names

You can see the original show notes and put your own stamp on our survey here:
http://www.codingblocks.net/episode47

News

Samsung 960 Pro
http://www.anandtech.com/show/10698/samsung-announces-960-pro-and-960-evo-m2-pcie-ssds

SQL Server 2016 Columnstore for real time operational analytics
https://msdn.microsoft.com/en-us/library/dn817827.aspx

Krebs site taken off Akamai
http://www.zdnet.com/article/krebs-on-security-booted-off-akamai-network-after-ddos-attack-proves-pricey/

The best Android distribution is iOS?
Outlaw’s thoughts on various phone OS’s

Survey

[yop_poll id="23"]

Meaningful Names - Clean Code Chapter 2

“If a name requires a comment, then the name does not reveal its intent”

  • Write explicit code - naming variables and methods can reveal the entire intent of the code
  • Avoid using words that would be confusing like “List” as they refer to programming types and could be misleading : accountList should be accounts
  • Avoid using characters that look like numbers i and L or capital o
  • disinformative vs noninformative
    • noise words “data” “info” - noninformative
  • Types should almost never be in a name “table” “string” “object”
  • Names should be distinguished so a user can look at them and understand the differences
  • Use pronounceable names
  • Use searcheable names - longer names trump shorter names
  • Author’s pref - single letter names should only be used as local variables inside small methods - length of the name should correspond to the size of its scope
  • Avoid encoding names
  • Avoid Hungarian Notation with typing as part of the variable name - simply not needed nowadays
  • Stop prefixing member (instance) variables with m_ or _
  • Decorating Interfaces vs Classes with a prefix / suffix - opinion - he prefers
    • ClassImp or vs IType
  • Don’t force someone to map variable names in their mind - n = username…smart programmer vs professional programmer - clarity is king
  • Class names should be nouns - English 101 - NOT VERBS
  • Method names should be verbs
  • Use get, set, is - javabean standard
  • When constructors are overloaded, use static factory methods with explicit names - liked this one, possibly make the constructors private
  • Don’t get cute with naming by means of jokes (inside or well known)
  • Use consistent naming - Get, Set, Controller - makes it easier to understand and code various parts of an application
  • Avoid puns - add for a collection vs add for setting a value - two different meanings with the same name
  • Use technical names such as pattern names or CS terms in your names - other programmers will understand them better than the problem domain in some cases
  • Fall back to the problem domain for a name if there is no suitable technical name
  • Adding context to naming can clarify their use - prefixes can work but putting variables into classes may work out better

“Hardest thing about choosing good names is that it requires good descriptive skills and a shared cultural background”

Renaming things that don’t make sense as you work in code is a good thing.

Resources we Like

Clean Code

Clean Code by Robert C. Martin

Even though we’re giving our thoughts on the various ideas throughout the book, Clean Code has tons of excellent sample code that really helps drive the points home. We can’t recommend it enough - it’s probably one of the few books EVERY developer should read and revisit from time to time.
http://amzn.to/2cryvJR

Tip of the Week

Allen: Implementing OAuth in ASP.NET for a number of providers
http://www.oauthforaspnet.com/

Michael: Get out there! Go to conferences, meetups, do it all!
http://www.connect.tech/
https://www.atlantacodecamp.com/2016

Direct download: coding-blocks-episode-047-mono.mp3
Category:general -- posted at: 10:05pm EDT

Storing smaller subsets of data in a faster, closer memory can make astronomical differences in performance. This episode we're talking about the caching tools and techniques that application frameworks provide.

The original version of the shownotes can be found at:
http://www.codingblocks.net/episode46

Direct download: coding-blocks-episode-046.mp3
Category:Software Development -- posted at: 10:42pm EDT

Caching Overview and Hardware

In this episode we give a general overview of caching, where it's used, why it's used, and what the differences in hardware implementations mean in terms we can understand.  This will be foundational to understanding caching at a software level in an upcoming episode.  There's also something about the number 37 that may be the most important number to remember...ever...

Podcast News

You can see all the show notes in their original form by visiting:
http://www.codingblocks.net/episode45

Thanks for your patience, we had a couple of rough audio situations - and we appreciate you sticking with us!

iTunes Reviews
Hedgehog, Thiagoramos.ai, Btn1992, Jonajonlee, UndeadCodemonkey, zmckinnon, hillsidecruzr, Dibjibjub, ddurose

Stitcher Reviews
pchtsp, rafaelh, CK142, TheMiddleMan124, LocalJoost

Clean Code episodes coming soon + book giveaway - Stay Tuned!

Caching: Turtles all the way down

Turtles all the way down???
https://en.wikipedia.org/wiki/Turtles_all_the_way_down

  • Storing a subset of information for faster retrieval
  • The hit ratio dramatically increases as the cache size increases
  • Think about a simple web request…
  • Browser cache
  • DNS cache
  • ISP caching
  • CDN
  • Whatever your application is doing (redis, framework, database, etc)
  • PLUS whatever the various computers are doing

Why don’t we cache everything?

  • Fast is expensive!
  • Cache Invalidation is hard!

Caching at the hardware level

Interactive Cache Visualization
Interactive Cache Visualization

Latency Numbers Every Programmer Should Know
https://gist.github.com/jboner/2841832

Relative Memory Access Interactive Demo
http://www.overbyte.com.au/misc/Lesson3/CacheFun.html

Caching is a strategy that computers use going all the way down to the processor

L1

  • .5ns
  • As quick as a it gets, how long it takes light to travel 6"
  • Managed by the CPU itself, no assembly available!

L2

  • 7ns
  • 14 x slower than L1
  • L3 / L4 / Scratch etc

Main Memory

  • Have numbers for a “reference” and a 1mb sequential read
  • 100ns - 250,000ns
  • 14 - 35,714 x slower than L2
  • 200 - 500,000 x slower than L1

Network

  • Sending is quick, there are numbers for that
  • In general, a lot of variability here
    Same datacenter
  • 500,000 ns
  • 2 x slower than Main Memory
  • 1 million times slower than L1

SSD

  • Wait, network faster than the hd??? Yes, but no
  • 1mb sequential
  • 1 million ns
  • 2 x slower than Network
  • 2 million x slower than L1

Spinning Disk

  • Get your employer to get you an ssd!
  • 1mb sequential read
  • 20 million ns
  • 20 x slower than SSD
  • 40 million x slower than L1

Internet

  • Rough gauge of internet speeds
  • Highly variable (CDN + ISP caching, for example), but gives you a sense of scale
  • 150 million ns
  • 7.5 x slower than spinning disk
  • 300 million times slower than L1

In more relatable terms.

  • 1 second for L1 Cache
  • 5 days for memory
  • 11 days for data center
  • 23 days for SSD
  • 15 months for HD
  • Almost 10 years for internet!

Think about how those numbers cache

  • RAM / Application cache
  • Local Hard drive
  • Network storage
  • Cache Server
  • DB

Summary

Hope we gave you a good idea of the importance and scale of caching in computing at the hardware level

Things we didn’t talk about coming in a future episode:

  • Application / Software caching and caching algorithms

Resources we Like

Latency Numbers Every Programmer Should Know
https://gist.github.com/jboner/2841832

How L1 and L2 caching work
http://www.extremetech.com/extreme/188776-how-l1-and-l2-cpu-caches-work-and-why-theyre-an-essential-part-of-modern-chips

Relative Memory Access Interactive Demo
http://www.overbyte.com.au/misc/Lesson3/CacheFun.html

Miscellaneous

Michael’s Favorite Meetup Ever
The Atlanta JavaScript Meetup
http://www.meetup.com/AtlantaJavaScript/events/222696324/?a=cr1_grp&rv=cr1

Hacking Interviews with:
Nick Larsen - http://cultureofdevelopment.com/
Sam Lawrence - http://www.samelawrence.com/

Tip of the Week

Algorithms to Live By
Algorithms to Live By

Joe: Algorithms to Live By
There's something about the number 37%...
http://amzn.to/2aX1iJk

Michael: Use Sublime to replace \n with an actual new line by turning on RegEx search and replace. Or in Michael’s case, replace
with actual \n\t characters.
http://stackoverflow.com/questions/20515670/replace-n-with-actual-new-line-in-sublime-text

Allen: Collaborative Markdown Editor - What?!
http://www.hackmd.io

 

Direct download: coding-blocks-episode-045.mp3
Category:general -- posted at: 12:39am EDT

This week on Coding Blocks, Allen says www as best he can, Joe eats the microphone, and Michael does something crazy as we discuss Stack Overflow's Salary Calculator and our experiences in landing the job - what to do and what not to do.

Direct download: coding-blocks-episode-44.mp3
Category:general -- posted at: 1:09am EDT

This time we're talking about problems with nulls, stored procedures, and impostor syndrome.

Link to Episode 43’s Full Show Notes:
http://www.codingblocks.net/episode43

Direct download: coding-blocks-episode-043.mp3
Category:general -- posted at: 8:03pm EDT

Command, Repository and Mediator Design Patterns

In this episode we go back to the design pattern well that we've been away from for so long.  We cover the Command, Repository and Mediator design patterns.  It was hard for us to believe, but it's been almost a year since our last design patterns episode!!!  Come on in for fun, learning, and of course, our tips of the week.

See the original show notes at:
http://www.codingblocks.net/epsiode42

Leave us a review here:
http://www.codingblocks.net/review

News

Stitcher Reviews:

Spectre013, Christoffer, Genius, HAM3rtag, joe_recursion_joe, Gearhead2k, Manriquey2k, Mike North, AndrewM, MildManneredCalvin, Freeleeks

iTunes Reviews:

Sid Savara, J. Mair, tonicorb, Nmkel999, Eschwartz20, mochadwi, Banjammin, wisco_cmo, NewZeroRiot, Nate_the_DBA, Pauloispaulo

Joe’s chess game!

Joe on Hello Tech Pros

Software Engineering Radio #256 on Unit Testing

!important is a CSS code smell.

Do you name your IIFEs? You should.

This is our 5th, Design Patterns Episode. Last one was in July 2015.

30: Adapter, Facade, and Memento
19: Iterators, Observers, and Chains
16: Strategy, Template, Null Object
11: Factories, Factory Methods, Builder, Prototype

What type of development do you prefer?

Front-End
Back-End
Full Stack

Design Patterns - Command, Repository, and Mediator

Command Pattern

  • Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undo.
  • It's not "method()" it's "new Object(), and later...object.invoke()
  • Why? Nice, clean way of organizing your code. Especially if….
  • OO replacement for callbacks - meh
    • Specify, queue, execute
    • Undo
    • Transactions/Logging
    • Not mentioned:
      • Macros
      • Async
  • Real World Applications
    • GUI/Menus - copy/paste/undo/photoshop
    • Video Games
      • Age of Empires sent commands rather than the game state!
      • It’s not if("B") { jump(); }, if(input[k]) { input[k].invoke() }
        • Great for different contexts, like menus
    • Parallel / Tasks
      • Async/Await
    • Queues / Multi-Step Wizards
      • Queue up the commands, execute all at once
    • Restaurants????
  • How it’s done:
    • Client: Customer
    • Receiver: Waiter
    • I/Command: Order
    • Invoker: Cook
  • Great example on sourcemaking.com
  • What about callbacks?
  • Why not the observer pattern?
  • Challenge for the listeners, program the command pattern - do it “by the book”

Repository Pattern

Why?

  • Testable with isolated data layer
  • Centrally managed access rules and logic
  • Centralized caching strategy
  • Allows you to separate business logic from data access logic
  • Strongly typed entities
  • Business entity associations
  • Can apply a domain model to simplify business logic
  • Decouple business entity from data storage technology - the repository doesn’t expose where it gets its data

What?

  • Sits between the data source and the business layer
    • Maps data from the data source to an entity
    • Persists changes from the entity back to the data source
      • Can use the Unit of Work pattern for complex, multi-step operations
    • Typically utilizes a Data Mapper Pattern, or an ORM such as Entity Framework in .NET

Mediator Pattern

What is it?

  • The mediator pattern defines an object that encapsulates how a set of objects interact
  • Promotes loose coupling by keeping objects from referring to each other explicitly
  • Promotes the Single Responsibility Principle by allowing communication to be offloaded to a class that handles just that.
  • Similar to the Observer pattern
    • Mediator pattern can be implemented during the observer pattern,
    • The Observer pattern distributes communication by introducing “observer” and “subject” objects.
  • Also similar to the Facade pattern in that it abstracts functionality of the classes.

Examples

  • Chat room
  • Air Traffic Control
  • Button events?

Resources We Like

http://gameprogrammingpatterns.com/
https://msdn.microsoft.com/en-us/library/ff649690.aspx?f=255&MSPPError=-2147217396
https://genericunitofworkandrepositories.codeplex.com/
http://blog.falafel.com/implement-step-step-generic-repository-pattern-c/
http://www.gamasutra.com/view/feature/131503/1500_archers_on_a_288_network_.php
https://sourcemaking.com/design_patterns/command
https://sourcemaking.com/design-patterns-book
http://www.codeproject.com/Articles/526874/Repository-pattern-done-right
https://en.wikipedia.org/wiki/Mediator_pattern
https://sourcemaking.com/design_patterns/mediator
http://programmers.stackexchange.com/questions/134432/mediator-vs-observer

Tips of this Episode

Allen:

Want a JavaScript tip per day?!
http://www.jstips.co/

Bonus!!!  Want tons of cheap stuff?!
App called "Geek" - download it on iOS or Android

Michael:

Use Nunit's TestCaseSource to test objects in your test cases

How to delete/forget about a wireless network in Win8.1

  • netsh wlan show profiles
  • netsh wlan delete profile name="gogoinflight"

SOURCE: http://www.digitalcitizen.life/how-delete-forget-wireless-network-profiles-windows-81

Joe:

Learn a new language! Stretch the brain, learn new concepts and see old concepts in a new light! Scripting, Compiled, Functional - Conway’s Game of Life!

Direct download: coding-blocks-episode-042.mp3
Category:programming -- posted at: 11:49pm EDT

This week on Coding Blocks, Joe changes a different kind of string, Allen drools over the Hellcat, and Michael shares his random thoughts. We span a collection of topics including GraphQL framework envy, bash on Windows, and whether it takes two to Django.

Direct download: coding-blocks-episode-41.mp3
Category:general -- posted at: 10:23pm EDT

Are you an Advanced Programmer? We dig into the final section of Robert Read’s fantastic writing: How to be a programmer. Also, how to cheat at Jira, a lazy butcher and if learning web development is worth it.

Link to Episode 40’s Full Show Notes
http://www.codingblocks.net/episode40

Direct download: coding-blocks-episode-040.mp3
Category:Software Development -- posted at: 9:33pm EDT

How to be an Intermediate Programmer

Link to Episode 39's Full Show Notes
http://www.codingblocks.net/episode39

T-Shirt Giveaway - The winner is...
Manrique Logan - please contact us to send us your ship-to information!

This Episode's Survey
Suggested by: https://twitter.com/CatcheNameHere/status/700507429390274560

Princess rap battle: GALADRIEL vs LEIA
https://www.youtube.com/watch?v=RL52R7m8b7w

How to be an Intermediate Programmer

Personal Skills

Team Skills

Judgement

Resources We Like

How to be a Programmer: A Short, Comprehensive, and Personal Summary by Robert L Read
Make a Pull Request to get your thoughts in here:
https://github.com/RobertLRead/HowToBeAProgrammer
Or buy your copy here from Amazon:
http://amzn.to/1WzbIxs

Succinctness is Power - Paul Graham
http://www.paulgraham.com/power.html

You Don't Know JS
https://github.com/getify/You-Dont-Know-JS/blob/master/README.md

Want to know how fast you type?
http://www.typingtest.com/

Allen's Typing Speed on the Microsoft Sculpt Ergonomic

Microsoft Sculpt Ergonomic Keyboard
Microsoft Sculpt Ergonomic Keyboard

http://www.typingtest.com/result.html?acc=100&nwpm=90&gwpm=90&ncpm=452&gcpm=452&dur=60&time=60&chksum=45213&unit=wpm&kh=998&td=null&err=0&hits=452

specflow - Binding business requirements to .NET code
http://www.specflow.org/

 

Tips for this Episode

Allen Underwood: Execution plan for a running query in Microsoft SQL Server
Preface: You can click a button in Microsoft SQL Server Management Studio (SSMS) to see the execution plan of a query to identify any performance problems.  The biggest issue with this is that if there's a query that NEVER returns, or takes an insanely long time to return, then you're stuck waiting for the query to finish.  This tip shows you how to find the ACTUAL (not estimated) query plan of the query that is actively running:

How To:

EXEC sp_who2 'active' -- Find the SPID of the query you're running

DECLARE @spid INT = 123 -- From above

SELECT EQP.query_plan, *
FROM sys.dm_exec_requests AS ER
   CROSS APPLY sys.dm_exec_query_plan(ER.plan_handle) AS EQP
WHERE ER.session_id = @spid

Once that bottom query runs, you'll be provided a link in the results grid that you can click to open up the graphical execution plan.

Michael Outlaw: Have Git ignore changes you make to a specific file like you didn't make the changes, but still have it be part of the tracked files in Git.
Preface: Let's say you have a connection string configuration file that you change to point to your local database.  That config file needs to be tracked in Git, but you don't want your changes to accidentally get committed and pushed up to the remote repo, then this command is for you.

How To:

git update-index /path/to/file --assume-unchanged

Joe Zack: Life Tip -  Pay attention to the warnings in your IDE.  It's easy to get used to seeing several warnings and ignoring them because they're not errors.  Eventually a new one that actually matters will show up and by ignoring it, you could be creating heartache for yourself.  If you can, resolve the warnings that are currently showing up so that if a new one surfaces, it'll jump out at you like a sore thumb.

Direct download: coding-blocks-episode-039.mp3
Category:programming -- posted at: 5:29pm EDT

Talking about the short book "How to be a Programmer", which covers a huge spectrum of important topics for developers of all levels.

Direct download: coding-blocks-episode-038.mp3
Category:programming -- posted at: 12:36am EDT

Our Favorite Developer Tools for 2015

We wrapped up 2015 with another favorites of 2015.  This go around it's the tools that we feel are invaluable as developers.  This can be anything from hardware, to software or a service that we feel is integral in our daily needs as programmers.  

If you're on mobile, you can visit the show notes page for this episode by going here:
Episode 37 Show Notes

[yop_poll id="12"]

News and Random Discussions

Are static methods a cod / code smell?

Maybe we should go full on OO and use Microtypes?
http://www.michael-snell.com/2015/03/microtyping-in-java-revisited.html

Win the other pre-worn, gently broken in, gray T-Shirt!  Just leave a comment on this episode!

Nicholas wrote back in Ep. 21 - how is the renaming with ReSharper different than the refactoring option in Visual Studio?
http://www.codingblocks.net/podcast/episode-21-our-favorite-tools/#comment-1987021142

Our Favorite Tools

Individual Picks

Number 5 - Last but not least:
Allen: Simple Mind
Description: Mind mapping tool for getting your ideas out in a somewhat organized state.

Main Site: http://www.simpleapps.eu/simplemind/
Android (free): https://play.google.com/store/apps/details?id=com.modelmakertools.simplemindfree
Android (paid): https://play.google.com/store/apps/details?id=com.modelmakertools.simplemindpro
Apple iOS (free): https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=305727658&mt=8
Apple iOS (paid): https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=378174507&mt=8

Michael:  UBlock Origin
Description: An ad-blocking plugin for various browsers that allows your web experience to be much faster and less intrusive by ad-agencies.

Main Site: https://www.ublock.org/
Chrome Plugin: https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm?hl=en
Mozilla Plugin: https://addons.mozilla.org/en-us/firefox/addon/ublock-origin/
Apple iOS: https://itunes.apple.com/us/app/purify-blocker-fast-clutter/id1030156203?ls=1&mt=8

Joe: Gliphy
Description: Workflow diagrams, wireframes, mockups, etc., all online.  Integrates with Atlassian products extremely nicely for wikis, Jira tickets, etc.
Main Site: https://www.gliffy.com/

#4
Allen: Codecademy
Description: Learn how to code for FREE - Interactively!  HTML, CSS, Javascript, Ruby, Python, PHP and more.  Go there...now...

Main Site: https://www.codecademy.com/

Michael: .NET Fiddle
Description: Site that allows you to write your .NET code online in a web browser, similar to JSFiddle, execute and share your code

Main Site: https://dotnetfiddle.net/

Joe: Office 365
Description: There are several subscription options so you'd definitely want to make sure you're picking the one that's right for you.  For personal (one person) use, the cost is (currently either $69.99/year or $6.99/month and you get access to Microsoft Word, Excel, PowerPoint, OneNote, Outlook, Publisher and Access on PC / Mac plus one phone and a tablet.  For family use, you'd probably want to go with the "Home" plan as you get all the same perks as the "Personal" plan times 5 for just $9.99/month or $99.99/year.  So that means you get to install Office on up to 5 PCs or Macs, five tablets, and five phones.  And you also get 1TB of storage per user, for a total of 5TB of cloud storage.

Office 365 Personal (individual user): https://products.office.com/en-us/office-365-personal
Office 365 Home (for 5 users): https://products.office.com/en-us/office-365-home

#3
Allen: Netgear R7000 AC1900
Description: Rock solid, great performing wireless router.

Product Link: http://www.amazon.com/gp/product/B00F0DD0I6/?tag=codingblocks-20

Michael: Hours Tracker
Description: Especially useful for freelancers or consultants, this application allows you to track your hours worked with a ton of features: geofencing, tagging, switching projects, multiple rates, multiple clients.

Main Site: http://www.hourstrackerapp.com/
Apple iOS: https://itunes.apple.com/us/app/hourstracker-time-tracking/id336456412?mt=8&ign-mpt=uo%3D4
Android: https://play.google.com/store/apps/details?id=com.cribasoft.HoursTrackerFree.Android&hl=en

Joe: JQuery Injector
Description: Chrome plugin that allows you to interact programmatically with a web page - basically friendly hacking to achieve things that maybe weren't meant to be achieved.

Main Site: https://chrome.google.com/webstore/detail/jquery-injector/indebdooekgjhkncmgbkeopjebofdoid

#2
Allen: Snagit
Description: For both Mac and PC, this is an excellent utility for taking and marking up your screenshots with some easy to use tools and you can even record your screen which can be saved off in standard video formats that are easily shared.  NOTE: You cannot edit the videos as with a ScreenFlow or a Camtasia, but it's great for quick little recordings for how-to's or to demonstrate problems.

Main Site: https://www.techsmith.com/snagit.html

Michael: Briggs & Riley Verb Backpack
Description: Excellent laptop bag especially for those who travel a lot for their work.  It holds up remarkably well, comes with a Lifetime warranty and is attractive to boot.  This bag has a ton of features that are made to help expedite your trip through airports.

Product Link: http://www.amazon.com/Briggs-Riley-Advance-Backpack-Black/dp/B016JQUYMM/ref=sr_1_3?ie=UTF8&qid=1451846799&sr=8-3&keywords=briggs+and+riley+verb&tag=codingblocks-20
More Information: http://www.briggs-riley.com/shop/collections/verb/advance-backpack-1

Joe: FitBit
Description: Turn your fitness into a bit of a game to help you stay active.  If you've not heard of this company, you're probably living in a box, but Joe definitely stands behind this product as something that motivates him to get his daily activity in.

Product Link: http://www.amazon.com/Fitbit-Wireless-Activity-Sleep-Tracker/dp/B0095PZHPE/ref=sr_1_8?ie=UTF8&qid=1451847290&sr=8-8&keywords=fitbit&tag=codingblocks-20

#1 - Our top individual picks
Allen: MeteorJS
Description: An isomorphic approach to applications.  It's a full stack javascript application framework - write your Server, Client and Middleware in Javascript.  It's so quick and easy to get up and running that it's really not fair to compare it to any other "frameworks" out there.  It's done incredibly well.

Main Site: https://www.meteor.com/

Michael: WebStorm by JetBrains
Description: Web development IDE that has evolved incredibly well with the latest JavaScript frameworks.  It supports many of the latest frameworks, it's cross platform (PC, Mac and Linux), has a ton of useful development features and is relatively speedy.  Also, they've updated their buying options so it starts at $60/year for individuals and is well worth the price of entry.

Product Link: https://www.jetbrains.com/webstorm/

Joe: Spotify
Description: One of the many streaming music services around, but arguably one of the best.  They have a HUGE selection of music.  If you're a subscriber you get access to their higher bit-rate streams for the audiophiles at heart.  As a developer, is there anything more necessary than some tunes to help you tune out everything around you and make some killer progress on your task at hand?

Main Site: https://www.spotify.com/

Group Picks

Number 5: Gulp
Description: A Javascript tool made to enhance and automate your workflow.  Works by piping output to other tasks and is configured by writing simple code pipelines.  Not only that, but there is a rather large library of tasks written for Gulp that can allow you to do most of what you could possibly want.

Main Site: http://gulpjs.com/
Plugin Site: http://gulpjs.com/plugins/

Number 4: NUnit
Description: A unit testing framework for all .NET languages.  Originally a port from JUnit, but has since been rewritten specifically for the .NET framework.  Why we picked this over MSTest - simply put: parameterized tests.

Main Site: http://www.nunit.org/

Number 3: JSFiddle
Description: Similar to Michael's pick for dotnetfiddle, JSFiddle provides you a place online where you can write some Javascript in the browser and share that code with a URL that's created for you.  This is an excellent way to share examples or help others out with working examples of Javascript code.  One of the downsides of JSFiddle is the lack of ability to create multiple files which means it's difficult to show structure along with code samples.

Main Site: https://jsfiddle.net/

Number 2: The Book - Design Patterns: Elements of Reusable Object-Oriented Software 
Description: Still in its first printing, the book includes 23 of the classic design patterns with context as to what the uses are as well as clear code examples.

Product Link: http://www.codingblocks.net/get/gang-of-four-book

Our Consensus Top Pick: Slack
Description: Productivity enhancing as well as time wasting service, Slack is a means of communicating with teams of folks quickly and easily.  Not only is it a great chat platform, it has a ton of useful (and fun) plugins for enhancing your work environment.  An example would be the Visual Studio Online plugin where you can see when a particular branch of code has been updated.  

Main Site: https://slack.com

OUR Slack Channel!  https://codingblocks.slack.com/

Come Join in on the conversation!

Resources We Like

Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software
Product Link: http://amzn.to/1JtdMzR

Tips for this Episode

Allen: ProgrammableWeb.com - Well known public API's for developers
http://www.programmableweb.com/apis/directory

Michael: Find your mouse - for those with too much monitor real estate!
Mac El Capitan - Just shake your mouse around and it shows up nice and big!
PC Windows - Go into your mouse properties in the control panel, and select "Show location of pointer when pressing the control key" - doing this will allow you to locate your mouse by clicking the control key and a ring will radiate from the mouse pointer.

ApexSQL Refactor - format your SQL within Management Studio for SQL Server
http://www.apexsql.com/sql_tools_refactor.aspx

Use the FORCESEEK Luke - Index hint for SQL Server Queries
https://technet.microsoft.com/en-us/library/bb510478(v=sql.105).aspx

Use the Index Luke - SQL Tips and Tricks
http://use-the-index-luke.com/

Joe: Indigo Studio by Infragistics - Rapid prototyping tool - Wireframing on steroids!
http://www.infragistics.com/products/indigo-studio

Has support for different resolutions so you can see how your app behaves.Also has really nice support for behaviors, swiping here navigates, or double clicking changes the page. Much better than getting psd! Also has a timeline so it’s easier to see the relationship between frames automatically
Alternatives:
http://www.justinmind.com/
http://www.axure.com/

Direct download: coding-blocks-episode-037.mp3
Category:tools -- posted at: 5:44pm EDT

Welcome back to the dramatic conclusion of our discussion on the 12 factor app. This time we're talking dev/prod parity, logs, and admin processes. Oh, and Call of Duty!

Direct download: coding-blocks-episode-36.mp3
Category:programming -- posted at: 1:41pm EDT

It's time for more DevOps fun as we continue learning about the Twelve-Factor app. This week we dive into the next three chapters: port binding, concurrency, and disposability.

Direct download: coding-blocks-episode-35.mp3
Category:general -- posted at: 11:57pm EDT

The holidays are coming sooner than we realized, so we gotta get our wish lists together. After all, no one wants to sit around the Festivus Pole without their favorite dev toys. This week we discuss some of the toys we love, as well as the ones we drool over, and even the ones we're not so crazy about.

Direct download: coding-blocks-episode-34.mp3
Category:general -- posted at: 9:39pm EDT

The Twelve-Factor App: Backing Services, Building and Releasing, Stateless Processes

 

Surveys – Wow we forget about them and ramble...sorry guys!

 

Mark Tinsley – PHP Composer – thanks for the tip!
https://getcomposer.org/

 

Joe made a game in Javascript (using dozens of libraries):

Box Pusher! (game name of the year)
https://github.com/THEjoezack/BoxPusher

 

Allen's cry for writing black-boxed, encapsulated code...
Episode on Encapsulation: http://www.codingblocks.net/episode23

Episode on SOLID Design: http://www.codingblocks.net/episode7

 

Probably want to listen to the first three parts of the 12 Factor App if you missed it:

http://www.codingblocks.net/episode32


IV. Backing Services

  • Any resource consumed over the network: databases, mail servers, cloud services, etc.

  • Anything external to your app (but could be local to your environment)

  • Should not have to change any code to redeploy – should be config changes if anything

  • Clearly Tech – Importance Rating: High

 

We've mentioned Splunk, and if you're not familiar, it's an enterprise piece of software that will aggregate logs from multiple sources (servers, computers, etc):
http://www.splunk.com/en_us/products/splunk-enterprise.html

 

Bug in Visual Studio that cost one person $6,500 in a few hours:

https://www.humankode.com/security/how-a-bug-in-visual-studio-2015-exposed-my-source-code-on-github-and-cost-me-6500-in-a-few-hours

 

V. Build, Release, Run

  • Build stage – transform which converts the code repo into an executable bundle

  • Release stage – combines the build with the required config and deposits it somewhere

  • Run – runs the app in the execution environment (development, staging, production, other)

  • Rolling back may be more complicated when you start talking about database schemas / data changes

  • Clearly Tech – Importance Rating: Conceptual???

 

Version numbers? What do you prefer? Version numbers with major and minor revisions? Or do you prefer timestamps?

 

 

VI. Processes

  • Stateless and Share Nothing

    • No local session

    • Make sure saving files go to an available repository

  • Clearly Tech – Importance Rating: High (Joe wants higher than high)

 

Resources We Like

Tips

 

Allen: Find problematic queries that are killing your SQL Server...replace 123 with the spid from sp_who2.

 

sp_who2 'active'

DBCC INPUTBUFFER(123)

 

If you want to be mean....replace 123 with the spid from sp_who2

KILL 123

 

Additionally, if there's high CPU and low I/O, it's likely either a missing or a fragmented index.

 

Joe: Tortoise Git

https://tortoisegit.org/

 

Mike: Tip of the week is the Pseudocode podcast
http://pseudocode.fm/

 

And...don't be lazy. We can't seem to get off our tails and get a business card made!

 

 


The Twelve-Factor App: Codebase, Dependencies, and Config

Dipping our toes into the DevOps waters with the Twelve-Factor App. How important is depedency management, and how fired would you be if you accidently leaked your company's source code?

Direct download: coding-blocks-episode-32.mp3
Category:Software Development -- posted at: 1:19pm EDT

Javascript Promises and Beyond

In this episode we dive into Javascript Promises.  If you’re used to the olden way of doing an async call with a callback, you’ll definitely want to give this episode a listen as you could improve your mental sanity 10 fold by learning how to use promises in your application!

Direct download: Episode-031-Javascript-Promises-and-Beyond.mp3
Category:Javascript -- posted at: 11:37am EDT

Part 4 of our design patterns series, this time up it's Adapters, Facades, and Mementos. Oh, an which tech luminary would make the best head of state!

Direct download: coding-blocks-episode-030.mp3
Category:general -- posted at: 8:24pm EDT

This week we answer a question, Allen registers for school, Joe reads some numbers, Michael breaks out the survey results, and Joe cringes at the thought of bidets. It's time for episode 29! And we thought, what better to talk about than to continue our discussion on hierarchical data solutions.

Direct download: coding-blocks-episode-29.mp3
Category:general -- posted at: 12:05pm EDT

So, how DO you persist hierarchical Data? We discuss two common solutions to this age-old problem: Adjacency Lists and Nested Set Models. Also, Build Atlanta, technical problems, multi-monitor vs ultra-wide, and utilizing gaming mice to up your game.

Direct download: coding-blocks-episode-028.mp3
Category:programming -- posted at: 6:27pm EDT

Direct download: Episode_27_-_Your_Questions_Our_Answers_SYN-ACK_with_Packet_Loss.mp3
Category:general -- posted at: 11:38pm EDT


This week we give away Joe's stuff, we break up with IE8 like a big boy, Joe and Allen get excited about readme files, and we argue about which is worse: bad code or bad architecture. That and more in this week's episode where we explore the new bits in ASP.NET 5.

Direct download: coding-blocks-episode-25.mp3
Category:general -- posted at: 9:17pm EDT

This week we tackle one of life's great quesitons, does Jack Bauer give high fives? Also, we go over everything you need to know about delegates, events, callbacks and closures in .NET.

 

Big thanks to <a href="http://twitter.com/kappelcodesalot">@kappelcodesalot</a> for being the inspiration for this episode!

Direct download: coding-blocks-episode-24.mp3
Category:general -- posted at: 10:35pm EDT

Back to Basics - Encapsulation for Object Oriented Programming
Direct download: Coding_Blocks_Episode_23_-_Back_to_Basics_-_Encapsulation.mp3
Category:general -- posted at: 12:43am EDT

Talking about how to best organize your code, moving from school-work to work-work, the future of Silverlight, and (as always) lots of poo-pooing.

Direct download: coding-blocks-episode-22.mp3
Category:general -- posted at: 6:49pm EDT

We gather around the Festivus pole this holiday season and before we get into the Airing of Grievances, we discuss our favorite tools. No, not people. Actual tools. Srsly.

Direct download: coding-blocks-episode-21.mp3
Category:general -- posted at: 4:35pm EDT

We're Testing Your Patience...

I figured this title was appropriate considering it's been a month since our last episode.  We've all been incredibly busy so we hope you've been patient waiting and maybe, just maybe it was worth the wait!  We've crammed quite a bit into this episode which is all about testing.  Follow the more link to see the show notes for this particular episode and don't forget to click one of the share buttons there to let all your friends know about the podcast!In this episode we're primarily talking about Unit Testing.  While that's the focus of the podcast, we also touch on other types of testing so you'll get a basic understanding of the fundamental differences between the types of tests.  Just keep in mind - the testing we're talking about is writing code to test your code.  It's not someone going through and clicking on items in your UI to make sure they work.  We're talking about code testing code to preemptively find problems before they become big problems.

Fun Stuff

It's the holiday season and we would be remiss if we didn't mention our favorite games right now.

Call of Duty Advanced Warfare

Call of Duty Advanced Warfare
Call of Duty Advanced Warfare

 

Middle Earth: Shadow of Mordor

Middle Earth: Shadow of Mordor
Middle Earth: Shadow of Mordor

Vistor Pattern Re-Visited

@TrentApple and loldot both shared the ExpressionVisitor.
Click here to see an example of the ExpressionVisitor class

Mail from You

Ray wanted to try an anti-SQL database.  Ended up with db4o.  Unfortunately it looks like it may be dead.
Here's the link to db4o...
Maybe do a podcast on object to database storage.  Database mappers of various sorts.

Lewis wants us to create a list of our recommended tools.  Check back here in the future and we'll have a link to the post we create that lists out our favorite developer tools.  Everything from command line replacement tools, comparison tools, text editors, etc.
Favorite tools of 2014 Coming Soon!

Marcus wants to hear a podcast on Reactive Extensions.  We may be getting an expert on the show to speak about this stuff....

Testing

Testing in general

  • Testing as you go (you running through your app to make sure it works)
  • Automated testing (run from command line, build server, etc.)

Several types of testing (not an exhaustive list):

  • Unit testing - testing small pieces of code that have as few dependencies as possible
    • Usually fast running, smaller tests
  • Functional testing - testing how portions of an application work when hooked into its dependencies (databases, web services, etc)
  • UI testing
    • Selenium testing for web applications - fragile? difficult to maintain?
    • Record & Replay / Macro type testing
    • Take longer to run as it's stepping through an app like a user would
  • Regression testing - tests that ensure newer features haven't broken older features that should still function the way they did previously
  • Load testing - making sure a system can continue to function when put under high load
  • Performance testing - making sure your application performs up to some predetermined standard
  • Security testing - ensuring your application is as secure as possible given

Unit Testing
http://en.wikipedia.org/wiki/Unit_testing

For a single method that you want to test, you may create a dozen test methods to ensure that when you call that one method you always get your expected results.  So, speaking of unit tests, you're typically not writing ONE unit test to test an existing (or new) method, rather you're creating a number of small unit tests to be concise.

The Triple A Pattern:

  • Arrange - set up your variables
  • Act - call the method under test
  • Assert - did the method do what you expected it to do?

Why not just write functional tests as they test higher up?
http://www.jbrains.ca/permalink/not-just-slow-integration-tests-are-a-vortex-of-doom

Should the Singleton get blasted some more?!  Michael tries to defend his true love...

Unit tests should be able to run out of order - this "proves" that you don't have any bad dependencies lying around.

Testing Pyramid - Michael Cohn
http://martinfowler.com/bliki/TestPyramid.html

  • GUI Tests
  • Acceptance / Functional Tests
  • Unit Tests

Test Driven Development - TDD

Should you test first?

Why Test?

  • Fewer errors
  • Catch errors sooner
  • Living documentation?
  • Automatic regression harness
  • Forces looser coupling of code
  • SHORTER FEEDBACK LOOP - you'll find out if there's a problem quickly
  • You can AUTOMATE IT! - run on your box, on a build server, etc.

Javascript testing

Test Runners

These find your tests and runs them and tells you what succeeds and what fails, typically looking at classes that have been attributed as test classes.

.NET teseting frameworks:

Java's primary testing framework is JUnit
http://junit.org/

Why Does Testing Suck?

  • It's hard!
  • I already know it works!
  • Class / Interface / Code explosion
  • Dependencies - Injection / Mocking
  • What's your coverage?

Resources - Links to Other Things We Mention in the Show

Huge list of testing resources:
http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks

Code Complete - excellent guide on complete programming

Code Complete
Code Complete

Art of Unit Testing - Learn to unit test from the ground up

Art of Unit Testing
Art of Unit Testing

Structuring Your Unit Tests

Pluralsight - Test First Development

Pluralsight - Test First Development, Part 2

DotCover - JetBrains tool for seeing your code's test coverage

Tips of the Week

Joe found a new podcast he loves - http://www.defensivesecurity.org/

Michael loves DotCover from JetBrains - https://www.jetbrains.com/dotcover/

Allen has found his new keyboard fling, the Microsoft Sculpt Ergonomic

Microsoft Sculpt Ergonomic Keyboard
Microsoft Sculpt Ergonomic Keyboard

 

Direct download: CodingBlocks-Episode20.mp3
Category:testing -- posted at: 12:10am EDT

We’re back to the gang of four, continuing with another segment of design patterns. This time we’re talking about some of our favorite Behavioral Design Patterns: Observer, Chain of Responsibilities, Iterator patterns. Also, why the visitor pattern is weird and what it’s like to be raked over hot coals.

Direct download: coding-blocks-episode-19.mp3
Category:general -- posted at: 8:52pm EDT

We're excited about ASP.NET vNext, we might be Superman, a cute little ninja was MEAN to Allen, and we attempt to answer some questions.

Direct download: coding-blocks-episode-18.mp3
Category:general -- posted at: 11:00pm EDT

Got Any Hot Stacks?

In this episode, we have a discussion about what type of technology stack you should choose when you go to create your own project whether it be for profit or an open source type of deal.  As programmers, we often struggle with balancing our ADHD tendencies to code in every language known to man, or actually trying to accomplish something and create a finished product!  With that in mind, check out the show notes for Episode 17 to go see all the things we mentioned in the show.  

Site created by @TroyHunt to help you find out if your email has ever been compromised:
www.haveibeenpwned.com
- Hosted on Azure

The world’s greatest Azure demo
http://www.troyhunt.com/2014/03/the-worlds-greatest-azure-demo.html

Software Engineering Blogs

Instagram on Tumblr
http://instagram-engineering.tumblr.com/

Netflix Engineering Blog
http://blog.netflix.com/

High Scalability Blog
http://highscalability.com/

Best Practices for Storing Passwords:
https://crackstation.net/hashing-security.htm

Epic Scare Humor:
https://www.youtube.com/watch?v=tB8D2QZ9lA4

Today's Show - What Technology Stack to Use for Personal Development

What stacks to use when creating new software on your own…as a business or software as a service…

  • Linux - "free", fast, powerful
  • Windows - licensing costs, easier to use, familiarity
  • Xamarin - licensing costs can be prohibitive, truly cross platform for mobile
  • Azure - cloud services, relatively inexpensive for tinkering around, killer features, scalability
  • AWS - same as Azure
  • .NET - prohibitive up-front costs for IDE, plugins, etc.  Familiarity a plus (for us), nice integration with Azure, faster development times
  • PHP - hugely popular on the web - maybe you've heard of it?
  • Javascript - seems everything is headed that way in one form or another
  • NodeJS - just keeps growing in popularity - fast, free, small learning curve, ugly async nesting, all modules aren't mature
  • NoSQL - seems to be all the rage, but is it really right for you?
  • RDBMS - grandpa database...are you still relevant?

Takeaways

Programming Tips

Michael Outlaw: Delete a line in Visual Studio: SHIFT + DEL

Joe Zack: Album - Aphex Twin - Syro

Allen Underwood
SQL Server Query Hints - WITH NOLOCK, WITH ROWLOCK
Check out Episode 13 and Episode 14 for even more information about databases.

Shameless

Please do, go give us a review on iTunes or Stitcher, or wherever you consume our podcast.  We'd greatly appreciate it!

Direct download: CodingBlocks-Episode-17.mp3
Category:Software Development -- posted at: 11:46pm EDT

This week we’re following up on our episode about talking about Creational Design Patterns a few of our favorite behavioral patterns: Template. Strategy, and Null Object.

Also, pumpkin spice lattes, Mario’s pants, and a billion dollar mistake.

Direct download: coding-blocks-episode-16.mp3
Category:general -- posted at: 7:44pm EDT

This week we're discussing <a href="http://www.ndepend.com/">NDpend</a>, a static analysis tool for .NET.

 

Triage your biggest problems, Prioritize your refactoring, and CYA with real metrics and trend lines.

 

We also discuss hidden nuggets, Pintrest-envy, and we pour another one out for google reader.

Direct download: coding-blocks-episode-15.mp3
Category:Software Development -- posted at: 6:11pm EDT

Databases the SQL [see-kwuhl]

Welcome back for part 2 of the podcast about databases.  In this half, we discuss several of the things we believe that developers should know about databases.  From joins to unions, group by's and indexing, we try to touch on a lot of the items that most developers should at least be familiar with when working with database systems.  

News

Database Basics, and Maybe a TOUCH of Advanced Stuff

  • CROSS JOIN - cartesian product of two tables - every row in table 1 matched up with every row in table 2
    • Careful!  Doing this on large tables could crash your server!
  • INNER JOIN - where the only rows you get back is when the data in table 1 matches the data in table 2 on the join conditions
  • Outer Joins - LEFT OUTER, RIGHT OUTER, FULL OUTER
    • LEFT OUTER will return all records from the table on the left side of the join and any data that matches in the right table, otherwise the data in the right table will be nulled
    • RIGHT OUTER will return all records from the table on the right side of the join and any data that matches in the left table, otherwise the data in the left table will be nulled
    • FULL OUTER will return all data from both tables with the data that's common between the two tables fully filled in, otherwise, the data that's missing from each side will be nulled
  • Database Normalization
    http://en.wikipedia.org/wiki/Database_normalization
  • Checkout @SqlKris on Twitter - runs a database blog on learning SQL and very helpful in responding to questions on Twitter
    https://twitter.com/sqlkris
  • Refactoring databases can be very difficult - usually means refactoring a lot of application code, not to mention any stored procedures, views, etc that may live in the database
  • Outlaw is still 21....
  • Do you put your data interactions in a stored procedure or do you put that code in an application?
    • Pros would be that you've centralized your database "logic"
    • Where this doesn't work - if you need data from other systems and using linked servers is not an option
  • You can join tables across databases (at least in SQL Server)
  • Cardinality - one to one or one to many
  • To subtype or not to subtype a table?
    • If you decide to do this, you could have hundreds of tables and managing this through your application could be a major pain...but, the performance would be outstanding
    • If you don't do subtypes but you do the EAV route (Entity Attribute Value schema), it's easier to maintain but query performance wouldn't be as good as the subtyping
      http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model
  • Set Operators
    • UNION - appends two recordsets together (and throws out duplicates)
    • UNION ALL - appends two recordsets together and keeps the duplicates
    • EXCEPT - returns all the rows in the first recordset unless it's in the second recordset
    • INTERSECT - returns all the rows that are common between the first recordset and the second recordset (similar to doing an INNER JOIN on every column being returned from the two tables being used)
  • Check out SQL Authority
    http://www.sqlauthority.com
  • Aggregating Data
    • Difference between a HAVING and a WHERE clause? - Interview question asked in every developer interview known to man!  :-)
    • GROUP BY - used to "group" or aggregate data based off the provided columns
      • Have to use a GROUP BY when doing an AVG (average) or a SUM or a MAX, MIN, etc.
      • Why no GROUP BY *????
    • DISTINCT or GROUP BY - can do similar things if you're trying to remove duplicate values
    • COUNT(DISTINCT...)
  • Row numbers - think paging - you want to get records between 100 and 120
    • Oracle - rownum
    • SQL Server 2005 and up - ROW_NUMBER()
    • mySQL - start drinking heavily
  • Windowed Functions in SQL Server - GLORIOUS
  • Is char...."char" as in you burnt our burgers, or is it "car" as in you drive it - PLEASE, leave your comment below!!!
  • nvarchar vs varchar - if you will EVER need to store UNICODE (international characters, etc.), then go nvarchar...if not, save the space and use varchar
  • To Guid or not to Guid?!  Why they suck as a primary key on your table (for performance)
  • Parameterized queries - USE THEM!
    OWASP in Episode 4
    https://www.owasp.org/index.php/Query_Parameterization_Cheat_Sheet
  • What about SQL Developers who want to program?
    • PHP
    • Perl (similar to what database guys do with scrubbing data)
    • Javascript - simple language to learn out of the box - extremely powerful with things like NodeJS

Performance in Databases

  • Indexes
    • Clustered Indexes - stores the data sorted in the table (makes your table a clustered table)
    • Non-clustered indexes - stored outside the table but points back to the records in the main table storage
    • Can index temp tables!  Sometimes necessary
    • SQL Server 2008 (and up) - Filtered Indexes
    • Creating a ton of indexes is not always the right solution!
    • Understanding fill factors - leaving space for wiggle room on an index
    • CAN be a performance bottleneck on inserts / updates

Resources We Like

Tips of the Week

Direct download: Databases-Part-2.mp3
Category:Database -- posted at: 11:49pm EDT

All Your Database Are Belong to Us

Part one of our two part database podcast starts with choosing the RDBMS (Relational Database Management System) and what to do when you run into deficiencies in that particular database system.

First and foremost, what's with the title?!  Are these guys grammatically challenged?  If that was your first thought, then you should check out this link:
http://en.wikipedia.org/wiki/All_your_base_are_belong_to_us

Others who have been around a little while (longer than us three 21 year olds), we hope you got a kick out of the title.

Podcast News

Topics

Resources

Tips of the Week

Direct download: All_Your_Database_Are_Belong_to_Us_-_Episode_13.mp3
Category:Database -- posted at: 10:36pm EDT

"Water Cooler" episode talking about sweet sugary C# kisses, JavaScript as a first language, T-shaped developers, how to get addicted to drugs and...Where in the World is Carmen Sandiego?

Direct download: coding-blocks-episode-12.mp3
Category:general -- posted at: 7:39pm EDT

This week we're tackling the first section of seminal Design Patterns book: Creational Patterns.

 

We discuss factories of factories, "bullet hell" games, pathological liars, and Allen's lack of voice.

 

Big thanks to @rajsotweet for calling us out and getting us motivated to record!

 

Direct download: coding-blocks-episode-11.mp3
Category:Software Development -- posted at: 7:00am EDT

This week we're taking pot shots from the peanut gallery!

 

We talk about new features in C# 6. What we like, what we love...and binary literals.

 

We also struggle to define Roslyn and BONUS! poetry reading from Michael Outlaw!

Direct download: coding-blocks-episode-10.mp3
Category:Software Development -- posted at: 8:25pm EDT

You down with AOP? This week we're talking with Vlad Hrybok about his spectacular Aspect Oriented Programming Framework: Aspectacular.

 

Highlights include lots of Design Patterns, Acronyms, Buzzwords and...Duff Beer?

Direct download: coding-blocks-episode-9.mp3
Category:general -- posted at: 12:00am EDT

Q: What do developers love more than developing?

 

A: Expensive accessories!!!

 

This week we're talking about our Christmas in July lists. Dream keyboards, mouses, office furniture and tablets...oh my!

Direct download: coding-blocks-episode-8.mp3
Category:Software Development -- posted at: 8:30pm EDT

We discuss the 5 SOLID principles of writing maintainable code, with a focus on C# and .NET, Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle and Dependency Inversion.

Direct download: coding-blocks-episode-7.mp3
Category:Software Development -- posted at: 10:05pm EDT