Your Code as a Crime Scene


Book Description

Jack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic psychology methods, you'll learn strategies to predict the future of your codebase, assess refactoring direction, and understand how your team influences the design. With its unique blend of forensic psychology and code analysis, this book arms you with the strategies you need, no matter what programming language you use. Software is a living entity that's constantly changing. To understand software systems, we need to know where they came from and how they evolved. By mining commit data and analyzing the history of your code, you can start fixes ahead of time to eliminate broken designs, maintenance issues, and team productivity bottlenecks. In this book, you'll learn forensic psychology techniques to successfully maintain your software. You'll create a geographic profile from your commit data to find hotspots, and apply temporal coupling concepts to uncover hidden relationships between unrelated areas in your code. You'll also measure the effectiveness of your code improvements. You'll learn how to apply these techniques on projects both large and small. For small projects, you'll get new insights into your design and how well the code fits your ideas. For large projects, you'll identify the good and the fragile parts. Large-scale development is also a social activity, and the team's dynamics influence code quality. That's why this book shows you how to uncover social biases when analyzing the evolution of your system. You'll use commit messages as eyewitness accounts to what is really happening in your code. Finally, you'll put it all together by tracking organizational problems in the code and finding out how to fix them. Come join the hunt for better code! What You Need: You need Java 6 and Python 2.7 to run the accompanying analysis tools. You also need Git to follow along with the examples.




Your Code as a Crime Scene, Second Edition


Book Description

Jack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic psychology methods, you can apply strategies to identify problems in your existing code, assess refactoring direction, and understand how your team influences the software architecture. With its unique blend of criminal psychology and code analysis, Your Code as a Crime Scene arms you with the techniques you need to take on any codebase, no matter what programming language you use. Software development might well be the most challenging task humanity ever attempted. As systems scale up, they also become increasingly complex, expensive to maintain, and difficult to reason about. We can always write more tests, try to refactor, and even fire up a debugger to understand complex coding constructs. That's a great starting point, but you can do so much better. Take inspiration from forensic psychology techniques to understand and improve existing code. Visualize codebases via a geographic profile from commit data to find development hotspots, prioritize technical debt, and uncover hidden dependencies. Get data and develop strategies to make the business case for larger refactorings. Detect and fix organizational problems from the vantage point of the software architecture to remove bottlenecks for the teams. The original Your Code as a Crime Scene from 2014 pioneered techniques for understanding the intersection of people and code. This new edition reflects a decade of additional experience from hundreds of projects. Updated techniques, novel case studies, and extensive new material adds to the strengths of this cult classic. Change how you view software development and join the hunt for better code! What You Need: You need to be comfortable reading code. You also need to use Git (or Subversion, Mercurial or similar version-control tool).




The Pragmatic Programmer


Book Description

What others in the trenches say about The Pragmatic Programmer... “The cool thing about this book is that it’s great for keeping the programming process fresh. The book helps you to continue to grow and clearly comes from people who have been there.” — Kent Beck, author of Extreme Programming Explained: Embrace Change “I found this book to be a great mix of solid advice and wonderful analogies!” — Martin Fowler, author of Refactoring and UML Distilled “I would buy a copy, read it twice, then tell all my colleagues to run out and grab a copy. This is a book I would never loan because I would worry about it being lost.” — Kevin Ruland, Management Science, MSG-Logistics “The wisdom and practical experience of the authors is obvious. The topics presented are relevant and useful.... By far its greatest strength for me has been the outstanding analogies—tracer bullets, broken windows, and the fabulous helicopter-based explanation of the need for orthogonality, especially in a crisis situation. I have little doubt that this book will eventually become an excellent source of useful information for journeymen programmers and expert mentors alike.” — John Lakos, author of Large-Scale C++ Software Design “This is the sort of book I will buy a dozen copies of when it comes out so I can give it to my clients.” — Eric Vought, Software Engineer “Most modern books on software development fail to cover the basics of what makes a great software developer, instead spending their time on syntax or technology where in reality the greatest leverage possible for any software team is in having talented developers who really know their craft well. An excellent book.” — Pete McBreen, Independent Consultant “Since reading this book, I have implemented many of the practical suggestions and tips it contains. Across the board, they have saved my company time and money while helping me get my job done quicker! This should be a desktop reference for everyone who works with code for a living.” — Jared Richardson, Senior Software Developer, iRenaissance, Inc. “I would like to see this issued to every new employee at my company....” — Chris Cleeland, Senior Software Engineer, Object Computing, Inc. “If I’m putting together a project, it’s the authors of this book that I want. . . . And failing that I’d settle for people who’ve read their book.” — Ward Cunningham Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you'll learn how to Fight software rot; Avoid the trap of duplicating knowledge; Write flexible, dynamic, and adaptable code; Avoid programming by coincidence; Bullet-proof your code with contracts, assertions, and exceptions; Capture real requirements; Test ruthlessly and effectively; Delight your users; Build teams of pragmatic programmers; and Make your developments more precise with automation. Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether you're a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you'll quickly see improvements in personal productivity, accuracy, and job satisfaction. You'll learn skills and develop habits and attitudes that form the foundation for long-term success in your career. You'll become a Pragmatic Programmer.




