Giacomo Balli profile picture
Giacomo Balli
Your Technology Advisor

Over two decades of experience at your service.
I help small business owners make better decisions.

Let's Chat LinkedIn

Top 30 books recommended on Hacker News

This is a collection of the top 30 books ranked by total number of links to Amazon in Hacker News comments.


The Rent Is Too Damn High: What To Do About It, And Why It Matters More Than You Think
Show on Amazon.com

The Rent Is Too Damn High: What To Do About It, And Why It Matters More Than You Think

Author: Matthew Yglesias
Publisher: Simon & Schuster
Number of links: 53
From prominent political thinker and widely followed Slate columnist, a polemic on high rents and housing costs—and how these costs are hollowing out communities, thwarting economic development, and rendering personal success and fulfillment increasingly difficult to achieve.

Rent is an issue that affects nearly everyone. High rent is a problem for all of us, extending beyond personal financial strain. High rent drags on our country's overall rate of economic growth, damages the environment, and promotes long commutes, traffic jams, misery, and smog. Yet instead of a serious focus on the issue, America's cities feature niche conversations about the availability of “affordable housing” for poor people. Yglesias's book changes the conversation for the first time, presenting newfound context for the issue and real-time, practical solutions for the problem.

The Four Steps to the Epiphany: Successful Strategies for Products that Win
Show on Amazon.com

The Four Steps to the Epiphany: Successful Strategies for Products that Win

Author: Steven Gary Blank
Publisher: Cafepress.com
Number of links: 45
The Four Steps to the Epiphany: Successful Strategies for Products that Win [Steven Gary Blank] on Amazon.com. *FREE* shipping on qualifying offers. The bestselling classic that launched 10, 000 startups and new corporate ventures - The Four Steps to the Epiphany is one of the most influential and practical business books of all time. 
The Four Steps to the Epiphany launched the Lean Startup approach to new ventures. It was the first book to offer that startups are not smaller versions of large companies and that new ventures are different than existing ones. Startups search for business models while existing companies execute them. 
The book offers the practical and proven four-step Customer Development process for search and offers insight into what makes some startups successful and leaves others selling off their furniture. Rather than blindly execute a plan

Introduction to Algorithms, 3rd Edition
Show on Amazon.com

Introduction to Algorithms, 3rd Edition

Author: Thomas H. Cormen
Publisher: The MIT Press
Number of links: 40

Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.

The first edition became a widely used text in universities worldwide as well as the standard reference for professionals. The second edition featured new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming. The third edition has been revised and updated throughout. It includes two completely new chapters, on van Emde Boas trees and multithreaded algorithms, substantial additions to the chapter on recurrence (now called "Divide-and-Conquer"), and an appendix on matrices. It features improved treatment of dynamic programming and greedy algorithms and a new notion of edge-based flow in the material on flow networks. Many new exercises and problems have been added for this edition. As of the third edition, this textbook is published exclusively by the MIT Press.


Influence: The Psychology of Persuasion, Revised Edition
Show on Amazon.com

Influence: The Psychology of Persuasion, Revised Edition

Author: Robert B. Cialdini
Publisher: Harper Business
Number of links: 32

Influence, the classic book on persuasion, explains the psychology of why people say "yes"—and how to apply these understandings. Dr. Robert Cialdini is the seminal expert in the rapidly expanding field of influence and persuasion. His thirty-five years of rigorous, evidence-based research along with a three-year program of study on what moves people to change behavior has resulted in this highly acclaimed book.

You'll learn the six universal principles, how to use them to become a skilled persuader—and how to defend yourself against them. Perfect for people in all walks of life, the principles of Influence will move you toward profound personal change and act as a driving force for your success.


Peopleware: Productive Projects and Teams (Second Edition)
Show on Amazon.com

Peopleware: Productive Projects and Teams (Second Edition)

Author: Visit Amazon's Tom DeMarco Page
Publisher: Dorset House Publishing Company, Incorporated
Number of links: 31
Peopleware: Productive Projects and Teams (Second Edition) [Tom DeMarco, Timothy Lister] on Amazon.com. *FREE* shipping on qualifying offers. Demarco and Lister demonstrate that the major issues of software development are human, not technical. Their answers aren't easy--just incredibly successful. New second edition features eight all-new chapters. Softcover. Previous edition: c1987. DLC: Management.

Code: The Hidden Language of Computer Hardware and Software
Show on Amazon.com

Code: The Hidden Language of Computer Hardware and Software

Author: Charles Petzold
Publisher: Microsoft Press
Number of links: 30

What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of communicating with each other. And through CODE, we see how this ingenuity and our very human compulsion to communicate have driven the technological innovations of the past two centuries.
Using everyday objects and familiar language systems such as Braille and Morse code, author Charles Petzold weaves an illuminating narrative for anyone who's ever wondered about the secret inner life of computers and other smart machines.
It's a cleverly illustrated and eminently comprehensible story—and along the way, you'll discover you've gained a real context for understanding today's world of PCs, digital media, and the Internet. No matter what your level of technical savvy, CODE will charm you—and perhaps even awaken the technophile within.


Working Effectively with Legacy Code
Show on Amazon.com

Working Effectively with Legacy Code

