2021-05-04

2021-05-04 Tuesday - Book Review - Software Architecture with C++

 

image source: Amazon.com

Full Disclosure: Naved Mahdi (Marketing Coordinator at Packt, very graciously offered to provide me with an eBook copy to review.

Software Architecture with C++, by Adrian Ostrowski and Piotr Gaczkowski

Software Architecture with C++: Design modern systems using effective architecture concepts, design patterns, and techniques with C++20

https://www.amazon.com/Software-Architecture-effective-architecture-techniques/dp/1838554599/

My Book Review 

Imagine spending thousands of dollars to attend some of the best world-class conferences. In addition to the cost of the conference, you will also incur travel costs, hotels, meals, parking, and the costs of the time spent being away from your full-time job. While attending such conferences – you have the opportunity to sit in on sessions – presented by leading practitioners – but you will be challenged to decide which sessions to select – and you will inevitably have to miss out on some when choices must be made. Embodied in this book are some of the most important lessons that you might glean from attending several such conferences. The additional value of this book – is that it is concisely written – and in the latter chapters, provides a specialized focus through the lens of Software Architecture with C++. However, many of the lessons conveyed in its pages are applicable, regardless of your language choice. By learning C++ you will become a better programmer. Period. You will have a deeper understanding of the underlying design and performance considerations of all programming languages – and you will have added a powerful tool to your toolbox.

This book is the equivalent of a Master Class on Software Architecture with C++

What I Particularly Liked About this Book
  • Coverage of C++ 20, and discussion of the evolution of changes from C++98, C++11, C++17
  • Holistically examines Software Architecture.
  •  Provides an opinionated view of C++ usage in implementing Software Architecture – that has a fair representation of broad industry practices and conventions.
  • Touches on Cloud Native Architecture – as well as older Service Oriented Architecture – as well as Microservices.
  • Domain Driven Design
  • The discussion of SOLID and DRY principles – and the suggested list of some well-written (and mature) libraries/frameworks.
  • The discussion on stateless and stateful,  in Chapter-2
  • Chapter-3’s discussion on architecture view and documentation generation
  • Chapter-4’s inclusion of the Fallacies of Distributed Computing and CAP Theorem, as well as the discussion on IaaS, PaaS,  SaaS, and FaaS models. Overall, this is a substantial chapter that covers a lot of significant material – and is notable for its concise and broad coverage of architecture patterns.
  • Chapter-5’s demonstration of the evolution of a design – starting with a C++17 implementation – and showing the transition to a C++20 implementation.
  • I greatly appreciated the inclusion of the suggested entries in the “Further reading” at the end of each chapter.

There is much more I could say about the goodness in each of the chapters of this book - but I will leave that discovery for you to enjoy yourself.

Chapters:

  1. Importance of Software Architecture and Principles of Great Design
  2. Architectural Styles
  3. Functional and Nonfunctional Requirements
  4. Architectural and System Design
  5. Leveraging C++ Language Features
  6. Design Patterns and C++
  7. Building and Packaging
  8. Writing Testable Code
  9. Continuous Integration and Continuous Deployment
  10. Security in Code and Deployment
  11. Performance
  12. Service-Oriented Architecture
  13. Designing Microservices
  14. Containers
  15. Cloud-Native Design

Note: I rarely give 5-star reviews - this book exceeded my expectations. 



For a deeper exploration of C++ Object Oriented Programming concepts, I highly recommend Dorothy Kirk's new book: Demystified Object Oriented Programming with C++, also from Packt.

2021-05-04 Tuesday - Drawing Lines In The Sand

 

https://pixabay.com/photos/king-artus-metal-sculpture-bronze-1507392/ 

(sculptor: Rubin Eynon)

A good architect knows how to balance the needs/demands of the business - against the constraints of the context in which a solution must be sought....and a balance of risks/forces maintained.

Tricky business that - knowing where to draw the line in the sand.

 

 

2021-04-13

2021-04-13 Tuesday - Book Review - Building Cross-Platform GUI Applications with Fyne

 

image source: Amazon.com

Building Cross-Platform GUI Applications with Fyne: Create beautiful, platform-agnostic graphical applications using Fyne and the Go programming language

 

My Book Review: 

Full disclosure: Naved Mehdi, Marketing Coordinator with Packt provided me with a free eBook to read for this review.

Fyne is a Cross platform GUI in Go inspired by Material Design

I enjoyed reading this new book by Andrew Williams, CEO at Fyne Labs
Note: The eBook PDF version I reviewed is 318 pages.

The book includes the following chapters:
1.    A Brief History of GUI Toolkits and Cross-Platform Development
2.    The Future According to Fyne
3.    Windows, Canvas, and Drawing
4.    Layout and File Handling
5.    Widget Library and Themes
6.    Data Binding and Storage
7.    Building Custom Widgets and Themes
8.    Project Structure and Best Practices
9.    Bundling Resources and Preparing for Release
10.    Distribution – App Stores and Beyond
11.    Appendix A: Developer Tool Installation
12.    Appendix B: Installing Mobile Build Tools
13.    Appendix C: Cross-Compiling

What especially appeals to me about this book:

  • I think it is still early days for the Fyne library – and I anticipate there are lots of opportunities to contribute to the Open Source project.
  • I am very interested in better options for cross-platform development – and keep an eye out for  emerging tools, such as Fyne.
  • In my primary role as a Consulting Architect/CTO - I have limited opportunities for day-to-day  hands-on practical experience developing mobile applications – and this book does a good job of patiently walking me through all of the detailed steps.
  • The usage of the Go Language was very appealing to me – and investing time in learning the Fyne framework seems to have a high likelihood of increasing my knowledge and expertise with Go.
  • I very much appreciated the clear and straightforward writing style of the author.
  • There is a companion Github repository for the book (see Errata below)
  • I appreciated the coverage in Chapter-1 of the history of mobile development and the examination of the rationale behind the different approaches that have evolved over time.
  • Continuous Integration and TDD is a central theme in the vision of the Fyne creators
  • Fyne is platform-agnostic
  • Fyne Vision Statement: “Fyne’s APIs aim to be the best for developing beautiful, usable, and lightweight applications for desktop and beyond.”


A few selected notes:

  • “This book is written both for Go developers who are interested in building native graphical applications and for those with platform-specific GUI experience looking for a cross-platform solution.”
  • “a Material Design-inspired user interface look and feel.”
  • “at least version 1.12 of Go” is required
  • Fyne 2.0 covered


Errata (reported to Packt):
On page X, the link to the companion github repository in the eBook I previewed is incorrect, it should be 


Additional Fyne-related links:



WordCount

Copyright

© 2001-2026 International Technology Ventures, Inc., All Rights Reserved.