Categories
Book Review

Design Patterns – Book Review

I believe this is the third time I read Design Patterns: Elements of Reusable Object-Oriented Software  – by Erich Gamma, Ralph Johnson, Richard Helm and John Vlissides. This is the first time I bother to review a book I have read before, but this is such a classic it is hard to avoid.

The Wikipedia definition of a design pattern is a “general reusable solution to a commonly occurring problem within a given context in software design”. The point of the book is cataloging the most generic and useful patterns. Most patterns also have little analysis of details on ways you could implement them.

Every time I read this I appreciate it more, and come up with better ideas on how to improve the design of my classes.

Some people seem to think it is too heavy and technical. Personally I like it, but if you want something lighter, check out Design Patterns Explained: A New Perspective on Object-Oriented Design (which I am stunned to realize I never got around to reviewing), which is a simpler review of design patterns.

 

 

Categories
Book Review

Code Complete 2 – Book Review

I first read Code Complete in 1997, a few years after I started coding professionally. I learned a lot about how to make my code more readable and reliable, and even re-read it a few years later, with the same effect.

Code Complete – A Practical Handbook of Software Constructions, 2nd edition (released in 2004) is even better. The coverage is quite expanded, with small (but useful) forays into gathering requirement, design and architecture, in addition to all the practical coding stuff. It is bound to be useful even to a seasoned professional coder.

While I am well aware of many of the practices, just by reading the book I found I was much less willing to cut corners when programming.

There are a couple of things that I didn't like, though

– Some sections seem to be unnecessary or too verbose (which also explains the 960 pages of the book)

– There are references everywhere to a special site, for updated resources. Every single time I checked, what it had was the exact same resources as the book version.

– In the ePub version, code formatting is sometime painful (hardly the book's fault, but something to be aware of if you get it as an eBook)

– When speaking of tools, there is mostly hand-waiving. There are no specific examples. Of course, the intent is that the book don't quickly get outdated.

Overall, strongly recommended for all coders, starting or old. In the same line, Clean Code has better coverage on how to design and refactor better classes. I do enjoy the fact that Code Complete often mentions actual research stats when recommending practices, however.

Categories
Book Review

Clean Code: A Handbook of Agile Software Craftsmanship – Book Review

Clean Code: A Handbook of Agile Software Craftsmanship, by Robert C. Martin is a book about how to keep your code readable, flexible and naturally bug free.

It reminds me, of course, of Code Complete, which I really liked when I first read it (1997). Clean Code is much weaker on the research side (i.e.: there is a big difference between say “this is bad because I say so” and actually showing references to research that prove that a specific practice causes more bugs).

However, as far as I remember the coverage of OOP in Code Complete was much weaker, and this is where Clean Code shines. There are plenty of interesting and useful ideas on how to clean your classes, when and how to refactor them, and much more. There are also some practical refactorings of  real code, which I found somewhat useful – mostly because I read the book on an iPad, and switching around to keep track of what happened is somewhat painful in comparison to flipping a page.

Other than that, I strongly recommend the book for coders everywhere – just keep in mind that all the samples are in Java! I haven't used Java in years but I could still keep up with everything.

Categories
Book Review

Visualize This: The FlowingData Guide to Design, Visualization, and Statistics – Book Review

Visualize This: The FlowingData Guide to Design, Visualization, and Statistics – by Nathan Yau, covers data visualization, including how to get, parse and visualize the data.

There is plenty of code in several languagues (R, Python and JS mostly, with some Flash), and there are plenty of great looking results which really tell the story well.

If you are interested in Data Visualization in general or just need to make some maps with points in it, this is a great book.

 

Visualize This

Categories
Book Review

The Art of SEO: Mastering Search Engine Optimization – Book Review

The Art of SEO: Mastering Search Engine Optimization – is pretty good.

the Art Of SEO

 

I'd say it probably cover most of what you need to know. It doesn't cover a few tools I'm fond of (but of course it wouldn't be possible to cover all of them).

