Friday, September 24, 2021

Code & Coffee 9/24/2021

 Code & Coffee 9/24/2021

Topic:  Learning like a Nobel Prize winning Physicist (Richard Feynman)

My outline and topic notes.

  • Talked about antennas and Ham Radio
  • Adding step zero, gathering the information about the topic
  • Replace you words with diagrams
  • Also is this about "the need to show off"?
    • Is some of this "Do as I say not as I do"
  • Asciinema:
    • My demo:
    • Talked about screen recording terminal sessions
      • mitigation techniques
      • mitigating mitigation techniques
  • Physics vs. Astro Physics vs. Quantum Mechanics
    • They are all a bit different
    • Use lots of diagrams and examples
  • Audio Book: Surely your joking Mr. Feynman
  • Using this in real life:
    • Bruce: has a presentation next week that can be refined.
    • Ryan: interested in using this to improve onboarding.
  • Learning styles
    • Veritasium: The biggest myth in education (You are not a visual learner)
    • Make sure to touch on each of these while you are presenting
    • "Inquiry Learning"
    • "Flipped Classroom"
    • "The best way to teach people is to not teach them"
      • Instead of the traditional tests and structure
        • Mastery structure
        • "This is a list of what you need to demonstrate that you have learned"
        • Choose your own adventure on how to demonstrate mastery.
  • General work banter
    • Sales are good and strong, back to 2019 levels
      • Trans is working Saturdays to drive pizza dough around
      • Supply chain is working to get back in order
      • Supply chains are resonant systems and there is noise in the system
  • Water filtering and putting stuff back into pure water
    • Need to put stuff back into filtered water to make you not demineralize
  • Watch out for illegal goat farms
  • Also walapini may be a good server celler.
  • Someone always takes the good ideas
    • but wait theres more... the idea isn't dead yet.
Lots of new people, and as usual lots of good discussion.

Code & Coffee 9/17/2021

 We had Code & Coffee, but I missed capturing the notes topics varied a good time was had by all.

Learning like a Nobel prize winning physicist

Over several upcoming sessions of Code & Coffee we will explore The SOLID principles of object oriented design.  To facilitate that we have a short intro in a future meeting. Today (9/24/2021) there will be an introduction to a framework for facilitating the learning and exploration.

Feynman technique for problem solving:

  • Pick topic
  • Write down everything you know in a note book
    • Add lots of illustrations and examples
    • put it into a rough outline
  • Present it
    • Are you able to present the topic simply, clearly and correctly?
      • If not you have gaps
    • Capture questions 
      • Questions that you are unable to answer are gaps in what you know
  • Simplify
    • Revisit and revise your notes
    • Fill in the gaps discovered in the latest presentation
    • Simplify the language and illustrations
  • Repeat
    • In each iteration you will be able to discover new ways to distill the information and present it more clearly
    • Find a new group that you can present the information to and try again.
This technique works well when preparing for a big presentation.  The first iteration can be presentation to the rubber duck on your desk as even when no other person is present you will notice things to be improved.  Next iteration may be a local user group or in a work lunch & learn.  Then regional and finally the national event.  

Without knowing the framework this is how I prepared for presenting "Disintegration Testing" at QA or the Highway and The Agile Conference in 2014.  Before presenting at the larger venues it was presented and refined at local groups. Even though it is a natural process and was use implicitly being aware and explicit in the process would have allowed the presentation to be even better.  Also missing in that presentation was the focus on continual simplification of the subject.

Feynman's advice is to find a practical problem to apply the topic.  His example for this is the flagpole problem in the "Problem Solving Techniques" video (link 2 in references) starting at about 8:00. This is something to look for when listening to Feynman talk in the links below, it is fascinating to observe the way he explains things knowing that his goal is simplification.


  1. List: Richard Feynman and his technique.
  2. Richard Feynman - Problem Solving Techniques:  (I really like this one, it is part of the list, if you only watch one, make it this one)
  3. Richard Feynman - Computer Heuristics Lecture: (An example of an Nth iteration of him using the technique)
  4. Trello blog post: Boost Your Leadership Skills With The Feynman Technique

Friday, September 10, 2021

