May 1, 2014
Designing a Beautiful REST+JSON API
Designing a clean and intuitive REST + JSON API is no small feat. You have to worry about resources, pagination, query parameters, reference...
In our last post we offers our first attempt at an Old School Reading List for New Founders. Since then, a number of individuals including our founder James Lindenbaum, legendary publisher Tim O’Reilly, and several Heavybit community members have come forward with additional works.
In our last post we aimed to establish a shared “history of why” — leaning heavily on the philosophies behind shared code, team process and online businesses. This post explores the evolution of software development in relation to cloud computing including a look at the rise of some of today’s most successful communities.
Agile Web Development: After working for 37Signals on what would eventually become Basecamp, David Heinemeier Hannson used Ruby to build a custom web framework. In 2004 he released that framework as Ruby on Rails and was recognized by O’Reilly and Google as the Hacker of the Year for his open source release. DHH’s book on Agile Web Development is one of the foremost works on modern software practices and his contributions to the Ruby community helped put the language on the map as something professionals could use in their daily work.
Refactoring: Improving the Design of Existing Code: Written by Martin Fowler, Refactoring outlines how developers can take existing code (even poorly designed code) and maintain its external fuction while improving its internal structure and ability to scale. In other words, while it’s tempting to throw away ALL poorly written code, Fowler teaches developers to salvage from the wreckage and do so quickly. The book’s principle language is Java, but since its original publication it has been reprinted for Rubyists as well. Fowler’s Patterns of Enterprise Application Architecture is also an incredibly useful resource.
12 Factor App: Written by Heroku cofounder and Heavybit advisor Adam Wiggins, the 12 Factor App is a methodology for building web applications that use declarative formats for setup automation, offer portability between execution environments, are suitable for cloud deployment, enable continuous deployment between development and production, and scale well without significant changes to tooling or architecture. The methodology is an amalgam of many of Wiggins’ lessons learned during his time at Heroku and has since become an internal playbook.
Beautiful Code: Beautiful Code is an anthology of essays from some of the leading programmers in the industry on how they problem solve with elegance. In it, Ruby creator Matz’s “Code as an Essay” piece urges developers to stop blindly copying and pasting lazy snippets in exchange for succinct, clean code.
The Unix Programming Environment: Written in 1984, The Unix Programming Environment explains the philosophy and architecture behind an army of open source contributors coming together to build larger systems like Linux without top down coordination. The idea here is that rather programs and programmers are most valuable for the way that they interact with each other. In other words, no single entity is more valuable than the whole.
Amazon.com Recommendations: Item to Item Collaborative Filtering: Written in 2003, this paper outlines Amazon’s initial recommendation system and forecasts that, “in the future, the retail industry [will] more broadly apply recommendation algorithms for targeted marketing.” Due to the company’s huge inventory of products, an item-to-item collaboration algorithm was used to match each item viewed, along with a set of related items for potential purchase.
The Unreasonable Effectiveness of Data : Produced by Alon Halevy, Peter Norvig, and Fernando Pereira of Google, this essay outlines how researchers have used Google’s datacenters and distributed processing infrastructure to process larger and larger training corpora for tasks like statistical machine translation, entity detection and information extraction. This paper argues that there’s “no data like more data” and that the potential in a training corpus of one trillion words pulled from public web pages is a huge leap forward.
Hackers and Painters: Written by Y-Combinator cofounder Paul Graham in 2003, this essay discusses how hacking is for many, less a scientific or academic pursuit, and more akin to painting or making. He writes, “Scientists start out doing work that’s perfect, in the sense that they’re just trying to reproduce work someone else has already done for them… Whereas hackers, from the start, are doing original work; it’s just very bad. So hackers start original, and get good, and scientists start good, and get original.” He also asserts that the best hackers and painters show empathy towards the audience or user.