Book Review: My first book – Heroku Cloud Application Development

0

I was fortunate to publish my first book about Cloud application development using Heroku (http://www.heroku.com ). The book came out in April 2014 and is published by Packt Publishing (http://www.packtpub.com ).

This blog item was long overdue as being the author, it is my responsibility to apprise the readers of what they should expect from this book. The do’s and don’ts. In this blog item, I review the whole book and cite what you (as a reader) should look for.

First things first. Heroku is an AWESOME platform as a service (PaaS). It is rich in features, seamless in deployment and nimble in execution. As a developer of cloud based apps, you have an amazing resource pool to work with on Heroku besides having an extremely rich library set (add-ons in Heroku parlance) to work with. I started learning Heroku about four years back because it was so easy and quick to deploy web apps on Heroku. In the process, I gained experience in the full stack web development and deployment ecosystem. I became familiar with Heroku the platform, the toolset around it and a rich set of add-ons you can use on Heroku.

I am from a school of thought that believes in fast execution and guaranteed return on investment. Heroku is just that. You write your apps and leave the rest to this amazingly robust, scalable and highly available platform. Also, Learning Heroku comes naturally if you have a UNIX background, because most of the client side interface (CLI) Heroku provides uses common unix utility names. Take for example the command to check the status of your Heroku process:

$ heroku ps

This book is my attempt to share my understanding of the Heroku platform. The first two chapters introduce you to the concepts of Cloud computing and what problem Heroku solves for you in that context. You also get an inkling of the Heroku overall component architecture and finally you take it for a spin and play with it.

Chapter 3, 4 & 5 are meant to get you going with building, deploying (running) and managing your cloud apps. My attempt is to make you familiar with the tools before you start using them, so I have introduced all concepts, techniques and tools before providing examples of using them. You will master the underlying principles too as you start using the runtime environment provided with Heroku. By the end of chapter 5, you would have gained a reasonably good exposure to working with your Heroku based cloud app.

After this, you can straightaway do something completely different (and needed) than what you have been doing all along. You try building a cloud app on Heroku using Java as your programming language and Eclipse as your development environment. This surprise is intentional. This is done to show you how easy it is to move to a completely different programming environment and work with Heroku as seamlessly as before. Add a Eclipse plugin for Heroku on the go and you are ready to go. Not to mention that Java based app templates the Eclipse plugin has built-in that lets you start from somewhere rather than doing everything from scratch.

The seventh chapter is important in many ways. It introduces you to the Cloud 9 IDE (http://c9.io )– a code development tool (like Eclipse) on the cloud, which has built-in integration with Heroku. It supports multiple version control systems (git, bitlocker) and provides a very intuitive development environment. I call it the “Eclipse of the cloud”. And that is not all. How can someone leave database integration and DNS configuration behind? These are two important aspects of any web app and that is what I cover in detail in this chapter. To wrap up the seventh chapter, I provide you hints on how to scale your large scale apps to use the 2X/PX dynos provided by Heroku.

The last three chapters are the “Advanced” aspects of the Heroku platform including How security is managed for developers writing apps for deployment on Heroku and techniques to run maintenance on your Heroku app and ways to troubleshoot it using multiple approaches depending on the root cause of the problem.

I would like to single out chapter 10 here which gives you a heads up of what is coming next or is in the current pipeline of production features for Heroku. These include the Heroku labs feature, support for Websockets and the Heroku REST API that helps you program against Heroku robust platform services and build your own end to end web apps.

I have also written an appendix for the book which covers the mobile application development toolkit called Appery.io (www.appery.io). I also show a step by step procedure to build a sample production ready mobile app that can run on iOS, Android or Windows. Along the way, I introduce you to Appery.io itself providing hints on how to use the different features of this wonderful mobile app development platform for the cloud. And what makes me particularly happy is Appery.io’s out of the box integration for deploying your mobile app on Heroku. How easy is that? Try it.

In the end, I would like to thank Packt publishing for being patient with me and coming out with my book like I wanted it to be. The book is for beginners and intermediate level Heroku users. The book may seem verbose at times but that is intentional. The goal is to reaffirm what you have learnt earlier – again and again. It has been a pleasure writing this book. If you need any help, guidance about Heroku or How to write a book J, please feel free to reach out to me at ahanjura <dot> gmail <dot> com. I would be glad to help. Thanks for reading so far.

Multilingoism and the poor programming array

0

I recently went to a Citibank ATM in the iLabs building only to realize the power of arrays J construct of programming languages. If you recollect, once you swipe your card, you see a multi-lingual screen that asks you to choose your preferred language. Mine is English or Hindi. I chose English only to find Telugu text in the following screens. The illiterate that I am when it comes to Telugu, I cancelled the transaction and tried again. I again got the same response and boy was I angry?. Well, I had to get the money somehow. So I wondered how? This is what happened next.

I swiped my card again and chose the language shown next to English, just below it. What I saw next seemed to make sense. The following screens showed Marathi text which in the original list was just after Telugu. So, that was it. An accidental error of array indices. Somehow the display showed the languages shifted by a certain index based on the “magical array” used by the developer who loved the country more than I do (and hence made me learn other languages). One thing I was glad about however was that the array was circular ;) so I didn’t read anything that didn’t resemble like an Indian language.

Books for Software Architects – a collection (from Linkedin group “97 things an architect….”)

0

1. The Art of System Architecting; Eberhardt Rechtin + Mark W. Maier; CRC Press; 1997

2. xUnit Test Patterns.

3. Essential Software Architecture, by Gorton.

4. Beyond Software Architecture:Creating and Sustaining Winning Solutions, by Holmann.

5. Glen, P. (2003). Leading geeks: How to manage and lead people who deliver technology. San Francisco: Jossey-Bass.

6. Xia, W., & Lee, G. (2004). Grasping the Complexity of IS Development Projects. Communications of the ACM, 47(5), 68–74.

7. Cooke-Davies, T., Cicmil, S., Crawford, L., & Richardson, K. (2008). We’re Not in Kansas Anymore, Toto: Mapping the Strange Landscape of Complexity Theory, and Its Relationship to Project Mangement. IEEE Engineering Management Review, 36(2), 5–21.

8. The No Asshole Rule, Robert I Sutton

9. The Nonverbal Advantage, Carol Kinsley Goman

10. Group Dynamics for Teams, Daniel J. Levi

11. How Google Tests Software, James A Whittaker

12. Agile Testing, Lisa Crispin and Janet Gregory

13. Release It!, Michael T. Nygard

14. Continuous Delivery, Jez Humble and David Farley

15. Clean Code, Robert C. Martin

16. The Productive Programmer, Neil Ford

17. The Pragmatic Programmer, Andrew Hunt and David Thomas

18. Brown, W. J., Malveau, R. C., McCormick III, H. W., & Mowbray, T. J. (1998). AntiPatterns: refactoring software, architectures, and projects in crisis. John Wiley & Sons, Inc. New York, NY, USA.

19. The Mythical Man Month

20. Babar, M. A., Dingsoyr, T., Lago, P., & Vliet, H. (2009). Knowledge Management in Software Architecture: Theory and Practice. Berlin, Germany: Springer Berlin Heidelberg.

21. Williams, B. J., & Carver, J. C. (2010). Characterizing software architecture changes: A systematic review. Information and Software Technology, 52(1), 31–51.

22. Kruchten, P., Capilla, R., & Duenas, J. (2009). The Decision View’s Role in Software Architecture Practice. IEEE Software, 26(2), 36.

23. Falessi, D., Babar, M. A., Cantone, G., & Kruchten, P. (2010). Applying empirical software engineering to software architecture: challenges and lessons learned. Empirical Software Engineering, 15(3), 250–276.

24. Jansen, A., Avgeriou, P., & van der Ven, J. S. (2009). Enriching software architecture documentation. Journal of Systems and Software, 82(8), 1232–1248.

25. Documenting software architectures: views and beyond. Boston, MA: Pearson Education.

26. Software Architecture in Practice

27. Evaluating Software Architectures, Methods and Case Studies

28. Documenting Software Architecture, Views and Beyond

29. Architecture-Centric Software Project Management: A Practical Guide

30. http://www.cs.utexas.edu/~EWD/transcriptions/EWD03xx/EWD340.html