Quote

Friday Night Cocktails: the French Manhattan


David Lebowitz has a new book out now called “Drinking French”, and it possible that we need it more than ever. Here’s a recipe from it, a nice spin on the classic Manhattan. Enjoy: French Manhattan recipe

You can buy it everywhere, including here.

Quote

It’s a good time to check out the Criterion Channel

If you are tired of other streaming services, or if you want to improve the films you are watching, now is a good time to check out the high quality films on  The Criterion Channel.

Right now they have a 14 day free trial. Now, if you are not a cinephile, the list of films they have could feel daunting. To make it simple, here is a list of 50 essential films you can watch there, with reasons why you want to see them.

If you aren’t sure, you can check out Criterion films streaming on Netflix, Apple TV and more. Consider giving them a try, though.

Quote

Do Authoritarian or Democratic Countries Handle Pandemics Better?

There’s already been some pundits claiming autocratic countries have been handling the pandemic better than democratic countries.  This piece on the website for the Carnegie Endowment for International Peace argues differently. It’s worth reading, but a key part of the piece is this:

Despite attempts by politicians to use the crisis to tout their favored political model, the record so far does not show a strong correlation between efficacy and regime type. While some autocracies have performed well, like Singapore, others have done very poorly, like Iran. Similarly, some democracies have stumbled, like Italy and the United States, while others have performed admirably, like South Korea and Taiwan. The disease has not yet ravaged developing countries, making it impossible to include poorer autocracies and democracies in the comparison.

Keep this in mind, especially afterwards, when writers and authorities argue that we need more controls on people to fight future pandemics.

Quote

On specific Agile (software development) traps

There’s much positive to be said about the benefits of Agile software development, and the shift of software development teams is one sign that many feel this way.

However, I think there are some limits to Agile, and this leads teams to fall into certain traps over and over. Indeed, the Wikipedia page highlights a common criticism of Agile, namely:

Lack of overall product design
A goal of agile software development is to focus more on producing working software and less on documentation. This is in contrast to waterfall models where the process is often highly controlled and minor changes to the system require significant revision of supporting documentation. However, this does not justify completely doing without any analysis or design at all. Failure to pay attention to design can cause a team to proceed rapidly at first but then to have significant rework required as they attempt to scale up the system. One of the key features of agile software development is that it is iterative. When done correctly design emerges as the system is developed and commonalities and opportunities for re-use are discovered.

Now, it’s not the case that teams either do design or not. But I have seen that there are a number of specific traps bigger that Agile teams fall into that arise from lack of design. These traps arise from making tactical or limited decisions outside of a larger framework or structure, which isn’t surprising since Agile followers are guided by the principles that the “best architectures, requirements, and designs emerge from self-organizing teams” and “working software is the primary measure of progress”. Unfortunately what I’ve seen that lead to is:

  • Poor middleware/database system decisions: with this trap, you get teams making a decision on deploying a specific middleware package or database system that will support the software development they are doing. However, while that may be great for the Dev, it may not be great for the Ops. If you have enough teams making tactical decisions, you may end up with a more complex system than is necessary and greater technical debt that you want. Once you get enough data into your database systems, trying to reverse the decision may result not result not only in new development and testing, but a small (or not so small) migration project as well.
  • Poor infrastructure decisions: likewise, with this Agile trap I have seen teams using IaaS pick different images to deploy their software onto. Like the database problem, developers may choose one operating system (e.g. Windows) over another (e.g. Debian) because they are comfortable with the former, even if the production environment is more of the latter. The result can be your organization ending up with multiple VMs with many different operating systems to support and thereby increasing the operational costs of the system.
  • Poor application framework decisions: I see less of this one, although it can happen where teams pick an assortment of application frameworks to use in creating their software, and as with middleware and infrastructure, this will drive up the support effort down the road.

Given these traps, I think the way to avoid them is to inject some specific design phases into the overall software development lifecycle. One way to do that is to revisit a software development lifecycle (see diagram below) used by practitioners at IBM and documented in places like this IBM redbook. It has a waterfall quality about it, but it doesn’t have to be limited to waterfall type projects. It can be highly iterative.

The lifecycle process is shown here (taken from the redbook):

 

GSMethod

The part of the lifecycle in the large box is iterative and not all that different from an agile sprint.  But here you take time to explicitly make design / architecture decisions before building  software. You continue to iterate while making important design decisions before building.

Now, before you start your iterative software development lifecycle, you should need to  make specific architectural decisions. You should make these specific decisions in the solution outline and macro design phase. For smaller teams, these two phases may blend into one. But it is here in solution outline and macro design where you make decisions that are fundamental to the overall solution.

For example, in solution outline you could make overall architectural decisions about the application architecture, the choice of infrastructure technology, what application frameworks are the target for the team. These overall architectural decisions guide the dev, test and ops teams in the future. You may also decide to park some of these decisions in order to do further discovery.  Macro design could be next, where each of the dev teams make certain design decisions about their technology choices before they proceed with their iterations. As they are building and deploying code, they can run into issues where they need to make further design decisions, either due to problems that arise or technology choices that have to finally be made: and this is where the micro design phase is useful.  Micro design decisions could be quickly made, or they may require spikes and proof of concepts before proceeding. Or there could be no decisions to be made at all.  The main thing is more design checkpoints are built into the development lifecycle, which can result in less complexity, less maintainability costs, and less technical debt down the road. What you lose in velocity you can make up in overall lower TCO (total cost of ownership).

There is a risks to this type of approach as well. For example, if the project gets hung up with trying to make design decisions instead of gather requirements and making working software. The key stakeholders need to be aware of this and push on the design teams to prevent that from happening. If anything, it can help the key stakeholders better understand the risks before getting too far down the road in terms of developing software. Overall I think the risks are worth it if it helps you avoid these common agile traps.

Highlights and Ramblings (a newsletter, as such)


Here’s a list of  random items I’ve been stashing away while working from home in this time of social distancing and the pandemic. Initially my goal was to create a newsletter, and perhaps I still will create one. Most of the newsletters I get, though, read like blog posts. That’s fine. But then why do I need to create a newsletter, when I can just post here. Plus, it will save you another thing to deal with in your inbox. Read when you have nothing else to read.

  1. Privacy: It’s worrying to me that as people try to adapt to social distancing, tech companies continue to do things poorly. I am thinking of Yelp signing up restaurants for GoFundMe, Zoom selling people’s data, and other tech companies ostensibly tracking sick people using cellphone data. It’s hard to think about things such as privacy abuse with all the fear of the pandemic, but it’s something to not lose track of.
  2. Food suppliers: Before the pandemic, it was a given that pickers would migrate to wherever crops were ripe and pick them, Perhaps not anymore. After this crisis, I think the world is going to need to reconsider so many people they took for granted before, be it food pickers, grocery store clerks, or delivery people. I hope this would mean they would be taken better care of. Maybe they will be. Or maybe the push for automation will come on even stronger. We will see soon enough.
  3. Leadership: Impressed to see that the grocer HEB in the US reached out to Chinese grocers to help them deal with the pandemic. Smart. A case study in good business leadership.
  4. Leadership, pt 2: Trump continues to be Trump: a crisis has not altered who he is or how he acts. All I can say is from my vantage point in Toronto that all three levels of government are being effective. It surprised me by how governments can spring to life during a crisis. I haven’t recalled such strong action since the start of the Great Recession. Not something to take for granted.
  5. Entertainment: As entertainers lost venues, it was heartening to see them take to Instagram and other platforms to perform for us. From singers playing new records to actors like Patrick Stewart reading sonnets was a balm.
  6. Scarcity: it was and is a shock to see sections of the grocery store still empty. Eventually it will return, and toilet paper will go back to being a loss leader versus a scarce product.
  7. Fear: lots of people seem anxious and down, understandably. The efforts of people to deal with that has been a comfort.
  8. Making things: Also, since I seem to have more time, I made a zine, did some painting, wrote some python code to process KML.  Blogged, of course.
  9. Food: Like many  people, I am baking and cooking. I mean, what else can you do? I miss restaurants and cafes and bookstores, though. They feed me with more than food.
  10. Other things: I thought this was a good piece on parenthood: https://www.theschooloflife.com/thebookoflife/the-task-of-parenthood/.  Nicholson Baker followed me on Twitter. Whenever I have interactions with prominent people, I think: oh, I should get serious now and not look the fool. But it doesn’t last for long.
Quote

Fun Fluorescent Sculpture because we could use some fun right about now

For more, check out:  Fluorescent Cacti and Leaf Sculptures by Nobel Truong from the great art site,  Colossal

Quote

How to clean with vinegar

Hey. You’re home. You feel: I might as well clean this place. Or maybe you want to get started on your spring cleaning. Good. Here’s a great list of how you can replace many of your kitchen cleaning products with just vinegar (and maybe a bit of water): 18 Places You Should Be Cleaning with Vinegar in Your Kitchen | Bon Appétit

Save money. Cut out those terrible chemicals. Learn some skills. 🙂