Coding Blocks (software development)

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

News

Get the Book Practical Test-Driven Development Using C# 7 on Amazon

Anti-Patterns

God Object

  • Concentrating too many functions in a single part of the design (class)
  • Typically knows everything about what’s happening in the application and knows how to interact with all the data in the application
  • Often gets incredibly difficult to maintain over time because making changes to the God object has far-reaching side-effects
  • Overly complicated because it knows about and maintains the state for much of the application - becomes a mediator of all things in the app
  • Pattern is used in micro-controllers where centralized control is more important than elegance and ease of maintainability

Object Cesspool

  • Reusing objects whose state does not conform to the (possibly implicit) contract for re-use
  • This happens when you’re re-using objects (for example Pooling/Flyweight) and you either don’t fully clean up before/after
  • Example: I get a db connection from the pool, set the command timeout really high, use it, then return it…if my code doesn’t reset that…then every other call that uses that object may have that new timeout
  • Example: You install a blog engine like WordPress, create a new post and save it…then you go to write your second post and some of the information is not reset between uses…so you may end up setting a category, tag etc that you didn’t realize
  • Can also get into this problem if you’re working in a multi-thread environment and aren’t being thread-safe
  • How do you know when you’re doing this? Are you re-using objects or creating them on the fly? Do your objects have a “reset” method?
  • What to do about it? Try to centralize “reset” type code, use thread-safe tools/practices

Object Orgy

  • Failing to properly encapsulate objects permitting unrestricted access to their internals
  • Meaning, that other objects are able to “reach” into parts of your object that they really shouldn’t be able to
  • The worst consequence is that it becomes difficult to maintain and change.
  • An example of how this happens would be by declaring internal members public or providing public getter/setter methods on your properties.
  • This anti-pattern could be a symptom of coding to an immature design, laziness or haste while implementing the design, and/or reluctance to refactor the design as it matures.
  • How to fix this? Recognize the problem and refactor. This will be especially easier before any interfaces are made public.
  • favor private over public
  • OCP maybe?
  • The example we talked about with the RGB color space is directly to Joe’s own creation:
    http://colormine.org/

Please leave us a review!

http://www.codingblocks.net/review

Poltergeists

  • Objects whose sole purpose is to pass information to another object
  • Also known as: Gypsy , Proliferation of Classes , and Big Do It Controller Class
  • Typical cause is poor object design
  • Often found by names like manager, controller, startProcess, initialize…
  • They are short lived objects that have no apparent reason to exist other than to initialize a class or invoke a method in a more useful object
  • To remove one - get rid of it and move its functionality into the invoked class, through either inheritance or as a mixin
    A mixin can be viewed as an interface with implemented methods
    https://sourcemaking.com/antipatterns/poltergeists

Sequential Coupling

  • A class that requires its methods to be called in a particular order
  • Imagine an SDK like a credit card processor where you have to…Initialize your sdk, Create an Order, Add Items To the Order, Submit the Order for Authorization, Submit a Capture
  • How do you know when you’re doing this? If you catch you’re self saying “Oh, it’s because you didn’t…”, if you have an “Initialize” method, if you feel obligated to look for an example of how to do something
  • How do you fix it? Consider the template method pattern, create one method that does that stuff and have hooks like “initialize” and “before” / “after” events that implimenters can fill in - but not be responsible for calling

Yo-Yo Problem

  • A structure (e.g., of inheritance) that is hard to understand due to excessive fragmentation
  • Ever read some code, program, etc. that was so complicated you had to bounce between files, classes, etc. to understand it? That’s the yo-yo problem.
  • How can we avoid this?
    ** Maybe the S from SOLID to (help) keep your objects smaller?
    ** Favor composition over inheritance to keep the inheritance tree as shallow as possible.

Resources We Like

https://en.wikipedia.org/wiki/Anti-pattern

Tip of the Week

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

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

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

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

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

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


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 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

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

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

This week we’re talking about LINQ, what’s so special about .NET, the differences IQueryable and IEnumerable, and another round of “Never Have I Ever”. Oh, and jokes!

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

We Still Don't Understand Open Source Licensing

This week we're trying to wrap our heads around open source software licensing. We discuss the main types of licenses (and a few of our favorites!), what it means to violate a license, and take a fun look at a few weird questions.

Download the episode on iTunes or Stitcher and make sure to send us your feedback.

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

This episode is all about boxing and unboxing. We discuss memory management, the pros (yes, there are a few!) and cons of boxing/unboxing, some of the weird side effects and how to you can avoid it with generics and ToString methods.

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

The good, the bad, and the ugly side of interfaces. We list some minor gripes, their limitations, and some strange gotchas as well as some tips for how we like to (mis|ab)use them.

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

1