Code & Coffee 9/10/2021

 Code & Coffee 9/10/2021

  • Topic: "What is clean code to you"
    • A data access layer that is actually tested
      • there is a thing called NULL
      • it is uncomparable
      • value.equals(otherValue) will make your life less fun 
        • Sonar Cube would have caught that 
          • yup :(
      • 10 year old code may still have fun and interesting bugs yet to be discovered
      • Clean code is code you can trust
    • Clean code takes more time
      • and yet this saves time
      • Quick and dirty saves time
        • the cost is hidden in the future
    • When you are doing code in reverse
      • (dissecting code previously written to figure out what the code is doing)
      • The time taken is exponential with the complexity of the code.
    • Clean code is code that is acceptable to the maintenance team
    • Clean code is NOT ssdd
      • Shiny Stuff Driven Development
      • aka Resume Driven Development
      • This leads to somewhat hackish code as it takes time to learn how to cleanly implement a new tool or technology
      • Instead of resume padding seek to master the new tech and make sure that it is tested and that other team members are onboard with the new shiny stuff.
    • Clean code and testing
      • attitude has changed over time
      • used to be more militant
      • but over time you realize that people are trying their best but more understanding now
      • virtually nobody is deliberately lax on quality.
      • This is a sensitive topic but there are techniques for having these conversations.
    • SOLID and DRY
      • both are commonly misunderstood, misapplied and worthy of additional study.
      • For example Single Responsibility
        • ... database and business logic can be side by side if their requirements will ALWAYS change at the same time.
        • You missed more examples because I don't type fast enough to keep up sometimes.
      • Is SOLID still the best we can do?
        • I wonder if part of the pain is friction from applying OO principals in a functional-ish style
    • Can you grok this code,  can you read it and modify it and how long will it take to do so.
    • Postel's law:
    • Clean code is not prematurely optimized
  • Communication
    • Sometimes it seems that people are using works from the same language
      • but entirely failing to convey meaning
    • It is good to be able to recognize when this is happening so that course corrections can happen
  • Linux distros
    • Manjaro - Arch derivitive
      • "easy mode arch"
      • Used this as it had the latest kernel at the time
    • Next up is back to Ubuntu, it caught up to the kernel that is needed for the fancy video card
  • Barrier for mouse sharing - required xorg, does not support wayland
  • Talked a bit about HATEAOS (pronunciation is left to the reader) and beyond.
    • Links about what is beyond and how it to make it more useful:
      • As presented at Google:
      • Slides:
      • On O'Reilly Learning:
        • better audio if you have access.
    • I have not looked deeply into this yet but it looks to have some very interesting potential.

Code & Coffee 9/3/2021


Code & Coffee 9/3/2021

  • No topic today
  • Talked about chatty queries and optimization
    • Some queries prompt many many other queries and how to tweak these to make them less "chatty"
    • Stories about queries past
  • Talked about profile pictures
    • Why not just use Gravatar?
      • But wait, how does Gravetar make money?
      • Talked about security and privacy implications of Gravetar
      • links pending more research.

Friday, August 27, 2021

Code & Coffee recap 8/27/2021

 Topic: Back to School.   Summer is over, it's time to hit the books,  what are you going to brush up on in the next few months?

QOTD: “I applied bootstrap, what more do you want”

  • Graphic design history
  • Graphic design vs front end dev
  • Language learning
    • DUO lingo has sad owls
  • Why the hate for PHP
    • forced input sanitization?

Intermission while I helped to get the kid’s car started

  • A case study in interpersonal interactions and work relationships between “Product” and “Engineering” teams
  • A brief discussion on age in software development
    • Is there a push out or do the grey hairs get lost in the sea of newbs?

And we will save the topic for another time, since is it mostly unused.

Friday, August 20, 2021

Code & Coffee recap 8/20/2021

Topic: Favorite historical computer… deferred to future since we didn't really get onto the topic today.

  • Talked about Helium mining and antennas a little bit
    • Just need to get a few more meters up and can 
  • Streaming data and web api
    • Makes better use of threads
    • High potential for better resource utilization
    • Check out R2DBC and WebFLUX for more ideas
  • Summer is almost done
    • And some are ready for it to be done
  • Mental context build time
    • Takes 20-30 minutes post interruption to rebuild context
  • Talked about what BNB in “AirBNB” really means
  • Useful for making docs sites:


Code & Coffee recap from 8/13/2021

 Topic: Conway’s Game of Life Challenge part 2 what did you learn.

  • High school was so long ago (for some of us)
  • Conway’s game is one of the exercises at Code Retreat
  • What did we learn
    • It takes a little while, especially the first time or the first time after a while
    • Talked about some of the trade offs that can be surfaced
      • Memory usage for a big grid
      • Processing time vs memory usage
      • Complexity 
  • Talked about micro controllers
  • Java script
    • this
      • is fun, what is the scoping and semantics
    • Functional vs OO javascript vs ???
      • ??? may be procedural
  • Lesson learned: “There is no substitute for Integration Tests”
    • again
    • This was not on Conway’s game but in real life.

Friday, August 6, 2021

Code & Coffee recap from 8/6/2021

 Topic: Conway’s Game of Life Challenge

  • Keeping up with tech
    • is important
    • or tech will leave you
  • Programming is hard: Copy all the elements of an array
    • for (m=0; m < len; m++) {
      • for (n=0; n < len; ++n) {
    • will it work?
      • no.
      • BOO!
    • This was an example problem and fragment of one person’s solution
    • This was a rough conversation.
    • Sometimes it takes a bit for things to click, sometimes they don’t
    • These conversations should be handled gracefully with an eye towards everyone’s future.
  • Some people are more wired for programming
  • Missed a lot of stuff about containers and networking and latency
    • And I was driving Sam so I missed taking notes
    • But it was good stuff
  • Bruce was talking about Native Spring
    • Sounds pretty cool, lots of potential
    • Make sure you have tests it sounds like there is some tree shaking going on during the running of the tests and if you don’t use a class in a test it might not notice that you need things compiled in to work.
  • Talked about the intersection of computerized processes and how they interact with the real world.
    • Do you know what the price is.  Really?
  • Introduced the “Conway’s Game of Life” challenge

Thursday, August 5, 2021

Code & Coffee recap from 7/30/2021

 Topic: "What are you reading"  60 second review and bring links to share if you are able.

This week we talked about what we are reading or looking forward to reading soon.  I find this to be an expensive topic as it tends to add more to my bookshelf.  Good discussion and lots of variety.


  • Segueing into management-is books:
    • Drive by Dan Pink
      • “this could be four blog posts and two ted talks and were done ;-)”
      • But it is still very much worth the read
    • Traction
      • EOS 
    • Effective Java
      • 90 rules, did one rule per day
    • Site Reliability Engineering
    • Next up
      • Head First Design Patterns



Does this look interesting to you?  Let me know in the comments and I will get you invited to the slack channel where we organize the group.

Monday, July 26, 2021

Notes for Code & Coffee on 7/23/2021

Topic for 7/23: POP QUIZ:  Name a few code smells

  • Identified smells:
    • Player 1 - (anonymized players in case they prefer it that way)
      • Overused singleton
      • Overly complex test code (to get 100% coverage)
        • test private ctor throws exception (Bruce’s example)
      • Side effects
      • Pushing to a dev branch that hasn’t been green in three months
        • Broken builds
        • See also disabled tests
    • Player 2
      • Lack of type safe code in Java
        • extra tests required to assert types
      • Git commit messages that just tell exactly what was done
        • maybe useful maybe not
        • “Undoing last commit”
        • For better commits try:
        • Make it easy to make the change (this may be hard) then make the easy change (Kent Beck)
    • Player 3
      • Shotgun surgery
        • Making one change causes need to change in other places
      • Feature envy
        • Got a function doing work and needs or over uses collaborators
      • Long methods
      • Badly named variables
    • Player 4
      • Inconsistent IDE linting settings.
  • What to do about code smells
    • “When I was at x-company that was our job”
      • 2 million line code base
      • 30% dead code
      • 20% duplicate code
        • Copy/Paste coding
        • Aggressively adding huge amounts of dead code
      • Removed dead code and worthless comments
        • 5000 loc -> 400 loc (extreme case)
        • Nothing makes me happier than deleting code
    • Eclipse and Intellij
      • if statements that explicitly compare against true or false.
        • little t true and big true and other notes I missed
      • Do some uncomfortable low risk cleanups
  • Links: