Search

Categories

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Send mail to the author(s) E-mail

# Thursday, 18 December 2014
( NDC )

http://www.ndcvideos.com/#/app/video/2481

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
Graphite?
Error rates

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

Inspirational guy!
http://www.ndcvideos.com/#/app/video/1871

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

Feedback code reviews
4am-7am!

Pairing is good

Make it work, make it better real soon

| | # 
( NDC )

http://www.bitnative.com/2014/11/16/presenting-code-in-visual-studio/ – presenting code

http://www.pluralsight.com/courses/career-reboot-for-developer-mind#career-reboot-for-developer-mind-m1-intro – 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

http://www.pluralsight.com/author/cory-house – 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

Read http://en.wikipedia.org/wiki/Eliyahu_M._Goldratt

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

http://michelebusta.com/

She is passionate about logging!

Why Log?

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

What?

image
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

image

  • Elmah
  • NLog
  • Log4Net

image

Put in a switch to turn off logging if all goes wrong

http://loader.io/ – stress test app

Elastic search!
Lucene

Kibana for visualisation
Logstash
Splunk

Summary

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

Creativity

  • 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

https://www.youtube.com/watch?v=Gyg9U1YaVk8 – Power Tools racing!

http://www.amazon.co.uk/The-Power-Starting-Something-Stupid/dp/1609070097 – Start something stupid!

| | # 
( NDC )

Talking about continuous delivery.

EC2 spin up new instances all the time

Real time monitoring

https://github.com/graphite-project

http://www.elasticsearch.org/overview/kibana/

http://logstash.net/

| | # 
# Friday, 12 December 2014
( NDC )

http://www.ndcvideos.com/#/app/video/3111
also gave the same talk at JavaZone:
 http://vimeo.com/105758303

http://www.slideshare.net/Kevlin/making-steaks-from-sacred-cows

He is the co-author of http://www.amazon.co.uk/Things-Every-Programmer-Should-Know/dp/0596809484

Cargo cult programming – feyman

http://en.wikipedia.org/wiki/Cargo_cult_programming

“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

http://www.infoq.com/author/Kevlin-Henney

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

https://github.com/markrendle/Simple.Data

“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

http://lostechies.com/jimmybogard/2014/06/25/survey-of-two-large-mvc-projects/

Why ORMS?

Eliminate dumb mindless code

| | # 
( NDC | Octopus )

http://www.ndcvideos.com/#/app/video/2771

Philosoraptor - One does not simply copy to production

also this one (didn’t go to, but similar topic) http://www.ndcvideos.com/#/app/video/1411

@jeff_french

“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

https://github.com/jeff-french/complex-commerce “Overly complex app for complex deployment with octopus”

https://github.com/OctopusDeploy/OctoPack – creates nuget packages

DB Delivery

http://ready-roll.com/ – $375 per user.

http://www.red-gate.com/products/dlm/sql-release/ – redgate. Beta.

https://github.com/schambers/fluentmigrator – Fluent Migrator (100k downloads)
http://crosscuttingconcerns.com/How-I-use-Fluent-Migrator

https://github.com/chucknorris/roundhouse

| | # 
( NDC )

http://www.ndcvideos.com/#/app/video/2411

“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

http://mobprogramming.org/ – Everyone round 1 computer

http://blog.crisp.se/2012/11/14/henrikkniberg/scaling-agile-at-spotify – Spotify Guilds and Squads

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