Author: Michael Feathers
Publisher: Prentice Hall
Number of links: 26
Preface Do you remember the first program you wrote? I remember mine. It was a little graphics program I wrote on an early PC. I started programming later than most of my friends. Sure, I d seen computers when I was a kid. I remember being really impressed by a minicomputer I once saw in an office, but for years I never had a chance to even sit at a computer. Later, when I was a teenager, some friends of mine bought a couple of the first TRS-80s. I was interested, but I was actually a bit apprehensive, too. I knew that if I started to play with computers, I d get sucked into it. It just looked too cool. I don t know why I knew myself so well, but I held back. Later, in college, a roommate of mine had a computer, and I bought a C compiler so that I could teach myself programming. Then it began. I stayed up night after night trying things out, poring through the source code of the emacs editor that came with the compiler. It was addictive, it was challenging, and I loved it. I hope you ve had experiences like thismdjust the raw joy of making things work on a computer. Nearly every programmer I ask has. That joy is part of what got us into this work, but where is it day to day? A few years ago, I gave my friend Erik Meade a call after I d finished work one night. I knew that Erik had just started a consulting gig with a new team, so I asked him, "How are they doing?" He said, "They re writing legacy code, man." That was one of the few times in my life when I was sucker-punched by a coworker s statement. I felt it right in my gut. Erik had given words to the precise feeling that I often get when I visit teams for the first time. They are trying very hard, but at the end of the day, because of schedule pressure, the weight of history, or a lack of any better code to compare their efforts to, many people are writing legacy code. What is legacy code? I ve used the term without defining it. Let s look at the strict definition: Legacy code is code that we ve gotten from someone else. Maybe our company acquired code from another company; maybe people on the original team moved on to other projects. Legacy code is somebody else s code. But in programmer-speak, the term means much more than that. The term legacy codehas taken on more shades of meaning and more weight over time. What do you think about when you hear the term legacy code? If you are at all like me, you think of tangled, unintelligible structure, code that you have to change but don t really understand. You think of sleepless nights trying to add in features that should be easy to add, and you think of demoralization, the sense that everyone on the team is so sick of a code base that it seems beyond care, the sort of code that you just wish would die. Part of you feels bad for even thinking about making it better. It seems unworthy of your efforts. That definition of legacy code has nothing to do with who wrote it. Code can degrade in many ways, and many of them have nothing to do with whether the code came from another team. In the industry, legacy codeis often used as a slang term for difficult-to-change code that we don t understand. But over years of working with teams, helping them get past serious code problems, I ve arrived at a different definition. To me, legacy codeis simply code without tests. I ve gotten some grief for this definition. What do tests have to do with whether code is bad? To me, the answer is straightforward, and it is a point that I elaborate throughout the book: Code without tests is bad code. It doesn t matter how well written it is; it doesn t matter how pretty or object-oriented or well-encapsulated it is. With tests, we can change the behavior of our code quickly and verifiably. Without them, we really don t know if our code is getting better or worse. You might think that this is severe. What about clean code? If a code base is very clean and well structured, isn t that enough? Well, make no mistake. I love clean code. I love it more than most people I know, but while clean code is good, it s not enough. Teams take serious chances when they try to make large changes without tests. It is like doing aerial gymnastics without a net. It requires incredible skill and a clear understanding of what can happen at every step. Knowing precisely what will happen if you change a couple of variables is often like knowing whether another gymnast is going to catch your arms after you come out of a somersault. If you are on a team with code that clear, you are in a better position than most programmers. In my work, I ve noticed that teams with that degree of clarity in all of their code are rare. They seem like a statistical anomaly. And, you know what? If they don t have supporting tests, their code changes still appear to be slower than those of teams that do. Yes, teams do get better and start to write clearer code, but it takes a long time for older code to get clearer. In many cases, it will never happen completely. Because of this, I have no problem defining legacy code as code without tests. It is a good working definition, and it points to a solution. I ve been talking about tests quite a bit so far, but this book is not about testing. This book is about being able to confidently make changes in any code base. In the following chapters, I describe techniques that you can use to understand code, get it under test, refactor it, and add features. One thing that you will notice as you read this book is that it is not a book about pretty code. The examples that I use in the book are fabricated because I work under nondisclosure agreements with clients. But in many of the examples, I ve tried to preserve the spirit of code that I ve seen in the field. I won t say that the examples are always representative. There certainly are oases of great code out there, but, frankly, there are also pieces of code that are far worse than anything I can use as an example in this book. Aside from client confidentiality, I simply couldn t put code like that in this book without boring you to tears and burying important points in a morass of detail. As a result, many of the examples are relatively brief. If you look at one of them and think "No, he doesn t understandmdmy methods are much larger than that and much worse," please look at the advice that I am giving at face value and see if it applies, even if the example seems simpler. The techniques here have been tested on substantially large pieces of code. It is just a limitation of the book format that makes examples smaller. In particular, when you see ellipses el in a code fragment like this, you can read them as "insert 500 lines of ugly code here": m_pDispatcher->register listener ;...m_nMargins++; re>If this book is not about pretty code, it is even less about pretty design. Good design should be a goal for all of us, but in legacy code, it is something that we arrive at in discrete steps. In some of the chapters, I describe ways of adding new code to existing code bases and show how to add it with good design principles in mind. You can start to grow areas of very good high-quality code in legacy code bases, but don t be surprised if some of the steps you take to make changes involve making some code slightly uglier. This work is like surgery. We have to make incisions, and we have to move through the guts and suspend some aesthetic judgment. Could this patient s major organs and viscera be better than they are? Yes. So do we just forget about his immediate problem, sew him up again, and tell him to eat right and train for a marathon? We could, but what we really need to do is take the patient as he is, fix what s wrong, and move him to a healthier state. He might never become an Olympic athlete, but we can t let "best" be the enemy of "better." Code bases can become healthier and easier to work in. When a patient feels a little better, often that is the time when you can help him make commitments to a healthier life style. That is what we are shooting for with legacy code. We are trying to get to the point at which we are used to ease; we expect it and actively attempt to make code change easier. When we can sustain that sense on a team, design gets better. The techniques I describe are ones that I ve discovered and learned with coworkers and clients over the course of years working with clients to try to establish control over unruly code bases. I got into this legacy code emphasis accidentally. When I first started working with Object Mentor, the bulk of my work involved helping teams with serious problems develop their skills and interactions to the point that they could regularly deliver quality code. We often used Extreme Programming practices to help teams take control of their work, collaborate intensively, and deliver. I often feel that Extreme Programming is less a way to develop software than it is a way to make a well-jelled work team that just happens to deliver great software every two weeks. From the beginning, though, there was a problem. Many of the first XP projects were "greenfield" projects. The clients I was seeing had significantly large code bases, and they were in trouble. They needed some way to get control of their work and start to deliver. Over time, I found that I was doing the same things over and over again with clients. This sense culminated in some work I was doing with a team in the financial industry. Before I d arrived, they d realized that unit testing was a great thing, but the tests that they were executing were full scenario tests that made multiple trips to a database and exercised large chunks of code. The tests were hard to write, and the team didn t run them very often because they took so long to run. As I sat down with them to break dependencies and get smaller chunks of code under test, I had a terrible sense of deasjaag vu. It seemed that I was doing this sort of work with every team I met, and it was the sort of thing that no one really wanted to think about. It was just the grunge work that you do when you want to start working with your code in a controlled way, if you know how to do it. I decided then that it was worth really reflecting on how we were solving these problems and writing them down so that teams could get a leg up and start to make their code bases easier to live in. A note about the examples: I ve used examples in several different programming languages. The bulk of the examples are written in Java, C++, and C. I picked Java because it is a very common language, and I included C++ because it presents some special challenges in a legacy environment. I picked C because it highlights many of the problems that come up in procedural legacy code. Among them, these languages cover much of the spectrum of concerns that arise in legacy code. However, if the languages you using are not covered in the examples, take a look at them anyway. Many of the techniques that I cover can be used in other languages, such as Delphi, Visual Basic, COBOL, and FORTRAN. I hope that you find the techniques in this book helpful and that they allow you to get back to what is fun about programming. Programming can be very rewarding and enjoyable work. If you don t feel that in your day-to-day work, I hope that the techniques I offer you in this book help you find it and grow it on your team. Acknowledgements First of all, I owe a serious debt to my wife, Ann, and my children, Deborah and Ryan. Their love and support made this book and all of the learning that preceded it possible. I d also like to thank "Uncle Bob" Martin, president and founder of Object Mentor. His rigorous pragmatic approach to development and design, separating the critical from the inconsequential, gave me something to latch upon about 10 years ago, back when it seemed that I was about to drown in a wave of unrealistic advice. And thanks, Bob, for giving me the opportunity to see more code and work with more people over the past five years than I ever imagined possible. I also have to thank Kent Beck, Ron Jeffries, and Ward Cunningham for offering me advice at times and teaching me a great deal about team work, design, and programming. Special thanks to all of the people who reviewed the drafts. The official reviewers were Sven Gorts, Robert C. Martin, Erik Meade, and Bill Wake; the unofficial reviewers were Dr. Robert Koss, James Grenning, Lowell Lindstrom, Micah Martin, Russ Rufer and the Silicon Valley Patterns Group, and James Newkirk. Thanks also to reviewers of the very early drafts I placed on the Internet. Their feedback significantly affected the direction of the book after I reorganized its format. I apologize in advance to any of you I may have left out. The early reviewers were: Darren Hobbs, Martin Lippert, Keith Nicholas, Phlip Plumlee, C. Keith Ray, Robert Blum, Bill Burris, William Caputo, Brian Marick, Steve Freeman, David Putman, Emily Bache, Dave Astels, Russel Hill, Christian Sepulveda, and Brian Christopher Robinson. Thanks also to Joshua Kerievsky who gave a key early review and Jeff Langr who helped with advice and spot reviews all through the process. The reviewers helped me polish the draft considerably, but if there are errors remaining, they are solely mine. Thanks to Martin Fowler, Ralph Johnson, Bill Opdyke, Don Roberts, and John Brant for their work in the area of refactoring. It has been inspirational. I also owe a special debt to Jay Packlick, Jacques Morel, and Kelly Mower of Sabre Holdings, and Graham Wright of Workshare Technology for their support and feedback. Special thanks also to Paul Petralia, Michelle Vincenti, Lori Lyons, Krista Hansing, and the rest of the team at Prentice-Hall. Thank you, Paul, for all of the help and encouragement that this first-time author needed. Special thanks also to Gary and Joan Feathers, April Roberts, Dr. Raimund Ege, David Lopez de Quintana, Carlos Perez, Carlos M. Rodriguez, and the late Dr. John C. Comfort for help and encouragement over the years.I also have to thank to Brian Button for the example in Chapter XX, I m Changing the Same Code All Over the Place. He wrote that code in about an hour when we were developing a refactoring course together, and it s become my favorite piece of teaching code. Also, special thanks to Janik Top, whose instrumental De Futuraserved as the soundtrack for my last few weeks of work on this book. Finally, I d like to thank everyone whom I ve worked with over the past few years whose insights and challenges strengthened the material in this book. Michael Feathers [a href="mailto:[email protected]" target=_new>[email protected] /> Copyright Pearson Education. All rights reserved.

Three Felonies A Day: How the Feds Target the Innocent
Show on Amazon.com

Three Felonies A Day: How the Feds Target the Innocent

Author: Harvey Silverglate
Publisher: Encounter Books
Number of links: 26
The average professional in this country wakes up in the morning, goes to work, comes home, eats dinner, and then goes to sleep, unaware that he or she has likely committed several federal crimes that day. Why? The answer lies in the very nature of modern federal criminal laws, which have exploded in number but also become impossibly broad and vague. In Three Felonies a Day, Harvey A. Silverglate reveals how federal criminal laws have become dangerously disconnected from the English common law tradition and how prosecutors can pin arguable federal crimes on any one of us, for even the most seemingly innocuous behavior. The volume of federal crimes in recent decades has increased well beyond the statute books and into the morass of the Code of Federal Regulations, handing federal prosecutors an additional trove of vague and exceedingly complex and technical prohibitions to stick on their hapless targets. The dangers spelled out in Three Felonies a Day do not apply solely to “white collar criminals,” state and local politicians, and professionals. No social class or profession is safe from this troubling form of social control by the executive branch, and nothing less than the integrity of our constitutional democracy hangs in the balance.

JavaScript: The Good Parts
Show on Amazon.com

JavaScript: The Good Parts

Author: Douglas Crockford
Publisher: O'Reilly Media
Number of links: 25

Most programming languages contain good and bad parts, but JavaScript has more than its share of the bad, having been developed and released in a hurry before it could be refined. This authoritative book scrapes away these bad features to reveal a subset of JavaScript that's more reliable, readable, and maintainable than the language as a whole—a subset you can use to create truly extensible and efficient code.

Considered the JavaScript expert by many people in the development community, author Douglas Crockford identifies the abundance of good ideas that make JavaScript an outstanding object-oriented programming language-ideas such as functions, loose typing, dynamic objects, and an expressive object literal notation. Unfortunately, these good ideas are mixed in with bad and downright awful ideas, like a programming model based on global variables.

When Java applets failed, JavaScript became the language of the Web by default, making its popularity almost completely independent of its qualities as a programming language. In JavaScript: The Good Parts, Crockford finally digs through the steaming pile of good intentions and blunders to give you a detailed look at all the genuinely elegant parts of JavaScript, including:

  • Syntax
  • Objects
  • Functions
  • Inheritance
  • Arrays
  • Regular expressions
  • Methods
  • Style
  • Beautiful features

The real beauty? As you move ahead with the subset of JavaScript that this book presents, you'll also sidestep the need to unlearn all the bad parts. Of course, if you want to find out more about the bad parts and how to use them badly, simply consult any other JavaScript book.

With JavaScript: The Good Parts, you'll discover a beautiful, elegant, lightweight and highly expressive language that lets you create effective code, whether you're managing object libraries or just trying to get Ajax to run fast. If you develop sites or applications for the Web, this book is an absolute must.


The Little Schemer - 4th Edition
Show on Amazon.com

The Little Schemer - 4th Edition

Author: Daniel P. Friedman
Publisher: The MIT Press
Number of links: 23

The notion that "thinking about computing is one of the most exciting things the human mind can do" sets both The Little Schemer (formerly known as The Little LISPer) and its new companion volume, The Seasoned Schemer, apart from other books on LISP. The authors' enthusiasm for their subject is compelling as they present abstract concepts in a humorous and easy-to-grasp fashion. Together, these books will open new doors of thought to anyone who wants to find out what computing is really about. The Little Schemer introduces computing as an extension of arithmetic and algebra; things that everyone studies in grade school and high school. It introduces programs as recursive functions and briefly discusses the limits of what computers can do. The authors use the programming language Scheme, and interesting foods to illustrate these abstract ideas. The Seasoned Schemer informs the reader about additional dimensions of computing: functions as values, change of state, and exceptional cases. The Little LISPer has been a popular introduction to LISP for many years. It had appeared in French and Japanese. The Little Schemer and The Seasoned Schemer are worthy successors and will prove equally popular as textbooks for Scheme courses as well as companion texts for any complete introductory course in Computer Science.


The E-Myth Revisited: Why Most Small Businesses Don't Work and What to Do About It
Show on Amazon.com

The E-Myth Revisited: Why Most Small Businesses Don't Work and What to Do About It

Author: Michael E. Gerber
Publisher: HarperCollins
Number of links: 23

In this first new and totally revised edition of the 150,000-copy underground bestseller, The E-Myth, Michael Gerber dispels the myths surrounding starting your own business and shows how commonplace assumptions can get in the way of running a business. He walks you through the steps in the life of a business from entrepreneurial infancy, through adolescent growing pains, to the mature entrepreneurial perspective, the guiding light of all businesses that succeed. He then shows how to apply the lessons of franchising to any business whether or not it is a franchise. Finally, Gerber draws the vital, often overlooked distinction between working on your business and working in your business. After you have read The E-Myth Revisited, you will truly be able to grow your business in a predictable and productive way.


Feeling Good: The New Mood Therapy
Show on Amazon.com

Feeling Good: The New Mood Therapy

Author: David D. Burns
Publisher: Harper
Number of links: 22
The good news is that anxiety, guilt, pessimism, procrastination, low self-esteem, and other "black holes" of depression can be cured without drugs. In Feeling Good, eminent psychiatrist, David D. Burns, M.D., outlines the remarkable, scientifically proven techniques that will immediately lift your spirits and help you develop a positive outlook on life. Now, in this updated edition, Dr. Burns adds an All-New Consumer′s Guide To Anti-depressant Drugs as well as a new introduction to help answer your questions about the many options available for treating depression.

- Recognise what causes your mood swings
- Nip negative feelings in the bud
- Deal with guilt
- Handle hostility and criticism
- Overcome addiction to love and approval
- Build self-esteem
- Feel good everyday

Programming Collective Intelligence: Building Smart Web 2.0 Applications
Show on Amazon.com

Programming Collective Intelligence: Building Smart Web 2.0 Applications

Author: Toby Segaran
Publisher: O'Reilly Media
Number of links: 22
Want to tap the power behind search rankings, product recommendations, social bookmarking, and online matchmaking? This fascinating book demonstrates how you can build Web 2.0 applications to mine the enormous amount of data created by people on the Internet. With the sophisticated algorithms in this book, you can write smart programs to access interesting datasets from other web sites, collect data from users of your own applications, and analyze and understand the data once you've found it. Programming Collective Intelligence takes you into the world of machine learning and statistics, and explains how to draw conclusions about user experience, marketing, personal tastes, and human behavior in general--all from information that you and others collect every day. Each algorithm is described clearly and concisely with code that can immediately be used on your web site, blog, Wiki, or specialized application. This book explains:
  • Collaborative filtering techniques that enable online retailers to recommend products or media
  • Methods of clustering to detect groups of similar items in a large dataset
  • Search engine features--crawlers, indexers, query engines, and the PageRank algorithm
  • Optimization algorithms that search millions of possible solutions to a problem and choose the best one
  • Bayesian filtering, used in spam filters for classifying documents based on word types and other features
  • Using decision trees not only to make predictions, but to model the way decisions are made
  • Predicting numerical values rather than classifications to build price models
  • Support vector machines to match people in online dating sites
  • Non-negative matrix factorization to find the independent features in adataset
  • Evolving intelligence for problem solving--how a computer develops its skill by improving its own code the more it plays a game 
Each chapter includes exercises for extending the algorithms to make them more powerful. Go beyond simple database-backed applications and put the wealth of Internet data to work for you.

"Bravo! I cannot think of a better way for a developer to first learn these algorithms and methods, nor can I think of a better way for me (an old AI dog) to reinvigorate my knowledge of the details."
-- Dan Russell, Google

"Toby's book does a great job of breaking down the complex subject matter of machine-learning algorithms into practical, easy-to-understand examples that can be directly applied to analysis of social interaction across the Web today. If I had this book two years ago, it would have saved precious time going down some fruitless paths."
-- Tim Wolters, CTO, Collective Intellect

The Non-Designer's Design Book (3rd Edition)
Show on Amazon.com

The Non-Designer's Design Book (3rd Edition)

Author: Robin Williams
Publisher: Peachpit Press
Number of links: 21
A lot has happened in the world of digital design since the first edition of this title was published, but one thing remains true: There is an ever-growing number of people attempting to design pages with no formal training. This book is the one place they can turn to find quick, non-intimidating, excellent design help from trusted design instructor Robin Williams. This revised classic--now in full color--includes a new section on the hot topic of Color itself. In The Non-Designer's Design Book, 3rd Editio n, Robin turns her attention to the basic principles that govern good design. Readers who follow her clearly explained concepts will produce more sophisticated and professional pages immediately. Humor-infused, jargon-free prose interspersed with design exercises, quizzes, and illustrations make learning a snap--which is just what audiences have come to expect from this best-selling author.

The C Programming Language
Show on Amazon.com

The C Programming Language

Author: Brian W. Kernighan
Publisher: Prentice Hall
Number of links: 20

The authors present the complete guide to ANSI standard C language programming. Written by the developers of C, this new version helps readers keep up with the finalized ANSI standard for C while showing how to take advantage of C's rich set of operators, economy of expression, improved control flow, and data structures. The 2/E has been completely rewritten with additional examples and problem sets to clarify the implementation of difficult language constructs. For years, C programmers have let K&R guide them to building well-structured and efficient programs. Now this same help is available to those working with ANSI compilers. Includes detailed coverage of the C language plus the official C language reference manual for at-a-glance help with syntax notation, declarations, ANSI changes, scope rules, and the list goes on and on.


The Design of Everyday Things
Show on Amazon.com

The Design of Everyday Things

Author: Donald A. Norman
Publisher: Basic Books
Number of links: 20
First, businesses discovered quality as a key competitive edge; next came service. Now, Donald A. Norman, former Director of the Institute for Cognitive Science at the University of California, reveals how smart design is the new competitive frontier. The Design of Everyday Things is a powerful primer on how--and why--some products satisfy customers while others only frustrate them.

Cracking the Coding Interview: 150 Programming Questions and Solutions
Show on Amazon.com

Cracking the Coding Interview: 150 Programming Questions and Solutions

Author: Gayle Laakmann McDowell
Publisher: CareerCup
Number of links: 20
Now in the 5th edition, Cracking the Coding Interview gives you the interview preparation you need to get the top software developer jobs. This is a deeply technical book and focuses on the software engineering skills to ace your interview. The book is over 500 pages and includes 150 programming interview questions and answers, as well as other advice. 

The full list of topics are as follows:

The Interview Process
This section offers an overview on questions are selected and how you will be evaluated. What happens when you get a question wrong? When should you start preparing, and how? What language should you use? All these questions and more are answered.

Behind the Scenes
Learn what happens behind the scenes during your interview, how decisions really get made, who you interview with, and what they ask you. Companies covered include Google, Amazon, Yahoo, Microsoft, Apple and Facebook.

Special Situations
This section explains the process for experience candidates, Program Managers, Dev Managers, Testers / SDETs, and more. Learn what your interviewers are looking for and how much code you need to know.

Before the Interview
In order to ace the interview, you first need to get an interview. This section describes what a software engineer's resume should look like and what you should be doing well before your interview.

Behavioral Preparation
Although most of a software engineering interview will be technical, behavioral questions matter too. This section covers how to prepare for behavioral questions and how to give strong, structured responses.

Technical Questions (+ 5 Algorithm Approaches)
This section covers how to prepare for technical questions (without wasting your time) and teaches actionable ways to solve the trickiest algorithm problems. It also teaches you what exactly "good coding" is when it comes to an interview.

150 Programming Questions and Answers
This section forms the bulk of the book. Each section opens with a discussion of the core knowledge and strategies to tackle this type of question, diving into exactly how you break down and solve it. Topics covered include 
  • Arrays and Strings
  • Linked Lists
  • Stacks and Queues
  • Trees and Graphs
  • Bit Manipulation
  • Brain Teasers
  • Mathematics and Probability
  • Object-Oriented Design
  • Recursion and Dynamic Programming
  • Sorting and Searching
  • Scalability and Memory Limits
  • Testing
  • C and C++
  • Java
  • Databases
  • Threads and Locks
For the widest degree of readability, the solutions are almost entirely written with Java (with the exception of C / C++ questions). A link is provided with the book so that you can download, compile, and play with the solutions yourself.

Changes from the Fourth Edition: The fifth edition includes over 200 pages of new content, bringing the book from 300 pages to over 500 pages. Major revisions were done to almost every solution, including a number of alternate solutions added. The introductory chapters were massively expanded, as were the opening of each of the chapters under Technical Questions. In addition, 24 new questions were added.

Cracking the Coding Interview, Fifth Edition is the most expansive, detailed guide on how to ace your software development / programming interviews.

What Intelligence Tests Miss: The Psychology of Rational Thought
Show on Amazon.com

What Intelligence Tests Miss: The Psychology of Rational Thought

Author: Keith E. Stanovich
Publisher: Yale University Press
Number of links: 19

Critics of intelligence tests—writers such as Robert Sternberg, Howard Gardner, and Daniel Goleman—have argued in recent years that these tests neglect important qualities such as emotion, empathy, and interpersonal skills. However, such critiques imply that though intelligence tests may miss certain key noncognitive areas, they encompass most of what is important in the cognitive domain. In this book, Keith E. Stanovich challenges this widely held assumption.

Stanovich shows that IQ tests (or their proxies, such as the SAT) are radically incomplete as measures of cognitive functioning. They fail to assess traits that most people associate with “good thinking,” skills such as judgment and decision making. Such cognitive skills are crucial to real-world behavior, affecting the way we plan, evaluate critical evidence, judge risks and probabilities, and make effective decisions. IQ tests fail to assess these skills of rational thought, even though they are measurable cognitive processes. Rational thought is just as important as intelligence, Stanovich argues, and it should be valued as highly as the abilities currently measured on intelligence tests.


On Writing Well, 30th Anniversary Edition: The Classic Guide to Writing Nonfiction
Show on Amazon.com

On Writing Well, 30th Anniversary Edition: The Classic Guide to Writing Nonfiction

Author: William Zinsser
Publisher: Harper Perennial
Number of links: 19

On Writing Well has been praised for its sound advice, its clarity and the warmth of its style. It is a book for everybody who wants to learn how to write or who needs to do some writing to get through the day, as almost everybody does in the age of e-mail and the Internet.

Whether you want to write about people or places, science and technology, business, sports, the arts or about yourself in the increasingly popular memoir genre, On Writing Well offers you fundamental priciples as well as the insights of a distinguished writer and teacher. With more than a million copies sold, this volume has stood the test of time and remains a valuable resource for writers and would-be writers.


Darwin's Theorem
Show on Amazon.com

Darwin's Theorem

Author: TJ Radcliffe
Publisher: Siduri Press
Number of links: 19
Darwin's Theorem is a story about stories (the working title for a long time was “Metastory”) that's also a mystery, a romance, an adventure, and various other things besides. Not quite science fiction, excessively didactic… think of it as “Dan Brown meets ‘Origin of Species'.”


Set in the New American Empire of the near future, Darwin's Theorem tells the story of Jay Calvin, a defrocked mathematical biologist who has a last chance at redemption when the mentor he once betrayed is killed. The dead man's daughter--and Jay's former lover--asks him for help in investigating her father's death, and recovering a missing manuscript that some want suppressed forever, and others want to use to shape the future of the human race...


It's a complicated book, and as such, it's got something for everyone to hate:


  1. Atheists will hate it because it talks so much about god and religion, and takes the idea of god and religion being important in people's lives seriously.
  2. Bible-believing Christians will hate it because it insults scripture. And Bible-believing Christians.
  3. Christians will hate it because it's plotted around a very loose re-imagining of Hyam Maccoby's heterodox interpretation of early Christianity.
  4. Muslims will hate it because the sole Muslim character is a Sufi.
  5. Catholics will hate it because it makes jokes about the Pope.
  6. Australians will hate it because it makes jokes about Australia.
  7. Scientists will hate it because it depicts scientists as religious.
  8. Liberals will hate it because it simplifies or just sweeps away complex social issues for the sake of story.
  9. Biologists will hate it because it plays fast-and-loose with Darwin, and pretty much everyone else.
  10. Conservatives will hate it because it depicts their leaders as anti-intellectual conformist thugs.
  11. Physicists will hate it because it isn't about physics.
  12. Historians of science will hate because it does for the history of science what Dan Brown does for the history of Christianity.
  13. Casual readers will hate it because they'll sense the presence of metafictional ironies.
  14. Science fiction readers will hate it because it contains too much romance.
  15. Romance readers will hate it because it contains too much science.
  16. Post-modernists will hate it because they'll miss the metafictional ironies.
  17. Literary critics will hate it because it is a book.
  18. People who haven't read Dhalgren will hate it because they'll miss the point.
  19. People who have read Dhalgren… wait, there aren't any of those.
  20. Fans of Diversity Age SF will hate it because the protagonist is a straight, white, able-bodied, educated, Anglo male.
  21. Philosophers will hate it because the plot keeps interrupting the philosophical dialogs.
  22. Fans of Golden Age SF will hate it because it doesn't involve spaceships or ray-guns.
  23. Americans will hate it because it's critical of American imperialism.
  24. Mystery readers will hate it because the philosophical dialogs keep interrupting the plot.
  25. Rednecks will hate it because it portrays foreigners sympathetically.
  26. Canadians will hate it because it was written by a Canadian. It's even written in Canadian English, or a reasonable facsimile thereof.

There are many other reasons to hate it. Why not buy the book and find out what yours is?


The book is an even better deal than it looks, because it really needs to be read twice: once as fiction, once as metafiction. Dhalgren is a circle. Darwin's Theorem is a Moebius strip: it requires two complete traversals to take you back to the beginning, to know the place for the first time.


Knowing and Teaching Elementary Mathematics: Teachers' Understanding of Fundamental Mathematics in China and the United States (Studies in Mathematical Thinking and Learning Series)
Show on Amazon.com

Knowing and Teaching Elementary Mathematics: Teachers' Understanding of Fundamental Mathematics in China and the United States (Studies in Mathematical Thinking and Learning Series)

Author: Liping Ma
Publisher: Routledge
Number of links: 19

Studies of teachers in the U.S. often document insufficient subject matter knowledge in mathematics. Yet, these studies give few examples of the knowledge teachers need to support teaching, particularly the kind of teaching demanded by recent reforms in mathematics education. Knowing and Teaching Elementary Mathematics describes the nature and development of the knowledge that elementary teachers need to become accomplished mathematics teachers, and suggests why such knowledge seems more common in China than in the United States, despite the fact that Chinese teachers have less formal education than their U.S. counterparts.

The anniversary edition of this bestselling volume includes the original studies that compare U.S and Chinese elementary school teachers' mathematical understanding and offers a powerful framework for grasping the mathematical content necessary to understand and develop the thinking of school children. Highlighting notable changes in the field and the author's work, this new edition includes an updated preface, introduction, and key journal articles that frame and contextualize this seminal work.


Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition
Show on Amazon.com

Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition

Author: Steve Krug
Publisher: New Riders
Number of links: 18
Five years and more than 100,000 copies after it was first published, it's hard to imagine anyone working in Web design who hasn't read Steve Krug's "instant classic" on Web usability, but people are still discovering it every day.  In this second edition, Steve adds three new chapters in the same style as the original: wry and entertaining, yet loaded with insights and practical advice for novice and veteran alike.  Don't be surprised if it completely changes the way you think about Web design. With these three new chapters:
  • Usability as common courtesy -- Why people really leave Web sites
  • Web Accessibility, CSS, and you -- Making sites usable and accessible
  • Help! My boss wants me to ______. -- Surviving executive design whims
"I thought usability was the enemy of design until I read the first edition of this book.  Don't Make Me Think! showed me how to put myself in the position of the person who uses my site.  After reading it over a couple of hours and putting its ideas to work for the past five years, I can say it has done more to improve my abilities as a Web designer than any other book.

In this second edition, Steve Krug adds essential ammunition for those whose bosses, clients, stakeholders, and marketing managers insist on doing the wrong thing.  If you design, write, program, own, or manage Web sites, you must read this book."  -- Jeffrey Zeldman, author of Designing with Web Standards



Expert C Programming: Deep C Secrets
Show on Amazon.com

Expert C Programming: Deep C Secrets

Author: Peter van der Linden
Publisher: Prentice Hall
Number of links: 17

This book is for the knowledgeable C programmer, this is a second book that gives the C programmers advanced tips and tricks. This book will help the C programmer reach new heights as a professional. Organized to make it easy for the reader to scan to sections that are relevant to their immediate needs.


Clean Code: A Handbook of Agile Software Craftsmanship
Show on Amazon.com

Clean Code: A Handbook of Agile Software Craftsmanship

Author: Robert C. Martin
Publisher: Prentice Hall
Number of links: 16
Even bad code can function. But if code isn't clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn't have to be that way.

Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship . Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer—but only if you work at it.

What kind of work will you be doing? You'll be reading code—lots of code. And you will be challenged to think about what's right about that code, and what's wrong with it. More importantly, you will be challenged to reassess your professional values and your commitment to your craft.

Clean Code is divided into three parts. The first describes the principles, patterns, and practices of writing clean code. The second part consists of several case studies of increasing complexity. Each case study is an exercise in cleaning up code—of transforming a code base that has some problems into one that is sound and efficient. The third part is the payoff: a single chapter containing a list of heuristics and “smells” gathered while creating the case studies. The result is a knowledge base that describes the way we think when we write, read, and clean code.

Readers will come away from this book understanding
  • How to tell the difference between good and bad code
  • How to write good code and how to transform bad code into good code
  • How to create good names, good functions, good objects, and good classes
  • How to format code for maximum readability
  • How to implement complete error handling without obscuring code logic
  • How to unit test and practice test-driven development
This book is a must for any developer, software engineer, project manager, team lead, or systems analyst with an interest in producing better code.


The Elements of Computing Systems: Building a Modern Computer from First Principles
Show on Amazon.com

The Elements of Computing Systems: Building a Modern Computer from First Principles

Author: Noam Nisan
Publisher: The MIT Press
Number of links: 16

In the early days of computer science, the interactions of hardware, software, compilers, and operating system were simple enough to allow students to see an overall picture of how computers worked. With the increasing complexity of computer technology and the resulting specialization of knowledge, such clarity is often lost. Unlike other texts that cover only one aspect of the field, The Elements of Computing Systems gives students an integrated and rigorous picture of applied computer science, as its comes to play in the construction of a simple yet powerful computer system.

Indeed, the best way to understand how computers work is to build one from scratch, and this textbook leads students through twelve chapters and projects that gradually build a basic hardware platform and a modern software hierarchy from the ground up. In the process, the students gain hands-on knowledge of hardware architecture, operating systems, programming languages, compilers, data structures, algorithms, and software engineering. Using this constructive approach, the book exposes a significant body of computer science knowledge and demonstrates how theoretical and applied techniques taught in other courses fit into the overall picture.

Designed to support one- or two-semester courses, the book is based on an abstraction-implementation paradigm; each chapter presents a key hardware or software abstraction, a proposed implementation that makes it concrete, and an actual project. The emerging computer system can be built by following the chapters, although this is only one option, since the projects are self-contained and can be done or skipped in any order. All the computer science knowledge necessary for completing the projects is embedded in the book, the only pre-requisite being a programming experience.The book's web site provides all tools and materials necessary to build all the hardware and software systems described in the text, including two hundred test programs for the twelve projects. The projects and systems can be modified to meet various teaching needs, and all the supplied software is open-source.


Code Complete: A Practical Handbook of Software Construction, Second Edition
Show on Amazon.com

Code Complete: A Practical Handbook of Software Construction, Second Edition

Author: Steve McConnell
Publisher: Microsoft Press
Number of links: 16

Widely considered one of the best practical guides to programming, Steve McConnell's original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices—and hundreds of new code samples—illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking—and help you build the highest quality code.
Discover the timeless techniques and strategies that help you:

  • Design for minimum complexity and maximum creativity
  • Reap the benefits of collaborative development
  • Apply defensive programming techniques to reduce and flush out errors
  • Exploit opportunities to refactor—or evolve—code, and do it safely
  • Use construction practices that are right-weight for your project
  • Debug problems quickly and effectively
  • Resolve critical construction issues early and correctly
  • Build quality into the beginning, middle, and end of your project

The Box: How the Shipping Container Made the World Smaller and the World Economy Bigger
Show on Amazon.com

The Box: How the Shipping Container Made the World Smaller and the World Economy Bigger

Author: Marc Levinson
Publisher: Princeton University Press
Number of links: 16

In April 1956, a refitted oil tanker carried fifty-eight shipping containers from Newark to Houston. From that modest beginning, container shipping developed into a huge industry that made the boom in global trade possible. The Box tells the dramatic story of the container's creation, the decade of struggle before it was widely adopted, and the sweeping economic consequences of the sharp fall in transportation costs that containerization brought about.


Published on the fiftieth anniversary of the first container voyage, this is the first comprehensive history of the shipping container. It recounts how the drive and imagination of an iconoclastic entrepreneur, Malcom McLean, turned containerization from an impractical idea into a massive industry that slashed the cost of transporting goods around the world and made the boom in global trade possible.


But the container didn't just happen. Its adoption required huge sums of money, both from private investors and from ports that aspired to be on the leading edge of a new technology. It required years of high-stakes bargaining with two of the titans of organized labor, Harry Bridges and Teddy Gleason, as well as delicate negotiations on standards that made it possible for almost any container to travel on any truck or train or ship. Ultimately, it took McLean's success in supplying U.S. forces in Vietnam to persuade the world of the container's potential.


Drawing on previously neglected sources, economist Marc Levinson shows how the container transformed economic geography, devastating traditional ports such as New York and London and fueling the growth of previously obscure ones, such as Oakland. By making shipping so cheap that industry could locate factories far from its customers, the container paved the way for Asia to become the world's workshop and brought consumers a previously unimaginable variety of low-cost products from around the globe.



Software Estimation: Demystifying the Black Art (Developer Best Practices)
Show on Amazon.com

Software Estimation: Demystifying the Black Art (Developer Best Practices)

Author: Steve McConnell
Publisher: Microsoft Press
Number of links: 16

Often referred to as the “black art” because of its complexity and uncertainty, software estimation is not as difficult or puzzling as people think. In fact, generating accurate estimates is straightforward—once you understand the art of creating them. In his highly anticipated book, acclaimed author Steve McConnell unravels the mystery to successful software estimation—distilling academic information and real-world experience into a practical guide for working software professionals. Instead of arcane treatises and rigid modeling techniques, this guide highlights a proven set of procedures, understandable formulas, and heuristics that individuals and development teams can apply to their projects to help achieve estimation proficiency.
Discover how to:

  • Estimate schedule and cost—or estimate the functionality that can be delivered within a given time frame
  • Avoid common software estimation mistakes
  • Learn estimation techniques for you, your team, and your organization * Estimate specific project activities—including development, management, and defect correction
  • Apply estimation approaches to any type of project—small or large, agile or traditional
  • Navigate the shark-infested political waters that surround project estimates

When many corporate software projects are failing, McConnell shows you what works for successful software estimation.

Refactoring: Improving the Design of Existing Code
Show on Amazon.com

Refactoring: Improving the Design of Existing Code

Author: Martin Fowler
Publisher: Addison-Wesley Professional
Number of links: 16
Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use the refactoring, step by step instructions for implementing it, and an example illustrating how it works The book is written using Java as its principle language, but the ideas are applicable to any OO language.

Design for Hackers: Reverse Engineering Beauty
Show on Amazon.com

Design for Hackers: Reverse Engineering Beauty

Author: David Kadavy
Publisher: Wiley
Number of links: 15
The smash hit introductory design book that debuted at #18 on Amazon
Hackers are able to accomplish so much in so little time because they come from a community that's built upon sharing knowledge. When it comes to programming, they can learn whatever they need to learn by reading manuals, or simply typing in a Google search. But learning design isn't so simple.

Many design books try to teach design through lists of "do's" and "don'ts." But hackers know you need a deeper understanding of something to really do it well. Design for Hackers takes apart design by "reverse-engineering" Impressionist painting, Renaissance sculpture, the Mac OS X Aqua interface, Twitter's web interface, and much more. You'll learn about color theory, typography, proportions, and design principles. This theoretical advice is mixed with concrete, actionable advice such as suggestions for color scheme tools, and a chart of "all of the fonts you'll ever need" (available along with the free design course at designforhackers.com).

By the end of the book, you'll be seeing design through new eyes.

H/T Ramiro



Published: Mon, Jan 18 2016 @ 18:11:20
Back to Blog