Send mail to the author(s) E-mail

# Thursday, 18 December 2014
( NDC )

Problems with monoliths:

  • no one owns
  • speed to release

Some of his highlights:

  • Custodians of code
  • Adopt a customer
  • Monitoring – capture metrics of app
  • Deployment – release small stuff
  • Chip away at the monolith

Logstash / Kibana
Error rates

| | # 
# Wednesday, 17 December 2014
( Code Reviews | NDC )

Inspirational guy!

  • Design principles
  • Where
  • Why?
    • So code is maintainable
  • When
  • DRY
    • Every bit of knowledge should have single authoritative thing
  • SRP
    • Long methods
    • SLAP – Single level of abstraction
  • TDA
  • OCP
  • LSP
  • DIP

Feedback code reviews

Pairing is good

Make it work, make it better real soon

| | # 
( NDC ) – presenting code – interesting?

  • You are a writer – make it easy for next programmer to read
  • Zombie code – ie commented out get rid of
  • Blank lines
  • Arrow code – zoom out and how does it look
  • Cyclomatic complexity – keep it simple
  • Mayfly variables – keep short
  • Preconditions – rather than else at end.. easier to read at start?
  • Boolean parameters are smells

Every complained that a method or class is too short?

Returning null… hmm, then need null checks

  • Refactor till you drop
  • Pair program
  • Code reviews
  • Be the best at clean code – clean code, and architecture course

| | # 
( NDC )


The Outage – when he turned off the prod DB.  Many hours to get back.  His boss was calm

The Referral – someone else gave him an opportunity

Hey Buddy – someone who didn’t like agile, but was happy to help, as he is a ‘guru’

Stack trace – build in monitoring

Nice is it live yet – Think what is the value of the product

The Leader – CIO – you’ll have to teach me

The Interview – don’t hire yourself

Lets ask Phil – build in Ruby/Python.. no bash!

  • You are what yo udo
  • Choose your travelling companions
  • Voracious learning
  • Be open to opportunity
  • Pay it forward
  • Be yourself
  • Practical trumps inspirational
  • People will never forget how you make them feel


| | # 
# Tuesday, 16 December 2014
( Logging | NDC )

She is passionate about logging!

Why Log?

  • Troubleshoot
  • Visibility in real time
  • Security Audits
  • Review early detection of problems


Screenshots copyright MichelleB

  • Application events eg exceptions
  • Audit eg login attemps
  • Activity eg user feature usage

Make it easy – implement a log helper for all developers eg ILogger
Debug, Info, Warn, Error, Thrown


  • Elmah
  • NLog
  • Log4Net


Put in a switch to turn off logging if all goes wrong – stress test app

Elastic search!

Kibana for visualisation


  • Something manageable
  • Evolve
  • Reduce io not put logs into SQL
  • Real time analytics for troubleshooting
| | # 
( NDC )


  • Unblock
    • Experimentation mindset
    • Tinker
    • Feedback loop prototype
  • Communicate
    • Listen
    • Be present
    • Pay attention
  • Collaborate
    • Seek others eg other languages, academics
    • Amplify ideas of others
    • Improv… yes and..
    • Teach and learn
  • Allocate
    • Time to de clutter
    • Side projects
  • Produce
    • Build great stuff – Power Tools racing! – Start something stupid!

| | # 
( NDC )

Talking about continuous delivery.

EC2 spin up new instances all the time

Real time monitoring

| | # 
# Friday, 12 December 2014
( NDC )
also gave the same talk at JavaZone:

He is the co-author of

Cargo cult programming – feyman

“Cargo cult programming is a style of computer programming characterized by the ritual inclusion of code or program structures that serve no real purpose. Cargo cult programming is typically symptomatic of a programmer not understanding either a bug they were attempting to solve or the apparent solution (compare shotgun debugging, deep magic).[1] The termcargo cult programmer may apply when an unskilled or novice computer programmer (or one inexperienced with the problem at hand) copies some program code from one place to another with little or no understanding of how it works or whether it is required in its new position.

Cargo cult programming can also refer to the results of applying a design pattern or coding style blindly without understanding the reasons behind that design principle. Examples are adding unnecessary comments to self-explanatory code, adding deletion code for objects that garbage collection would have collected automatically, and creating factories to build simple objects.”

Open closed principle

He argues that the O in SOLID is outdated.  So a class can be open for extension but closed for modification, was fine 20 years ago, but when we have good refactoring tools and the class is used exclusively in the codebase we’re working on then why limit ourselves?

Software is soft...changeable

Don't throw from a ctor

It is fine!

Naming so important

Why have the suffix Exception at end of exception class?  If it’s named well then don’t need it

| | # 
# Thursday, 11 December 2014

“It’s not an O/RM. It looks a bit like one, but it doesn’t need objects, it doesn’t need a relational database, and it doesn’t need any mapping configuration. So it’s an O/RM without the O or the R or the M. So it’s just a /.”

Uses dynamic == quick and easy.  Based on Active Record in Ruby.  Has upsert built in.

  • Dapper – all about perf
  • PetaPoco
  • NPoco (branch of PetaPoco)
  • Massive – Rob Conery, dynamic

Jimmy Bogard (Author of AutoMapper) – likes EF for advanced features

  • Many to many in EF a bad idea
  • Uses DTO’s for each screen


Eliminate dumb mindless code

| | # 
( NDC | Octopus )

Philosoraptor - One does not simply copy to production

also this one (didn’t go to, but similar topic)


“one does not simply xcopy to production”

  • not consistent
  • not repeatable
  • not traceable

Story of 3 month releases (so users not surprised with more features), and 2 weekly bug fixes

  • Octopus
  • TeamCity “Overly complex app for complex deployment with octopus” – creates nuget packages

DB Delivery – $375 per user. – redgate. Beta. – Fluent Migrator (100k downloads)

| | # 
( NDC )

“Good job, you must have worked hard” – growth mindset

“Good job, you must be smart” – fixed mindset

Best practice == mediocre!

Drefus model

  • Novice (rote)
  • Advanced beginner
  • Competence
  • Proficient – start to handle the unknown
  • Expert - experimentation, deep intuition – Everyone round 1 computer – Spotify Guilds and Squads

  • Know purpose and challenge assumptions
  • Failure is acceptable… be small and iterate
  • Be intolerant of mediocrity
| | #