Usually at this point I'd go through my notes and say what I liked about the book – but this where its main problem comes from – it is too long.

 

The authors seem to have a talent for extending text well beyond what you'd think possible, and they are clearly not fans of hyperlinking – many times things will be explained in one chapter and then be explained almost exactly the same from another angle in the next chapter (or even sections on the same chapter). While this do save the time of anyone who is looking at sections for a specific purpose, if you are reading the whole book through it is very tiresome.

That said, I do have a very large amount of highlights and notes on this book. It is good stuff, I just wish the authors could be a little (or lot) more succinct.

 

 

 

Categories
Book Review

Beautiful Visualization – Book Review

I have finished reading Beautiful Visualization a few weeks ago. It does have a lot interesting content, so I expect the review to take a while.

The book is composed of essays in visualization. Some are awesome – they are not only interesting, but can also teach a lot about the field. Others are just a waste of space. I'll comment on what I found interesting.

Chapter 1. On Beauty

Mostly generic, with an interesting section on the table of elements and some useful advice.

Chapter 2. Once Upon a Stacked Time Series

Useful advice on questions that can be answered with visualization and data sources, as well as an interesting practical data visualization.

Chapter 3. Wordle

Talks about Wordle, the word collage system, and some of the techniques that went into building it. Nice.

Chapter 4. Color: The Cinderella of Data Visualization

Lots of useful examples and very useful advice. Includes  some R code.

Chapter 6. Flight Patterns: A Deep Dive

Talks about Flight Patterns, a beautiful visualization of flight data.

Flight Patterns
Flight Patterns

Chapter 7. Your Choices Reveal Who You Are: Mining and Visualizing Social Patterns

Interesting view of social patterns – which I had no idea began in 1930. This leads to a cool visualization of book purchases on Amazon, for technical and political books. The way the book clusters interconnect shows quite a bit about the content.

Chapter 8. Visualizing the U.S Senate Social Graph (1991-2009)

Very good. Shows how the senate is divided between the parties using the votes as the links between senators. Lots of info on how it was built.

Chapter 9. The Big Picture: Search and Discovery

Graphics of queries for Yellow Page and the Netflix data set. Nice, with surprising conclusions and some insight on how to replicate.

Chapter 10. Finding Beautiful Insights in the Chaos of Social Network Visualizations

About SocialAction – a tool to generate social visualizations.

Chapter 11. Beautiful History: Visualizing Wikipedia

Several neat visualizations of Wikipedia edits.

Chapter 13. The Design of “X by Y”

A presentation of a visualization project of all entries to the Prix Ars Electronica. Some cool visualizations.

Chapter 15. This was 1994: Data Exploration with the NYTimes Article Search API

Nice view of the Times API – and some awesome visualization using the data.

Chapter 16. A Day in the Life of the New York Times

Neat visualization of the NY Times readers

Frame of NY Times log animation
Frame of NY Times log animation

, and a great view into the process of creating it.

Chapter 19. Animation for Visualization: Opportunities and Drawbacks

A big view into various animation possibilities on visualization, and how well they work. Plenty of advice and examples.

Conclusion

Overall, I strongly recommend the book for anyone who is interested in visualization. There is plenty to see and learn in this book.

Note: Some people complained about the images in the PDF version being too small. I read the book on an iPad, using Kindle (Mobi format), and you can zoom into images by double-tapping them (you can them zoom and scroll). They looked fine.

Categories
Book Review

Interactive Data Visualization for the Web – Book Review

I've just finished reading Interactive Data Visualization for the Web (An Introduction to Designing with D3), by Scott Murray. This book covers the basics on how to use D3, a library to make it easier to do data visualizations (see the very cool gallery for an example of what has been done with it).

This is Early Release Version 3 of the book, so there may be changes in the finished release.

The book covers the basics on how to use D3 – starting with a bar chart all the way to how to convert shapefiles and display maps.

