Book picks similar to
The Project Manager's Guide to Software Engineering's Best Practices by Mark Christensen
may-never-read
programming
software-engineering
Modern Technical Writing: An Introduction to Software Documentation
Andrew Etter - 2016
Written by the lead technical writer at one of Silicon Valley's most exciting companies, Modern Technical Writing is a set of guiding principles and thoughtful recommendations for new and experienced technical writers alike. Not a reference manual, and not comprehensive, it instead serves as an introduction to a sensible writing and publishing process, one that has eluded the profession for too long.
AWS Lambda: A Guide to Serverless Microservices
Matthew Fuller - 2016
Lambda enables users to develop code that executes in response to events - API calls, file uploads, schedules, etc - and upload it without worrying about managing traditional server metrics such as disk space, memory, or CPU usage. With its "per execution" cost model, Lambda can enable organizations to save hundreds or thousands of dollars on computing costs. With in-depth walkthroughs, large screenshots, and complete code samples, the reader is guided through the step-by-step process of creating new functions, responding to infrastructure events, developing API backends, executing code at specified intervals, and much more. Introduction to AWS Computing Evolution of the Computing Workload Lambda Background The Internals The Basics Functions Languages Resource Allocation Getting Set Up Hello World Uploading the Function Working with Events AWS Events Custom Events The Context Object Properties Methods Roles and Permissions Policies Trust Relationships Console Popups Cross Account Access Dependencies and Resources Node Modules OS Dependencies OS Resources OS Commands Logging Searching Logs Testing Your Function Lambda Console Tests Third-Party Testing Libraries Simulating Context Hello S3 Object The Bucket The Role The Code The Event The Trigger Testing When Lambda Isn’t the Answer Host Access Fine-Tuned Configuration Security Long-Running Tasks Where Lambda Excels AWS Event-Driven Tasks Scheduled Events (Cron) Offloading Heavy Processing API Endpoints Infrequently Used Services Real-World Use Cases S3 Image Processing Shutting Down Untagged Instances Triggering CodeDeploy with New S3 Uploads Processing Inbound Email Enforcing Security Policies Detecting Expiring Certificates Utilizing the AWS API Execution Environment The Code Pipeline Cold vs. Hot Execution What is Saved in Memory Scaling and Container Reuse From Development to Deployment Application Design Development Patterns Testing Deployment Monitoring Versioning and Aliasing Costs Short Executions Long-Running Processes High-Memory Applications Free Tier Calculating Pricing CloudFormation Reusable Template with Minimum Permissions Cross Account Access CloudWatch Alerts AWS API Gateway API Gateway Event Creating the Lambda Function Creating a New API, Resource, and Method Initial Configuration Mapping Templates Adding a Query String Using HTTP Request Information Within Lambda Deploying the API Additional Use Cases Lambda Competitors Iron.io StackHut WebTask.io Existing Cloud Providers The Future of Lambda More Resources Conclusion
Object-Oriented JavaScript
Stoyan Stefanov - 2008
This book is for the beginning to intermediate web developer who wants to solve web development problems with smart JavaScript. It does not assume any prior knowledge of JavaScript programming; however even if you already know some JavaScript, there will be plenty for you to learn here.
Algorithms of the Intelligent Web
Haralambos Marmanis - 2009
They use powerful techniques to process information intelligently and offer features based on patterns and relationships in data. Algorithms of the Intelligent Web shows readers how to use the same techniques employed by household names like Google Ad Sense, Netflix, and Amazon to transform raw data into actionable information.Algorithms of the Intelligent Web is an example-driven blueprint for creating applications that collect, analyze, and act on the massive quantities of data users leave in their wake as they use the web. Readers learn to build Netflix-style recommendation engines, and how to apply the same techniques to social-networking sites. See how click-trace analysis can result in smarter ad rotations. All the examples are designed both to be reused and to illustrate a general technique- an algorithm-that applies to a broad range of scenarios.As they work through the book's many examples, readers learn about recommendation systems, search and ranking, automatic grouping of similar objects, classification of objects, forecasting models, and autonomous agents. They also become familiar with a large number of open-source libraries and SDKs, and freely available APIs from the hottest sites on the internet, such as Facebook, Google, eBay, and Yahoo.Purchase of the print book comes with an offer of a free PDF, ePub, and Kindle eBook from Manning. Also available is all code from the book.
Programming Scala
Venkat Subramaniam - 2009
You can use it to write traditional, imperative, object-oriented code. But you can also leverage its higher level of abstraction to take full advantage of modern, multicore systems. Programming Scala will show you how to use this powerful functional programming language to create highly scalable, highly concurrent applications on the Java Platform. The increasing popularity and availability of multicore processors is creating a whole new set of challenges--although you can enjoy true concurrency, you're now faced with higher contention and synchronization issues. Deploying an existing application on a multicore processor may bring out previously hidden concurrency issues. Java's multi-threading facility by itself isn't enough---it's a very low level abstraction. Instead, you need a paradigm that provides a higher level of abstraction to deal with concurrency. It's time to embrace Functional Programming. Scala is a hybrid Object-Oriented/Functional Programming language on the JVM. Using Scala, you can create traditional imperative programs, intermix them with Java code, and at the same time take advantage of higher levels of abstraction. You can use features that lead to concise, highly expressive code that remove the pain of dealing with concurrency.Programming Scala will show you the fundamentals of functional programming using Scala. Very quickly, you'll learn how this statically typed language can give you dynamic capabilities to create concise, scalable, highly capable concurrent code. Pragmatic programmers always use the right tool for the job. For concurrent programming on the Java VM, Scala is the tool, and Programming Scala by award-winning author Venkat Subramaniam is your guide.
The REST API Design Handbook
George Reese - 2012
The RESTful approach to web services design is rapidly become the approach of choice. Unfortunately, too few people have truly solid REST API design skills, and discussions of REST can become bogged down in dry theory.The REST API Design Handbook is a simple, practical guide to aid software engineers and software architects create lasting, scalable APIs based on REST architectural principles. The book provides a sound foundation in discussing the constraints that define a REST API. It quickly goes beyond that into the practical aspects of implementing such an API in the real world.Written by cloud computing expert George Reese, The REST API Design Handbook reflects hands on work in consuming many different third party APIs as well the development of REST-based web services APIs. It addresses all of the debates the commonly arise while creating these APIs. Subjects covered include:* REST architectural constraints* Using HTTP methods and response codes in an API* Authenticating RESTful API calls* Versioning* Asynchronous Operations* Pagination and Streaming* Polling and Push Notifications* Rate Limiting
Service-Oriented Design with Ruby and Rails
Paul Dix - 2010
Today, Rails developers and architects need better ways to interface with legacy systems, move into the cloud, and scale to handle higher volumes and greater complexity. In Service-Oriented Design with Ruby and Rails Paul Dix introduces a powerful, services-based design approach geared toward overcoming all these challenges. Using Dix's techniques, readers can leverage the full benefits of both Ruby and Rails, while overcoming the difficulties of working with larger codebases and teams. Dix demonstrates how to integrate multiple components within an enterprise application stack; create services that can easily grow and connect; and design systems that are easier to maintain and upgrade. Key concepts are explained with detailed Ruby code built using open source libraries such as ActiveRecord, Sinatra, Nokogiri, and Typhoeus. The book concludes with coverage of security, scaling, messaging, and interfacing with third-party services. Service-Oriented Design with Ruby and Rails will help you Build highly scalable, Ruby-based service architectures that operate smoothly in the cloud or with legacy systems Scale Rails systems to handle more requests, larger development teams, and more complex code bases Master new best practices for designing and creating services in Ruby Use Ruby to glue together services written in any language Use Ruby libraries to build and consume RESTful Web services Use Ruby JSON parsers to quickly represent resources from HTTP services Write lightweight, well-designed API wrappers around internal or external services Discover powerful non-Rails frameworks that simplify Ruby service implementation Implement standards-based enterprise messaging with Advanced Message Queuing Protocol (AMQP) Optimize performance with load balancing and caching Provide for security and authentication
Microsoft Windows Internals: Microsoft Windows Server(TM) 2003, Windows XP, and Windows 2000 (Pro-Developer)
Mark E. Russinovich - 2004
This classic guidefully updated for Windows Server 2003, Windows XP, and Windows 2000, including 64-bit extensionsdescribes the architecture and internals of the Windows operating system. You’ll find hands-on experiments you can use to experience Windows internal behavior firsthand, along with advanced troubleshooting information to help you keep your systems running smoothly and efficiently. Whether you’re a developer or a system administrator, you’ll find critical architectural insights that you can quickly apply for better design, debugging, performance, and support.Get in-depth, inside knowledge of the Windows operating system: Understand the key mechanisms that configure and control Windows, including dispatching, startup and shutdown, and the registry Explore the Windows security model, including access, privileges, and auditing Investigate internal system architecture using the kernel debugger and other tools Examine the data structures and algorithms that deal with processes, threads, and jobs Observe how Windows manages virtual and physical memory Understand the operation and format of NTFS, and troubleshoot file system access problems View the Windows networking stack from top to bottom, including mapping, APIs, name resolution, and protocol drivers Troubleshoot boot problems and perform crash analysis
Joe Celko's SQL for Smarties: Advanced SQL Programming
Joe Celko - 1995
Now, 10 years later and in the third edition, this classic still reigns supreme as the book written by an SQL master that teaches future SQL masters. These are not just tips and techniques; Joe also offers the best solutions to old and new challenges and conveys the way you need to think in order to get the most out of SQL programming efforts for both correctness and performance.In the third edition, Joe features new examples and updates to SQL-99, expanded sections of Query techniques, and a new section on schema design, with the same war-story teaching style that made the first and second editions of this book classics.
You Don't Know JS Yet: Get Started
Kyle Simpson - 2020
But with a million blogs, books, and videos out there, just where do you start? The worldwide best selling "You Don't Know JS" book series is back for a 2nd edition: "You Don't Know JS Yet". All 6 books are brand new, rewritten to cover all sides of JS for 2020 and beyond. "Get Started" prepares you for the journey ahead, first surveying the language then detailing how the rest of the You Don't Know JS Yet book series guides you to knowing JS more deeply.
C# 5.0 in a Nutshell: The Definitive Reference
Joseph Albahari - 2012
Uniquely organized around concepts and use cases, this updated fifth edition features a reorganized section on concurrency, threading, and parallel programming—including in-depth coverage of C# 5.0’s new asynchronous functions.Shaped by more than 20 expert reviewers, including Microsoft’s Eric Lippert, Stephen Toub, Chris Burrows, and Jon Skeet, this book has all you need to stay on track with C# 5.0. It’s widely known as the definitive reference on the language.Get up to speed on C# language basics, including syntax, types, and variablesExplore advanced topics such as unsafe code and type varianceDig deep into LINQ via three chapters dedicated to the topicLearn about code contracts, dynamic programming, and parallel programmingWork with .NET features, including reflection, assemblies, memory management, security, I/O, XML, collections, networking, and native interoperability"C# 5.0 in a Nutshell is one of the few books I keep on my desk as a quick reference." —Scott Guthrie, Microsoft"Whether you’re a novice programmer or an expert who wants to improve your knowledge of modern asynchronous programming techniques, this book has the information you need to get the job done in C#." —Eric Lippert, Microsoft
Foundations of Software Testing: ISTQB Certification
Dorothy Graham - 2006
The coverage also features learning aids.
Algorithms in a Nutshell
George T. Heineman - 2008
Algorithms in a Nutshell describes a large number of existing algorithms for solving a variety of problems, and helps you select and implement the right algorithm for your needs -- with just enough math to let you understand and analyze algorithm performance. With its focus on application, rather than theory, this book provides efficient code solutions in several programming languages that you can easily adapt to a specific project. Each major algorithm is presented in the style of a design pattern that includes information to help you understand why and when the algorithm is appropriate. With this book, you will:Solve a particular coding problem or improve on the performance of an existing solutionQuickly locate algorithms that relate to the problems you want to solve, and determine why a particular algorithm is the right one to useGet algorithmic solutions in C, C++, Java, and Ruby with implementation tipsLearn the expected performance of an algorithm, and the conditions it needs to perform at its bestDiscover the impact that similar design decisions have on different algorithmsLearn advanced data structures to improve the efficiency of algorithmsWith Algorithms in a Nutshell, you'll learn how to improve the performance of key algorithms essential for the success of your software applications.
Beautiful Testing: Leading Professionals Reveal How They Improve Software
Tim Riley - 2009
But testing is not a routine process, it's a constant exploration of methods and an evolution of good ideas.Beautiful Testing offers 23 essays from 27 leading testers and developers that illustrate the qualities and techniques that make testing an art. Through personal anecdotes, you'll learn how each of these professionals developed beautiful ways of testing a wide range of products -- valuable knowledge that you can apply to your own projects. Here's a sample of what you'll find inside:Microsoft's Alan Page shares some of his secrets about large-scale test automation.Scott Barber explains why performance testing needs to be a collaborative process, rather than simply an exercise in measuring speed.Karen Johnson describes how her professional experience intersected her personal life while testing medical software.Rex Black reveals how satisfying stakeholders for 25 years is a beautiful thingMathematician John D. Cook applies a classic definition of beauty, based on complexity and unity, to testing random number generatorsAll author royalties will be donated to the Nothing But Nets campaign to save lives by preventing malaria, a disease that kills millions of children in Africa each year.ContentsI. BEAUTIFUL TESTERS 1. Was it good for you? (Linda Wilkinson)2. Beautiful testing satisfies stakeholders (Rex Black)3. Building open source QA communities (Martin Schröder, Clint Talbert)4. Collaboration is the cornerstone of beautiful performance testing (Scott Barber)II. BEAUTIFUL PROCESS5. Just peachy: Making office software more reliable with fuzz testing (Kamran Khan)6. Bug management and test case effectiveness (Emily Chen, Brian Nitz)7. Beautiful XMPP Testing (Remko Troncon)8. Beautiful large-scale test automation (Alan Page)9. Beautiful is better than ugly (Neal Norwitz, Michelle Levesque, Jeffrey Yaskin)10. Testing a random number generator (John D. Cook)11. Change-centric testing (Murali Nandigama)12. Software in use (Karen N. Johnson)13. Software development is a creative process (Chris McMahon)14. Test-driven development: Driving new standards of beauty (Jennitta Andrea)15. Beautiful testing as the cornerstone of business success (Lisa Crispin)16. Peeling the glass onion at Socialtext (Mathew Heusser)17. Beautiful testing is efficient testing (Adam Goucher)III. BEAUTIFUL TOOLS18. Seeding bugs to find bugs: Beautiful mutation testing (Andreas Zeller, David Schuler)19. Reference testing as beautiful testing (Clint Talbert)20. CLAM Anti-virus: testing open source with open tools (Tomasz Kojm)21. Web application testing with Windmill (Adam Christian)22. Testing one million web pages (Tim Riley)23. Testing Network Services in Multimachine Scenarios (Isaac Clerencia)ContributorsIndex