Software Design X-Rays


Book Description

Are you working on a codebase where cost overruns, death marches, and heroic fights with legacy code monsters are the norm? Battle these adversaries with novel ways to identify and prioritize technical debt, based on behavioral data from how developers work with code. And that's just for starters. Because good code involves social design, as well as technical design, you can find surprising dependencies between people and code to resolve coordination bottlenecks among teams. Best of all, the techniques build on behavioral data that you already have: your version-control system. Join the fight for better code! Use statistics and data science to uncover both problematic code and the behavioral patterns of the developers who build your software. This combination gives you insights you can't get from the code alone. Use these insights to prioritize refactoring needs, measure their effect, find implicit dependencies between different modules, and automatically create knowledge maps of your system based on actual code contributions. In a radical, much-needed change from common practice, guide organizational decisions with objective data by measuring how well your development teams align with the software architecture. Discover a comprehensive set of practical analysis techniques based on version-control data, where each point is illustrated with a case study from a real-world codebase. Because the techniques are language neutral, you can apply them to your own code no matter what programming language you use. Guide organizational decisions with objective data by measuring how well your development teams align with the software architecture. Apply research findings from social psychology to software development, ensuring you get the tools you need to coach your organization towards better code. If you're an experienced programmer, software architect, or technical manager, you'll get a new perspective that will change how you work with code. What You Need: You don't have to install anything to follow along in the book. TThe case studies in the book use well-known open source projects hosted on GitHub. You'll use CodeScene, a free software analysis tool for open source projects, for the case studies. We also discuss alternative tooling options where they exist.




Shooting Incident Reconstruction


Book Description

Shooting Incident Reconstruction, Second Edition, offers a thorough explanation of matters from simple to complex to help the reader understand the factors surrounding ballistics, trajectory, and shooting scenes. Forensic scientists, law enforcement, and crime scene investigators are often tasked with reconstruction of events based on crime scene evidence, along with the subsequent analysis of that evidence. The use and misuse of firearms to perpetrate crimes from theft to murder necessitates numerous invitations to reconstruct shooting incidents. The discharge of firearms and the behavior of projectiles create many forms of physical evidence that, through proper testing and interpretation by a skilled forensic scientist, can establish what did and what did not occur. Written by the world's most well-respected shooting scene and ballistics experts, the book addresses the terminology, science, and factors involved in reconstructing shooting incident events to solve forensic cases. It covers the full range of related topics including: the range from which a firearm was discharged; the sequence of shots in a multiple discharge shooting incident; the position of a firearm at the moment of discharge; and the position of a victim at the moment of impact. The probable flight path of a projectile and the manner in which a firearm was discharged are also discussed. Case studies illustrate real-world application of technical concepts, supported by over 200 full-color diagrams and photographs. This book will be of value to practicing forensic scientists (firearm and toolmark examiners), ballistics experts, crime scene personnel, police departments, forensic consultants (generalists), attorneys and judges, medical examiners (coroners), and forensic pathologists. - Written by the most well-respected shooting scene and ballistics experts in the world - Contains over 200 full-color diagrams and photographs that support and illustrate key concepts - Case studies illustrate real-world application of technical concepts




Fundamentals of Forensic Science


Book Description

Fundamentals of Forensic Science, Third Edition, provides current case studies that reflect the ways professional forensic scientists work, not how forensic academicians teach. The book includes the binding principles of forensic science, including the relationships between people, places, and things as demonstrated by transferred evidence, the context of those people, places, and things, and the meaningfulness of the physical evidence discovered, along with its value in the justice system. Written by two of the leading experts in forensic science today, the book approaches the field from a truly unique and exciting perspective, giving readers a new understanding and appreciation for crime scenes as recent pieces of history, each with evidence that tells a story. - Straightforward organization that includes key terms, numerous feature boxes emphasizing online resources,historical events, and figures in forensic science - Compelling, actual cases are included at the start of each chapter to illustrate the principles being covered - Effective training, including end-of-chapter questions – paired with a clear writing style making this an invaluableresource for professors and students of forensic science - Over 250 vivid, color illustrations that diagram key concepts and depict evidence encountered in the field