One thing I found interesting is how similar using D3 feels to JQuery. They very much are helper libraries. I expected D3 to be more of a delphi component – point it to the data, set a few parameters and it goes from there. But in reality, there will be a quite bit of code for anything you do. The advantage is that it is very, very flexible.

The style of the book is quite light, and it is targeted to all users who want to do data visualization – not just programmers. Thus, there is a quick introduction to a lot of basics, including the Web, HTML, DOM, CSS, Javascript and SVG. It seems feasible that a dedicated reader would be able to follow it without much programming experience.

Overall, I liked it. The examples all work and are useful, and it took me about 4 hours to read it, including trying out all examples and following some of the links to useful resources.

Categories
Book Review

Profit Pulling PPC Ads – Book Review

Profit Pulling PPC Ads by Karon Thackston – covers how to write PPC ads for maximum CTR and conversion.

While I have read a few PPC book – mostly about Adwords – I believe this is the first book about copywriting for PPC ads I've ever seen.

Obviously this is an important topic, since even minor changes can have large differences on your CTR or conversion rates. Given that I find it hard to write good Adwords ads (and that while my CTR is great for some keywords, conversions are nowhere near as good), I bought it right away. I also know the author from a few other books and her newsletter, although I got the book offer from Wordtracker.

There was plenty of useful advice (I have about 5 pages of notes from the 77 pages of the book). Here is what I liked:

  • If you read any copywriting book, you probably saw this – find your target market and write for them. Still important for PPC.
  • Differences between active searchers and passive onlookers (Adsense and Facebook, for example).
  • List of ad styles, with a couple of examples each.
  • 5 Step Process to write your ad.
  • Reminders of what you can't include on your Google and FB ads.
  • 35 ideas for ads (category sales, coupons, statistics, etc).
  • Using Dynamic Keyword Insertion on Adwords.
  • Quality score – how to improve yours – and keeping in mind that a bad score with better conversion can be worth much more to you.
  • PPC Copywriting plan: lots of suggestions for words, goals, motivations and more.

Conclusion

Profit Pulling PPC Ads is very short – 77 pages. It took me about an hour to go through, even while taking notes. There isn't much content here, but there is useful advice, and any change on your ads' conversion rate will easily cover the US$49 price (I paid US$29, but there was a special on the book release). I will certainly be going through my ads after reading it.

Categories
Book Review

R Graphics Cookbook – Book Review

I have just finished looking through (and trying out) the recipes in R Graphics Cookbook, by Winston Chang. First of all, I'm very much a beginner in R, but it was possible to follow the examples.

For those wondering what R is – it is an interesting language for statistical computing and graphics. Usually I am more of a Delphi guy (although I have used many other languages in the past, and still use PHP when adequate), but R has a bunch of features and libraries that makes it easier for that area, and it is also used on a few courses – thus my interest.

One thing I really liked about the book is that the example data comes straight from a package. So you install and download them with a simple command in R when you start the book, and you just have to do a library(gcookbook) each time you use an example in a session. Very nice (vs downloading, setting a folder or using the full name for each file,etc).

The book seems to cover the material well enough, and the discussion section usually present useful options. For example, on the recipe Labeling Points in a Scatter Plot the basic solution is presented, and then it shows how to shift labels so they don't crowd the data points, or how to add only a few relevant labels. The examples I tried almost all worked (except for one that needed an extra library, which only took a install_packages call), which unfortunately is not true for many technical books.

Since my background only include the most common graphs, I also learned about a few other graph types, such as correlation matrix, dendograms, vector fields and choropleth map.

Overall, pretty good.

It is interesting to note that this was a free review copy – fortunate, too, since I had almost bought it a few days before getting an offer to review it.

You can get it directly from O'Reilly or other places. The advantage of O'Reilly is that their e-books are DRM-free (and usually available on mobi, PDF and ePub formats).

Categories
Book Review

