Coding Blocks Podcast (general)
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 EST

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

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 EST

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 EST

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 EST

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 EST

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 EST

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 EST

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 EST

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 EST