Sign in

The Pragmatic Programmers
By professional developers for professional developers.

How We Evaluate a Proposal

You have a great book idea, but you didn’t get signed by your first-choice publisher. Why? Following are some things that we look for in a nonfiction proposal on a technical topic. Though each publisher is different, some of our advice will help you get a “yes” from any publisher that serves a professional, working person’s audience.

Know Your Audience

Convince the publisher that you understand your audience and can speak to that audience. Defining your audience may seem simple, but can be a big stumbling block.

Photo by By pixelheadphoto digitalskillet on Shutterstock.com

Do you remember what it’s like to be a novice? It…


You’ve probably seen our books, screencasts, and audiobooks. We’ve also partnered with some of the best content platforms in the industry, including Medium, so that we can help you get your message out across an extensive range of formats.

Once you contact us, our author relations team will get to work helping you to develop your idea and identify the best uses for your content. Then, they’ll guide you through our proposal process, where you’ll receive input and feedback from a panel of industry experts that span the globe.

When it comes time to start writing, you’ll be paired with…


👈 19.11 ExpandoMetaClass and DSLs | TOC | Appendix 2 Bibliography 👉

A Bit of Groovy History

http://glaforge.free.fr/weblog/index.php?itemid=99

A blog by Guillaume Laforge on Groovy history.

API for ​FactoryBuilderSupport

http://groovy.codehaus.org/api/groovy/util/FactoryBuilderSupport.html

API for the ​FactoryBuilderSupport​ class, which is the new base class for ​SwingBuilder​.

ASTTest Annotation

http://groovy.codehaus.org/gapi/groovy/transform/ASTTest.html

Groovy annotation for testing and debugging AST transformations.

Clip from ​Raiders of the Lost Ark​

http://www.youtube.com/watch?v=Epw-LSC3L2U

Swordfight scene from the movie ​Raiders of the Lost Ark​.

CodeNarc

http://codenarc.sourceforge.net

CodeNarc is a Groovy-based static code-analysis tool.

Crash of the Mars Orbiter

http://www.cnn.com/TECH/space/9909/30/mars.metric.02

CNN coverage of the crash of the Mars Orbiter.

Duck Typing

http://c2.com/cgi/wiki?DuckTyping

What’s…


👈 Rock On! | TOC | Bibliography 👉

3-As Pattern

http://c2.com/cgi/wiki?ArrangeActAssert

A short description of the Arrange-Act-Assert, or 3-As, pattern.

Manifesto for Agile Software Development

http://www.agilemanifesto.org

The website for the Agile Manifesto, which espouses some core values and practices for lightweight software development.

Angular

https://angularjs.org

The website for the Angular framework.

Book Resources

http://www.pragprog.com/titles/vsjavas

Official website for this book, with links to the source code, errata, and forum for discussions.

Chai

http://chaijs.com

Website for Chai, a fluent and expressive assertion library.

Express

http://expressjs.com

Website for Express, a lightweight web framework for Node.js.

Express Generator

http://expressjs.com/en/starter/generator.html

A convenience tool to generate…


👈 Processing Forms | TOC | Using Helpers 👉

Your application may allow users to upload files. For example, a bug-reporting system might let users attach log files and code samples to a problem ticket, or a blogging application could let its users upload a small image to appear next to their articles.

In HTTP, files are uploaded as a multipart/form-data POST message. As the name suggests, forms are used to generate this type of message. Within that form, you’ll use <input> tags with type=”file”. When rendered by a browser, this allows the user to select a file by name…


👈 Processing Forms | TOC | Using Helpers 👉

Your application may allow users to upload files. For example, a bug-reporting system might let users attach log files and code samples to a problem ticket, or a blogging application could let its users upload a small image to appear next to their articles.

In HTTP, files are uploaded as a multipart/form-data POST message. As the name suggests, forms are used to generate this type of message. Within that form, you’ll use <input> tags with type=”file”. When rendered by a browser, this allows the user to select a file by name…


👈 Update the State with Events | TOC | What You Learned 👉

You already know how to update the application state in response to user actions. Another common scenario is updating the state based on the response from a remote server. What makes this different is that communications like this are asynchronous, meaning the server request goes on in the background while your code keeps running. Nevertheless, setState also fits the bill when you need to update the state in response to a server. As an example, we’ll add save functionality to the word counter. …


👈 What’s Available (Test Harnesses): | TOC | Key Concepts: 👉

Cobertura

http://cobertura.sourceforge.net

Cobertura (Spanish for “coverage”) is a code coverage tool. When you run a set of tests, it tells you how well tests exercise the tested code. As an added bonus, it also calculates McCabe’s Cyclomatic Complexity, one of the best metrics we’ve seen for spotting complicated code that’s sure to have bugs.

Emma

http://emma.sourceforge.net/

Emma is another great, very popular coverage tool.

Clover

http://www.cenqua.com/clover

Another code coverage tool, Clover has integrated plug-ins for most of the popular IDEs out there.

Fit

http://fit.c2.com

Fit takes a unique, user-friendly…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store