Sell More Software – Website Conversion Optimization for Software Developers – Book Review

Sell More Software – Website Conversion Optimization for Software Developers by Patrick Mckenzie is a collection of his blog posts on marketing, with a few new articles added.

Why would you buy this, instead of going to his blog? Well, I recently subscribed to his e-mail list and got a sample of the new chapters. Not only it was excellent, but I also find it much more comfortable to read on my iPad than on my computer, and unlike his blog it is much easier to make notes in the mobi version of the eBook.

So what does the e-book cover? It is divided in 3 major parts:

Selling your Stuff

  • You should probably send more e-mail than you do: covers a number of reasons why e-mail is still important. It converts great, your list is your list (unlike in Facebook or Twitter, where it is really theirs and they can start charging per broadcast like FB did, and RSS tends to get ignored). Some of the click rates he mentions are amazing – 1% for a link in his blog, 15% of the full mailing list for an e-mail. E-mail also keeps leads warm and can help you get more revenue out of existing customers
  • Does Your Product logo actually matter? – you can get 10% less or more of your conversion rate with a logo.
  • Dropbox-style Two-sided sharing incentives – using referrals to get more customers, and how he implemented it.
  • Two-Sided Referral Incentives Revisited! – continuing the previous article – didn't work for him.
  • Engineering Your Way to Marketing Success – using benefits instead of features. Getting data from product usage for content generation and automated error detection and correction.
  • Selling Software to People Who Don't Buy Software – make sure your program looks good, give good support and make it easy to buy.
  • Increase your Software Sales – use analytics, do SEO and get links. Include a sidebar box listing synonyms for your key search terms (great example here, I plan to follow it). Blog – but try to keep it evergreen. Adwords.
  • The Black art of Saas Pricing – how to charge for your service. Apparently, being cheap can quite frequently be a very, very bad idea – and the people who will only get the cheap version often need the most support. Also some great advice on price testing.

Increasing Conversion

  • Stripe and A/B Testing Made me a Small Fortune – how he implemented Stripe (sounds like a great service, BTW). Interesting part on how to use git to test what version of a library breaks your application. Some testing on limits with great effects. 
  • The Most Radical A/B Test I've ever done – how he tested dropping a downloadable app for the web only version.
  • Keeping the User Moving Towards Conversion – short post on adding buttons to screenshots. Might try this myself.
  • Practical Conversion Tips for Selling Software – monitoring your sales funnel and optimizing it.
  • Minor Usability Errors in Checkout Funnel = You Lose Lots of Money – interesting look on how a simple cart UI logic caused him to lose 94% of CD buyers.
  • 10-Minute Tweaks to Boost your Conversion – some simple ideas on how to improve conversion. Interesting stat on people not returning from thumbnail clicks – I wonder if it still holds true today.

All about SEO

  • SEO for Software Companies – based on a presentation, pretty good if you aren't already proficient. Some great ideas on how to use/create content.
  • Strategic SEO for Startups: more SEO stuff. Surprising stuff: people looking for [free bingo cards] convert at 5 times the rates of regular searchers!
  • The Big Book of Getting People to Link to you
  • Developing Linkbait for Non-technical Audience
  • Why You Shouldn't Pay any SEO You can afford – interesting look on the economics of SEO.

Conclusion –  This chapter has a nice article on churn rates.

Some of the other advice I liked:

  • If you have to worry about sales, marketing, etc AND coding, you are not a software developer – you are in business.
  • You should talk to people BEFORE you build your product/service, and find at least a few who would be willing to pay what you want for it, or give up on this approach to the product and look for another.
  • Getting a commitment out of someone before giving them your software can really increase conversion.
  • Publish early: if you have no content, talk about the problem domain and the need of your customers.

My Own Conclusion

Patrick's advice is pretty good and the book is also a pleasant read – I recommend reading both the book, his blog and signing up for his mailing list – there is a lot of excellent content there.