Encyclopedia of Forensic Sciences


Book Description

Forensic science includes all aspects of investigating a crime, including: chemistry, biology and physics, and also incorporates countless other specialties. Today, the service offered under the guise of "forensic science’ includes specialties from virtually all aspects of modern science, medicine, engineering, mathematics and technology. The Encyclopedia of Forensic Sciences, Second Edition, Four Volume Set is a reference source that will inform both the crime scene worker and the laboratory worker of each other’s protocols, procedures and limitations. Written by leading scientists in each area, every article is peer reviewed to establish clarity, accuracy, and comprehensiveness. As reflected in the specialties of its Editorial Board, the contents covers the core theories, methods and techniques employed by forensic scientists – and applications of these that are used in forensic analysis. This 4-volume set represents a 30% growth in articles from the first edition, with a particular increase in coverage of DNA and digital forensics Includes an international collection of contributors The second edition features a new 21-member editorial board, half of which are internationally based Includes over 300 articles, approximately 10pp on average Each article features a) suggested readings which point readers to additional sources for more information, b) a list of related Web sites, c) a 5-10 word glossary and definition paragraph, and d) cross-references to related articles in the encyclopedia Available online via SciVerse ScienceDirect. Please visit www.info.sciencedirect.com for more information This new edition continues the reputation of the first edition, which was awarded an Honorable Mention in the prestigious Dartmouth Medal competition for 2001. This award honors the creation of reference works of outstanding quality and significance, and is sponsored by the RUSA Committee of the American Library Association




Your Code as a Crime Scene, Second Edition


Book Description

Jack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic psychology methods, you can apply strategies to identify problems in your existing code, assess refactoring direction, and understand how your team influences the software architecture. With its unique blend of criminal psychology and code analysis, Your Code as a Crime Scene arms you with the techniques you need to take on any codebase, no matter what programming language you use. Software development might well be the most challenging task humanity ever attempted. As systems scale up, they also become increasingly complex, expensive to maintain, and difficult to reason about. We can always write more tests, try to refactor, and even fire up a debugger to understand complex coding constructs. That's a great starting point, but you can do so much better. Take inspiration from forensic psychology techniques to understand and improve existing code. Visualize codebases via a geographic profile from commit data to find development hotspots, prioritize technical debt, and uncover hidden dependencies. Get data and develop strategies to make the business case for larger refactorings. Detect and fix organizational problems from the vantage point of the software architecture to remove bottlenecks for the teams. The original Your Code as a Crime Scene from 2014 pioneered techniques for understanding the intersection of people and code. This new edition reflects a decade of additional experience from hundreds of projects. Updated techniques, novel case studies, and extensive new material adds to the strengths of this cult classic. Change how you view software development and join the hunt for better code! What You Need: You need to be comfortable reading code. You also need to use Git (or Subversion, Mercurial or similar version-control tool).




The Crime Scene


Book Description

The Forensic Crime Scene: A Visual Guide, Second Edition presents knowledgeable chapters on crime scene investigation, the various types of documentation, scene reconstruction, and the value of evidence and proper evidence collection. Additionally, a companion site hosts video and additional instructional materials. The primary goal of this book is to provide visual instruction on the correct way to process a forensic crime scene. By using photographs and video clips to show proper vs. improper procedures, the reader will be able to identify the correct principles required to process a scene. - Provides coverage of techniques, documentation and reconstruction of crime scenes - Shows side-by-side comparisons of the correct vs. incorrect process - Online website hosts videos and additional instructional materials




Crime Scene Investigation


Book Description

This is a guide to recommended practices for crime scene investigation. The guide is presented in five major sections, with sub-sections as noted: (1) Arriving at the Scene: Initial Response/Prioritization of Efforts (receipt of information, safety procedures, emergency care, secure and control persons at the scene, boundaries, turn over control of the scene and brief investigator/s in charge, document actions and observations); (2) Preliminary Documentation and Evaluation of the Scene (scene assessment, "walk-through" and initial documentation); (3) Processing the Scene (team composition, contamination control, documentation and prioritize, collect, preserve, inventory, package, transport, and submit evidence); (4) Completing and Recording the Crime Scene Investigation (establish debriefing team, perform final survey, document the scene); and (5) Crime Scene Equipment (initial responding officers, investigator/evidence technician, evidence collection kits).