Working Effectively with Legacy Code

Changing Software Four reasons to change software adding a feature fixing a bug improving design optimizing resource usage Adding features and fixing bugs some argue whether something is a bug fix vs feature more important distinction is behavior i.e. adding or changing Improving Design (Refactoring) keep behavior intact programmers avoid because easy to lose behavior… Continue reading Working Effectively with Legacy Code

Design Patterns in Ruby

Building Better Programs with Patterns people develop solutions for common problems in all domains GOF popularized idea of prepackaged solutions and defined 23 patterns Separate things that change from things that don’t change is given ideally changes are local and don’t require updates everywhere Program to an interface not an implementation polymorphism decouples code is… Continue reading Design Patterns in Ruby

Think OS: A Brief Introduction to Operating Systems

Compilation Compiled and interpreted languages programs translated into machine code and executed by hardware interpreted code is read and executed by a software interpreter some languages can be both or hybrids (java/jvm) static types in static, you know what type each variable is in dynamic language, don’t know until program is running static language don’t… Continue reading Think OS: A Brief Introduction to Operating Systems

Apprenticeship Patterns

Introduction Apprenticeships is inward and focusing on learning to learn Journeyman focus on connections between practitioners and disseminate information Masters acquire, use and share superior skills Emptying the Cup First Language: use one someone who can help you knows. join community. White Belt: Set previous knowledge aside when approaching new situations. Try different programming paradigms… Continue reading Apprenticeship Patterns

Code Complete – Checklists

Requirements Specific Functional Requirements Are all the inputs to the system specified, including their source, accuracy,¬†range of values, and frequency? Are all the outputs from the system specified, including their destination,¬†accuracy, range of values, frequency, and format? Are all output formats specified for Web pages, reports, and so on? Are all the external hardware and… Continue reading Code Complete – Checklists