Book picks similar to
Hacking with Swift by Paul Hudson
computer-science
programming
ios
non-fiction
The Elements of Programming Style
Brian W. Kernighan - 1974
Elements of programming.
Unix Network Programming, Volume 1: Networking APIs - Sockets and XTI
W. Richard Stevens - 1990
You need UNIX Network Programming, Volume 1, Second Edition. In this book, leading UNIX networking expert W. Richard Stevens offers unprecedented, start-to-finish guidance on making the most of sockets, the de facto standard for UNIX network programming-as well as extensive coverage of the X/Open Transport Interface (XTI). Stevens begins by introducing virtually every basic capability of TCP and UDP sockets, including socket functions and options, I/O multiplexing, and name and address conversions. He presents detailed coverage of the Posix.1g standard for sockets and the Posix threads. He also introduces advanced techniques for: Establishing IPv4/IPv6 interoperability. Implementing non-blocking I/O. Routing sockets. Broadcasting and multicasting. IP options. Multithreading. Advanced name and address conversions. UNIX domain protocols. Raw sockets. Learn how to choose among today's leading client/server design approaches, including TCP
Understanding Software: Max Kanat-Alexander on simplicity, coding, and how to suck less as a programmer
Max Kanat-Alexander - 2017
Max explains to you why programmers suck, and how to suck less as a programmer. There's just too much complex stuff in the world. Complex stuff can't be used, and it breaks too easily. Complexity is stupid. Simplicity is smart.Understanding Software covers many areas of programming, from how to write simple code to profound insights into programming, and then how to suck less at what you do! You'll discover the problems with software complexity, the root of its causes, and how to use simplicity to create great software. You'll examine debugging like you've never done before, and how to get a handle on being happy while working in teams.Max brings a selection of carefully crafted essays, thoughts, and advice about working and succeeding in the software industry, from his legendary blog Code Simplicity. Max has crafted forty-three essays which have the power to help you avoid complexity and embrace simplicity, so you can be a happier and more successful developer.Max's technical knowledge, insight, and kindness, has earned him code guru status, and his ideas will inspire you and help refresh your approach to the challenges of being a developer. What you will learn
See how to bring simplicity and success to your programming world
Clues to complexity - and how to build excellent software
Simplicity and software design
Principles for programmers
The secrets of rockstar programmers
Max's views and interpretation of the Software industry
Why Programmers suck and how to suck less as a programmer
Software design in two sentences
What is a bug? Go deep into debugging
About the Author Max Kanat-Alexander is the Technical Lead for Code Health at Google, where he does various work that helps other software engineers be more productive, including writing developer tools, creating educational programs, guiding refactoring efforts, and more.His roles at Google have included Tech Lead for YouTube on the Xbox, work on the Java JDK, JVM, and other aspects of Java for Google, and Technical Lead for Engineering Practices for YouTube, where he's supported developers across all of YouTube in best practices and engineering productivity. Max is a former Chief Architect of the Bugzilla Project, where he was one of the two main developers of the well-known Bugzilla Bug-Tracking System, used by thousands of organizations worldwide. Max also writes the legendary programming industry blog, Code Simplicity, where he challenges Complexity and embraces Simplicity for the programming industry.Max has been involved for several years at Google with enabling developers to work more effectively and helping shape engineering practice, and in this highly readable collection of essays you can share the best of his experience. Table of Contents
Part One: Principles for Programmers
Part Two: Software Complexity and its Causes
Part Three: Simplicity and Software Design
Part Four: Debugging
Part Five:
Exceptional Ruby: Master the Art of Handling Failure in Ruby
Avdi Grimm - 2011
Writing code that handles unexpected errors and still works is really hard. Most of us learn by trial and error. This short book removes the uncertainty. With over 100 pages of content and dozens of working examples, you’ll learn everything from the mechanics of how exceptions work to how to design a robust failure management architecture for your app or library. Whether you are a Ruby novice or a seasoned veteran, Exceptional Ruby will help you write cleaner, more resilient Ruby code.
The Practice of Network Security Monitoring: Understanding Incident Detection and Response
Richard Bejtlich - 2013
The most effective computer security strategies integrate network security monitoring (NSM): the collection and analysis of data to help you detect and respond to intrusions.In The Practice of Network Security Monitoring, Mandiant CSO Richard Bejtlich shows you how to use NSM to add a robust layer of protection around your networks — no prior experience required. To help you avoid costly and inflexible solutions, he teaches you how to deploy, build, and run an NSM operation using open source software and vendor-neutral tools.You'll learn how to:Determine where to deploy NSM platforms, and size them for the monitored networks Deploy stand-alone or distributed NSM installations Use command line and graphical packet analysis tools, and NSM consoles Interpret network evidence from server-side and client-side intrusions Integrate threat intelligence into NSM software to identify sophisticated adversaries There's no foolproof way to keep attackers out of your network. But when they get in, you'll be prepared. The Practice of Network Security Monitoring will show you how to build a security net to detect, contain, and control them. Attacks are inevitable, but losing sensitive data shouldn't be.
Stealing the Network: How to Own the Box
Ryan Russell - 2003
So, what IS it? It is an edgy, provocative, attack-oriented series of chapters written in a first hand, conversational style. World-renowned network security personalities present a series of 25 to 30 page chapters written from the point of an attacker who is gaining access to a particular system. This book portrays the -street fighting- tactics used to attack networks and systems. Not just another -hacker- book, it plays on -edgy- market success of Steal this Computer Book with first hand, eyewitness accountsA highly provocative expose of advanced security exploitsWritten by some of the most high profile -White Hats-, -Black Hats- and -Gray Hats-Gives readers a -first ever- look inside some of the most notorious network intrusions
Programming F# 3.0
Chris Smith - 2009
You’ll quickly discover the many advantages of the language, including access to all the great tools and libraries of the .NET platform.Reap the benefits of functional programming for your next project, whether you’re writing concurrent code, or building data- or math-intensive applications. With this comprehensive book, former F# team member Chris Smith gives you a head start on the fundamentals and walks you through advanced concepts of the F# language.Learn F#’s unique characteristics for building applicationsGain a solid understanding of F#’s core syntax, including object-oriented and imperative stylesMake your object-oriented code better by applying functional programming patternsUse advanced functional techniques, such as tail-recursion and computation expressionsTake advantage of multi-core processors with asynchronous workflows and parallel programmingUse new type providers for interacting with web services and information-rich environmentsLearn how well F# works as a scripting language
The Hacker Playbook: Practical Guide To Penetration Testing
Peter Kim - 2014
The Hacker Playbook provides them their own game plans. Written by a longtime security professional and CEO of Secure Planet, LLC, this step-by-step guide to the “game” of penetration hacking features hands-on examples and helpful advice from the top of the field. Through a series of football-style “plays,” this straightforward guide gets to the root of many of the roadblocks people may face while penetration testing—including attacking different types of networks, pivoting through security controls, and evading antivirus software. From “Pregame” research to “The Drive” and “The Lateral Pass,” the practical plays listed can be read in order or referenced as needed. Either way, the valuable advice within will put you in the mindset of a penetration tester of a Fortune 500 company, regardless of your career or level of experience. Whether you’re downing energy drinks while desperately looking for an exploit, or preparing for an exciting new job in IT security, this guide is an essential part of any ethical hacker’s library—so there’s no reason not to get in the game.
Righting Software
Juval Lowy - 2019
Although companies of every kind have successfully implemented his original design ideas across hundreds of systems, these insights have never before appeared in print.Based on first principles in software engineering and a comprehensive set of matching tools and techniques, Löwy's methodology integrates system design and project design. First, he describes the primary area where many software architects fail and shows how to decompose a system into smaller building blocks or services, based on volatility. Next, he shows how to flow an effective project design from the system design; how to accurately calculate the project duration, cost, and risk; and how to devise multiple execution options.The method and principles in
Righting Software
apply regardless of your project and company size, technology, platform, or industry. Löwy starts the reader on a journey that addresses the critical challenges of software development today by righting software systems and projects as well as careers-and possibly the software industry as a whole. Software professionals, architects, project leads, or managers at any stage of their career will benefit greatly from this book, which provides guidance and knowledge that would otherwise take decades and many projects to acquire. Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
Perl Best Practices: Standards and Styles for Developing Maintainable Code
Damian Conway - 2005
They aren't conscious of all the choices they make, like how they format their source, the names they use for variables, or the kinds of loops they use. They're focused entirely on problems they're solving, solutions they're creating, and algorithms they're implementing. So they write code in the way that seems natural, that happens intuitively, and that feels good.But if you're serious about your profession, intuition isn't enough. Perl Best Practices author Damian Conway explains that rules, conventions, standards, and practices not only help programmers communicate and coordinate with one another, they also provide a reliable framework for thinking about problems, and a common language for expressing solutions. This is especially critical in Perl, because the language is designed to offer many ways to accomplish the same task, and consequently it supports many incompatible dialects.With a good dose of Aussie humor, Dr. Conway (familiar to many in the Perl community) offers 256 guidelines on the art of coding to help you write better Perl code--in fact, the best Perl code you possibly can. The guidelines cover code layout, naming conventions, choice of data and control structures, program decomposition, interface design and implementation, modularity, object orientation, error handling, testing, and debugging.They're designed to work together to produce code that is clear, robust, efficient, maintainable, and concise, but Dr. Conway doesn't pretend that this is the one true universal and unequivocal set of best practices. Instead, Perl Best Practices offers coherent and widely applicable suggestions based on real-world experience of how code is actually written, rather than on someone's ivory-tower theories on how software ought to be created.Most of all, Perl Best Practices offers guidelines that actually work, and that many developers around the world are already using. Much like Perl itself, these guidelines are about helping you to get your job done, without getting in the way.Praise for Perl Best Practices from Perl community members:"As a manager of a large Perl project, I'd ensure that every member of my team has a copy of Perl Best Practices on their desk, and use it as the basis for an in-house style guide." -- Randal Schwartz"There are no more excuses for writing bad Perl programs. All levels of Perl programmer will be more productive after reading this book." -- Peter Scott"Perl Best Practices will be the next big important book in the evolution of Perl. The ideas and practices Damian lays down will help bring Perl out from under the embarrassing heading of "scripting languages". Many of us have known Perl is a real programming language, worthy of all the tasks normally delegated to Java and C++. With Perl Best Practices, Damian shows specifically how and why, so everyone else can see, too." -- Andy Lester"Damian's done what many thought impossible: show how to build large, maintainable Perl applications, while still letting Perl be the powerful, expressive language that programmers have loved for years." -- Bill Odom"Finally, a means to bring lasting order to the process and product of real Perl development teams." -- Andrew Sundstrom"Perl Best Practices provides a valuable education in how to write robust, maintainable P
Building Cloud Apps with Microsoft Azure: Best Practices for DevOps, Data Storage, High Availability, and More (Developer Reference)
Scott Guthrie - 2014
The patterns apply to the development process as well as to architecture and coding practices. The content is based on a presentation developed by Scott Guthrie and delivered by him at the Norwegian Developers Conference (NDC) in June of 2013 (part 1, part 2), and at Microsoft Tech Ed Australia in September 2013 (part 1, part 2). Many others updated and augmented the content while transitioning it from video to written form. Who should read this book Developers who are curious about developing for the cloud, are considering a move to the cloud, or are new to cloud development will find here a concise overview of the most important concepts and practices they need to know. The concepts are illustrated with concrete examples, and each chapter includes links to other resources that provide more in-depth information. The examples and the links to additional resources are for Microsoft frameworks and services, but the principles illustrated apply to other web development frameworks and cloud environments as well. Developers who are already developing for the cloud may find ideas here that will help make them more successful. Each chapter in the series can be read independently, so you can pick and choose topics that you're interested in. Anyone who watched Scott Guthrie's "Building Real World Cloud Apps with Windows Azure" presentation and wants more details and updated information will find that here. Assumptions This ebook expects that you have experience developing web applications by using Visual Studio and ASP.NET. Familiarity with C# would be helpful in places.
The Atomic Chef: And Other True Tales of Design, Technology, and Human Error
Steven Casey - 2006
The 20 stand-alone chapters of this new work describe how technological failures result from the incompatibilities between the way things are designed and the way people actually perceive, think, and act. New technologies will succeed or fail based on our ability to minimize these incompatibilities between the characteristics of people and the characteristics of the things we create and use.This book is the quintessential 'must read' for all those who deal with technology in any fashion. From the frustration of an awkward ATM machine to the threat of accidental, nuclear Armageddon, Casey shows how the same crucial factors come into play told through the very eyes of those people who saw and experienced these things. No student of design, psychology, behavioral science, or technology should be without this book, and neither should any intelligent member of society who wants to know what goes on with the successes and failures of modern technology.Sit ringside to the action where compelling events unfold. The stories in this book will take you to airports and airline cabins, an amusement park, a fertility clinic, a pharmaceutical plant, an emergency dispatch center, the Olympic games, and a bank; to hospitals, spacecraft, ships, and cars. From the coasts of Peru and Monterey, in orbit aboard the International Space Station, the freeways of Southern California and the back roads of France, the battlefields of Afghanistan, and a nuclear fuel plant in Japan this is The Atomic Chef.
Linux Device Drivers
Jonathan Corbet - 2005
And writing device drivers is one of the few areas of programming for the Linux operating system that calls for unique, Linux-specific knowledge. For years now, programmers have relied on the classic "Linux Device Drivers" from O'Reilly to master this critical subject. Now in its third edition, this bestselling guide provides all the information you'll need to write drivers for a wide range of devices.Over the years the book has helped countless programmers learn: how to support computer peripherals under the Linux operating system how to develop and write software for new hardware under Linux the basics of Linux operation even if they are not expecting to write a driver The new edition of "Linux Device Drivers" is better than ever. The book covers all the significant changes to Version 2.6 of the Linux kernel, which simplifies many activities, and contains subtle new features that can make a driver both more efficient and more flexible. Readers will find new chapters on important types of drivers not covered previously, such as consoles, USB drivers, and more.Best of all, you don't have to be a kernel hacker to understand and enjoy this book. All you need is an understanding of the C programming language and some background in Unix system calls. And for maximum ease-of-use, the book uses full-featured examples that you can compile and run without special hardware.Today Linux holds fast as the most rapidly growing segment of the computer market and continues to win over enthusiastic adherents in many application areas. With this increasing support, Linux is now absolutely mainstream, and viewed as a solid platform for embedded systems. If you're writing device drivers, you'll want this book. In fact, you'll wonder how drivers are ever written without it.
Objective-C Programming: The Big Nerd Ranch Guide
Aaron Hillegass - 2011
This is a hands-on guide to mastering Objective C - the language every MAC OS X and iPhone/iPod Touch developer needs to know.
Introductory Linear Algebra: An Applied First Course
Bernard Kolman - 1988
Calculus is not a prerequisite, although examples and exercises using very basic calculus are included (labeled Calculus Required.) The most technology-friendly text on the market, Introductory Linear Algebra is also the most flexible. By omitting certain sections, instructors can cover the essentials of linear algebra (including eigenvalues and eigenvectors), to show how the computer is used, and to introduce applications of linear algebra in a one-semester course.