Friday, November 19, 2021

Code & Coffee 11/19/2021

 No official topic today.

  1. The fun vs irresponsibility curve at Disney
    1. Aiming for peak irresponsibility to attain maximum fun
      1. A little irresponsibility is fun (fully responsible people don't bother with DW)
      2. too much is Gaston-esque and no longer fun
    2. Issues with group tickets
  2. Going on vacation... is fun
    1. Who is gonna do all this stuff when you are gone.
  3. "Postgres jsonb columns"
    1. Working on making this work with Java records
    2. Sounds like fun to me
    3. Dump it in and add indexes to make it work more better.
  4. We talked about modeling the domain objects in the database
    1. Talked a bit about parent-child relationships in the db
  5. Talking about hiring and attrition
  6. Contribute to an open source project as part of the interview process
    1. Have a list of issues on a project give one to a candidate and assess the performance
    2. Sounds like an interesting idea and certainly less sleazy than extracting from a candidate for a proprietary product.

Friday, November 5, 2021

Code & Coffee - 11/5/2021

 No official topic

  • Asking multiple questions in an email
    • Is hard
    • Sometimes the first of two is answered
    • Sometimes the last of two, confusing
  • What are you doing for fun
    • Rebuilding an engine
    • Lego robotics
      • Interesting observations on amount of code vs readability
      • Output to the screen take quite a bit of time
      • Event systems for mitigating the output
    • Github copilot
      • 50% of the time it makes junk
      • 25% of the time it makes something that will be ok after a little editing
      • 15% of the time it makes something that is ok as is
      • 10% of the time is does something surprisingly good
      • It seems to learn your style
      • Quick demo
    • Simple JDBC has been released:
    • JDK 17 is nice, the google formatting plugin needs to catch up.

Code & Coffee 10/29/2021

 No topic today


  • Long lived pets
  • Generating Hibernate ids for externally generated ids
    • The interesting trick is to configure the
  • Force push to master!
    • Removing some unfortunate content that was committed
    • Removed the content and cleaned up the history
    • Something strange in the neighborhood
      • Who you gonna call?
        • Git Busters
  • I got an interesting recursion question
    • Can you say that again?
      • NO!  We have hit the base case.
  • Cycle detection
    • Talked about different options for cycle detection
  • Sooooo close to getting Java 17 working
    • Waiting for an image on the cloud provider
  • Barges vs speedboats
  • Source of truth in the database
    • vs source of lies

Friday, October 15, 2021

Code & Coffee - 10/15/2021

 No official topic today

  • Brief discussion on crypto currencies
    • Really DODO coin?  not sure that would be my first choice for a coin name.
  • Spanner database is pretty cool
    • Distributed SQL database
    • New feature: 100% compatible Postgres interface
  • Camping and shooting guns
    • Reminiscing about Calvinist Cadets
  • Digitizing slides
    • Dust is not your friend
    • The dynamic range of film is still impressive
    • Still not going to back to film though
    • Kodachrome was noticeably better with the older pictures
    • The project brought back some good memories
  • Ebay fees
    • They charge seller fee on tax????
    • Who would do that aside from Michigan where you pay tax on tax at the gas pump
  • Performance testing
    • is more than just load testing, really it is.
Next week:  Re-introduction to SOLID

Friday, October 8, 2021

Code & Coffee - 10/8/2021

 

  • Camera background stuff
    • What's in your background
    • How much do you just let anything go or carefully compose the background
  • Facebook went down a little
    • Rumors... 
    • Apparently they stopped advertising part of their network on BGP
    • I don't use Facebook often but when I do it is down
  • Re-org
    • Is a lot of trading one set of problems for another
  • Remote/Onsite hybrid working
    • Remote vs on-site ratios
    • Differences in how personal connections are created and maintained
  • Buying and selling cars can be fun
    • Bruce told about a video where a guy put a for sale sign on a car and waited for the real owner to show up and nearly ended up buying it from the owner
    • We recounted more interesting car sale stories
  • Odd git behavior
    • comes from odd devs
    • pr wants to merge 39482393 commits from develop_future_dev_nextgen_evenbetterthistime to develop_future_nextgen
  • No frameworks!!!!!
    • Java manifest files are not fun
    • Oh that one with the ejbs is ok, but only cause its old and not fun
  • QOTD:  "They had the ultimate pimped out Jenkins instance"
  • Same language on front end and back end??
    • Well it worked so well for Java, lets try it with Javascript
    • More discussion about this
    • Understanding principals of software design
    • Where is the experience and where does it come from
    • Architecture is ..... delaying the decision
      • NOT picking tools and toys
      • The tech is the problem.... so let's switch the language, yeah that will work.
        • No not really, you are in tradeoff land, just trading a set of known problems for a new set of unknown problems
        • It is not always a bad idea, but you have to come up with the real reason.
  • Happy birthday Dave S. enjoy the Oculus Quest and the virtual working.
    • Talked about roller coasters and dinosaur parks and unexpected movement vs controlled movement and the queasy factor involved in each.
    • It is hard to pick out a gift for tech people.
  • Time to take out the trash!

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: https://asciinema.org/
    • My demo:
    • https://asciinema.org/a/WuGUIbTzYSX1buMLl1vyXmXwU
    • 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
    • https://akash.network/
    • 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.


References:

  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: https://en.wikipedia.org/wiki/Robustness_principle
    • 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:
    • http://amundsen.com/talks/2015-04-codepalousa/semantic-gap.html
      • As presented at Google: https://www.youtube.com/watch?v=UkAt9XSOfaE
      • Slides: http://amundsen.com/talks/2015-04-codepalousa/gap-slides.pdf
      • On O'Reilly Learning: https://learning.oreilly.com/videos/rest-hypermedia-and/9781491936511/9781491936511-video219221/
        • 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: https://gohugo.io/


 

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.



Thomas:

  • 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

Carlus:

Hoppe:

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: