Can you teach an old dog new tricks?

I graduated from software engineering (specialization: AI and robotics) a long time ago. The AI specialization was a big deciding factor for me. I was an avid science fiction reader (dreamer?) and had ideas of building the first “positronic” brain (please don’t laugh, I’m still uncomfortable as to how naive I was).

When I finally got to the AI courses (after three years of engineering), I was a bit disappointed. The courses were less about Neural Networks (NNs) and a lot more about “general” Machine Learning (ML) (e.g. linear regression and the like). The little we learned about NNs was theoretical and very very basic (e.g. perceptrons).

Fast forward a couple of decades and things are different. First, data sets are much larger and more readily available. CPUs are more powerful. This makes the analysis of these data sets feasible and relatively cheap. Finally, you also have a rich eco-system of languages (e.g. Python, R) and frameworks (TensorFlow, Pytorch) that make the NNs accessible for laymen.

Given all of this, I decided to take a couple of months off to get back to AI. I’m unsure if this is a career move or will just be a hobby. My younger self’s interest in AI and NNs might have faded and been replaced by other things but since I don’t want to live with past regrets, I’ll give it a go.

I’ve built myself a study plan. I have time-boxed this experiment until January. After that, I’ll make a decision as to what to do next.

So my approach to learning AI is as follows:

Learning Python

First, most frameworks and tools use Python as their “preferred” language. I have no experience with Python. My first goal is to first become knowledgeable about Python. The ideal would be for me to be able to say I’m an intermediate Python programmer. Here, I’m hoping that my experience with other languages, Java, Ruby, Javascript will help. The resources I will use are:

I like the Jose Portilla courses, there’s a lot of exercises which are a must to learn a new language. I probably also need to think about a project or two to learn the language better.

Learning Machine Learning Techniques

Next, I want to get a broad overview of the current state of machine learning. The following resources will be used:

The second resource is a university course book, I’m unsure that this is the level where I should take this but since I haven’t looked the AI in many years, I’ll at least take a quick look at it as a refresher.

Learning Neural Networks

So there’s a decision that I’ll need to make here. Should I select PyTorch or TensorFlow? Are these two frameworks so dissimilar that I really need to select one? I’m not sure. For the moment though, I’ll focus on TensorFlow as online courses are more readily available. By the time I get to this section of my curriculum, things might be different though. We’ll see. For the moment though, the resources I’ll use are:

I’ll try to blog a little bit about what I find out during this experiment.

A note on diagrams

I’ve been writing object oriented software most of my life. First with C++ and then with Java. You can do OO with other languages of course but these two are compiled. With compiled languages, there’s a tendency to define classes and class relationships quite early in the development. You also tend to refine your OO models in much finer details than with dynamic languages (e.g. Ruby). I’m not saying it’s a good thing, by the way…

I’ve been doing this for close to 25 years. Initially with Booch and Rumbaugh and later on with UML. I’ve done it so much over the years that I tend to disassemble most books (be they science, software and even novels using a bastardized, simplified version of UML). I’ve even done a Game of Thrones taxonomy using UML at the time.

So for the sake people looking at my web site, here is a very VERY small example that gives you an inkling of the diagramming method that may be found here.

In the following diagram:

you’ll find the following relationships and concepts:

  • Any rectangle in a diagram represents a “class”. A class is usually an abstraction of a concept associated with the topic I am talking about. So if I want to talk about the car and the car fabrication process, “Car” would definitively be something that I would want to model.
  • Sometimes (most times?) I will leave the rectangle as is (like the “SUV” or “Sedan” class). Other times, I will model some attributes of the car (for example, its make and model) or some of its operations (“start” and “stop”). When that happens, I will split the rectangle in up to three sections:
    • top: name of the class
    • middle: attributes of the class
    • lower: operations of the class.
  • An arrow linking two classes represent a “generalization” (aka an “is-a” relationship). You can read the relationship following the arrow… so an “SUV is a Car” or a “Sedan is a Car”.
  • Diamonds (empty or full) represent containment. There are two types of containment (aggregation or composition). Composition (full, black) implies that the two classes “life spans” are tied together. The aggregation (empty, white) implies that the two classes’ lifespan are independent. In the diagram, I’ve represented the driver with an aggregation, meaning that their lifespan are not tied while the wheels are tied (basically, they don’t have meaning outside of the concept of a car).
  • Containment relationships may have a multiplicity. For example, a car has 4 wheels.

In any case, UML can get quite complex. What I just showed is a small portion of the class diagramming aspect of UML. It is a much larger spec that also covers sequence and state diagramming. That being said, I find that it’s usually an 80-20 proposition where you can get most of the value of the specification with the first 20% of the language. (Though what I just described is probably less than 2% of the whole thing).

If I write anything that requires more detailed UML or more detail about my “bastardized” version of it, I will attempt to document it in that blog entry or I might just spawn a new page just for notation.

P.S. I’m using a StarUML for the diagram.

Leaving Facebook for a short time

I’m getting out of Facebook for a month. I’ll see how things go but if things go as I think they will, I will not go back. I’ve been thinking about doing this for a while but the trigger for it is the following video:

It’s an interesting video. In it, Tristan Harris lays a claim that the goal of Facebook (and of the other content providers, e.g. YouTube, Netflix, etc) is to get as much of your attention as possible. There’s 24 hours in a day, you sleep 8, the 16 other are up for grabs. These companies are ruthlessly competing with one another to steal as much of your attention as possible. They create algorithms to ensure that you spend as much time as possible on their web site(s) and they constantly tune them so that you are less and less likely to leave.

In the video (minute 6:45), Tristan comments on how this problem can be fixed:

  1. Accept that you are persuadable
    You have to accept the fact that you are no match for a bunch of neuroscientists, psychologists, computer scientists whose job it is to keep you addicted to their web site.
  2. Need new models for accountability systems in these organizations
    The accounting models used are totally geared to maximize profits. These companies will appeal to the lowest common denominator, they will hit your lizard brain, put you in an echo chamber for your political views, anything to keep you hooked. You should be clear about your goal when you use a web site, does it do what it’s supposed to do? Or are you simply getting a dopamine hit?
  3. Design Renaissance
    The UX of these web site should protect against the timelines you don’t want and empower the timelines that you prefer.

I agree with 1 (I have no doubt that I am persuadable) but do not believe that 2 (transparency in accountability system) will happen. As to 3, as it implies a change in the accountability model (which I already don’t accept), I don’t believe it will happen.

Facebook is particularly insidious compared to sites like Netflix. There are two reasons for this:

  1. Facebook is “non directed” in its very nature, you don’t have a “strong and clear” goal when visiting it. Netflix is less pernicious because you direct it. You go to the web site and you decide to watch a given tv show. The fact that it plays the next one is more in your control and is certainly more in tune with your initial interest.
  2. Facebook is solely ad driven. Netflix is not. At the end of each month you pay around 10$ to Netflix. At that time you usually think about the value that was brought to you over the last month. Facebook is “free”. You only give away your time….

So how would the accountability system of Facebook change from valuing the capture of the user’s time to providing real value provided to the user (e.g. improving relationships with connections)? It will only change if Facebook migrates away from an ad driven model to a paid subscription model. Can this happen? I don’t think so. It’s more likely that a competitor comes in with a totally different business model.

In any case, my goal is be to be the best person I can be and there is simply no way Facebook is presently helping me achieve this. Yes, I can see updates from friends but most of them are trivial. I would do much better writing these friends or even better spend time with them. A lot of people I have on my Facebook are also “connections”, not truly friends. What do I care, what Person X ate last week? This is totally useless information. There can be serendipity in some of the information provided but it seems to me that there a deficit if you do the difference between value obtained from time spend (a formula for this would be great!).

P.S. On a totally different note, if you want to read about alignment of concerns, take a look at David Swensen’s “Unconventional Success: A Fundamental Approach to Personal Investment”. At the time, it changed my life.

Building a StoryBrand: Clarify Your Message So Customers Will Listen

Building a StoryBrand: Clarify Your Message So Customers Will Listen

This is a short and to the point book on marketing. It defines a process to help you craft an engaging brand message. The approach is based on scripting your message according to the general pattern of what a story is:

A hero has a problem and meets a guide that gives them a plan and calls them to action that helps them avoid failure and end in a success.

Note that in this story, your company is NOT the hero, you are the GUIDE.

Movies (the good ones anyways) follow this pattern. (Try it out on movies you like, it works!). According to the author, using this approach gets customer(s) engaged and excited about your company.

The book deconstructs the formula and breaks it down in seven steps:

  1. A hero
  2. has a problem
  3. And meets a guide
  4. That gives them a plan
  5. And calls them to action
  6. That helps them avoid failure
  7. And end in success

Each step gets its own chapter, and at the end of the chapter you should have clear actionable outputs that ultimately allow you to craft a meaningful brand story. Note that this is not a silver bullet. You need to put in time and effort and probably should see it as an ongoing process of constant improvements.

Ultimately, the story that comes out should allow you to review your mission statement, your web site, your business literature, pretty much everything associated with your company.

For me, it was well worth time and effort. I’m unsure if it’s going to improve my sales or allow me to grow my client base but it certainly allowed me to better understand what is lacking in my message. It also gave me an inkling as to what I should do to fix things.

Review of “Seth Godin’s Freelancer course”

Review of “Seth Godin’s Freelancer course”

If you are a freelancer, you already probably know Seth Godin. If you are planning on being a freelancer, I recommend that you read some of his books (“Linchpin” is a good book to start with). You can also check his blog, also very interesting. Seth has a three hour online course available on Udemy (Seth Godin’s Freelancer course). The course is definitively worth the money. It covers a lot of topics associated with freelancing:

  • Why do freelancing
  • Types of freelancing
  • Managing clients
  • How to deal with pricing
  • Building a reputation
  • Promoting
  • Selling
  • Etc.

All of the information is great and may be eye-opening to you. It is delivered by Seth himself, looking straight at the camera, no PowerPoint slides, no diagrams, or fancy animation, just him talking about the business… in his very engaging and personable style.

The course clarified my thinking on how I run my own freelancing business. I’ve been at this for almost 15 years and even though I make a good living, it could be better. The course made me realize that I am too much of a generalist, and that I really don’t invest enough in marketing.

My one problem with the course is that I feel that it doesn’t go far enough. I need a plan on how to fix things. Can a course help with this? or is it something too personal? Maybe, I need a mentor, somebody who’s done this before?  I really don’t know. At least, it’s a start.

Course Notes

This is a very partial list of the course notes I have. Again, I recommend you follow the course, it’s well worth the price. (My personal comments are usually italicized).

Why be a freelancer

Here are the 5 reasons why some people drift towards becoming freelancers.

  1. A chance to do great work
  2. A chance to make our own choices
  3. Responsible for the work we do
  4. Make a living by making a difference
  5. A chance to become a professional

You are weaving a braid

You need to understand that as a freelancer, you are building assets. Ask yourself the following questions:

  • What do you want to do?
  • Who do you want to change?
  • How much risk?
  • How much work?
  • Does it matter?
  • Is it possible?

I’m not sure about the analogy that Seth uses (i.e. weaving a braid). That being said, I totally agree that you are building assets. Your freelancing business is all about assets (your brand, your connections, even your knowledge… those are all assets). There’s a questionnaire offered through the course.  I recommend you try it out. In my case, the answers were quite easy. I know what I want to do… but at the same time, I realize that I am NOT doing it! !@#!@##!@ Back to the drawing board.

Types of freelancing

There are 5 types of freelancing:

  • Mechanical turk
    • Not differentiated
    • Cog in the machine
    • Generic
    • Example, translation service, Uber driver
  • Handyman
    • Usually your services are convenient, e.g. you are close by.
    • Example, wedding photographer within the region
  • Craftsman
    • You offer something demonstrably better
  • Unique
    • You are asked by name
    • There’s only one of you
  • Remarkable
    • Work done stands out, recognizable
    • You are a brand.

Obviously, you want to be “remarkable”, but can you? Ask yourself, which type of freelancing you are truly doing? Seriously. Are you a software consultant, like me? If so, which level are you? Do your customers really really want you… and are they willing to pay for those services. I know that we are paid decently, but if your rate is 10$ per hour more than your competitors, will they still pick you? The world is not fair, you are note entitled to be “remarkable”. You are entitled to doing the best job you can, you are entitled to try… but not everybody succeeds. The course made me realize that presently, I am probably a “handyman” at best… People that deal with me are happy about the results, but how unique am I?

You think you’re remarkable? Ask yourself the following questions:

  • If you outsourced your work and didn’t tell me, would I be able to tell?
  • If someone else saw the work, would they know you did it?
  • Is there something about my interaction with you that’s bigger than the work?

You have to find a way of not being generic!

Finding customers

How do you select customers:

  1. Find a customer who has money (Professionals don’t work for customers who don’t have money).
  2. Find a customer who has a problem and knows she has a problem.
  3. Find a solution that only you can provide
  4. (Bonus) Do it in a way that makes people eager to tell others.

Firing a client

  • You need to have a deep understanding of the story the client tells themselves about you. If the story is that you are not to be trusted, or you are not going to deliver, you are not going to change that story. It’s better to move on. That being said you need to be good at interaction because this might just be that you are bad with people interactions.
  • The easiest customer to reach are almost always the worst customers.
  • You need to be clear with your client about what the story is going to be.
  • Seth says that if somebody already has a story in their mind about them paying the least amount, you are not going to change it. You basically need to find customers that are willing to pay to obtain quality work.

This is so true. You need to understand the story that the customer tells himself prior to accepting a contract. If they are attempting to get you at the cheapest possible rate, they might not care about the quality of your work, just the cost. In which case, let other people do the work, find clients that care, they exist.

How to increase demand

There are three ways to get more business

  1. Remind people of their needs
  2. Satisfy existing needs
  3. Initate a need

Initiating a need is very difficult as you have to convince somebody that they have a problem… How do you convince somebody that doesn’t know they have a problem. It can’t be through a web site. They won’t look for you. Maybe a newsletter about the domain?

When a client disagrees with your vision as to position brand

If you are a brand then you don’t have a problem, the client expects you to provide the vision. If you are NOT a brand, you can attempt to tell the client a story that will make them change their mind but it’s their decision. With this second approach, you might do work that is not acceptable to your standards.

Seth talks about St Luke’s Ad Agency… awesome model!!


Are you charging on what it costs or on what it’s worth? Professionals charge on what it’s worth.

This is so interesting a statement. I have no doubt that a graphics designer may charge this way, if they are remarkable… but what about software designers? I haven’t seen this approach in the market. Some of us make good money consulting but it’s usually associated with a time based rate. I don’t know any software designers who do it this way. It doesn’t mean that it doesn’t exist. I just haven’t seen it being done. I think the fact that we don’t “sign” our work is the issue.

Don’t do spec work for free, except if they allow you to sign your work.

Don’t make me think

Don’t make me think

When I picked this book up, I thought it would be a silver bullet for some of the UX problems I was facing at the time. It wasn’t… but what it is is a very high level set of rules and principles that can help you when developing a UX.

Most of the stuff in this book is common sense but sometimes it’s nice to be reminded of the guiding principles.

I particularly enjoyed reading the chapter on testing… which describes an approach to testing on a budget.

Here are some of my notes:

Chapter 1

  • The most important thing you can do is to understand the basic principle of eliminating question marks.
  • the main reason why it’s important not to make me think is that most people are going to spend far less time looking at the pages we design that we’d like to imagine. As a result, if Web pages are going to be effective, they have to work most of their magic at a glance. And the best way to do this is to create pages that are self-evident, or at least self-explanatory.

Chapter 3

  • If you’re not going to use an existing Web convention, you need to be sure that what you’re replacing it with either (a) is so clear and self-explanatory that there’s no learning curve—so it’s as good as the convention, or (b) adds so much value that it’s worth a small learning curve.
  • A good visual hierarchy saves us work by preprocessing the page for us, organizing and prioritizing its contents in a way that we can grasp almost instantly.

Chapter 4

  • When you can’t avoid giving me a difficult choice, you need to go out of your way to give me as much guidance as I need—but no more. This guidance works best when it’s Brief: The smallest amount of information that will help me Timely: Placed so I encounter it exactly when I need it Unavoidable: Formatted in a way that ensures that I’ll notice it

Chapter 5

  • Vigorous writing is concise. A sentence should contain no unnecessary words, a paragraph no unnecessary sentences, for the same reason that a drawing should have no unnecessary lines and a machine no unnecessary parts.
  • Getting rid of all those words that no one is going to read has several beneficial effects: It reduces the noise level of the page. It makes the useful content more prominent. It makes the pages shorter, allowing users to see more of each page at a glance without scrolling.
  • Your objective should always be to eliminate instructions entirely by making everything self-explanatory, or as close to it as possible. When instructions are absolutely necessary, cut them back to the bare minimum.

Chapter 6

  • Too-subtle visual cues are actually a very common problem. Designers love subtle cues, because subtlety is one of the traits of sophisticated design. But Web users are generally in such a hurry that they routinely miss subtle cues. In general, if you’re a designer and you think a visual cue is sticking out like a sore thumb, it probably means you need to make it twice as prominent.

Chapter 7

  • The one thing you can’t afford to lose in the shuffle—and the thing that most often gets lost—is conveying the big picture.
  • Don’t use a mission statement as a Welcome blurb.
  • Taglines are a very efficient way to get your message across, because they’re the one place on the page where users most expect to find a concise statement of the site’s purpose.
  • tagline conveys a value proposition.
  • Good taglines are personable, lively, and sometimes clever.

Chapter 9

  • Testing one user is 100 percent better than testing none.
  • Testing one user early in the project is better than testing 50 near the end.
  • Do-it-yourself tests are a qualitative method whose purpose is to improve what you’re building by identifying and fixing usability problems. The process isn’t rigorous at all: You give them tasks to do, you observe, and you learn. The result is actionable insights, not proof.
  • Even before you begin designing your site, for instance, it’s a good idea to do a test of competitive sites.
  • For each round of testing, you need to come up with tasks: the things the participants will try to do.
  • start by making a list of the tasks people need to be able to do with whatever you’re testing.
  • Choose enough tasks to fill the available time (about 35 minutes in a one-hour test), keeping in mind that some people will finish them faster than you expect.
  • Then word each task carefully, so the participants will understand exactly what you want them to do. Include any information that they’ll need but won’t have, like login information if you’re having them use a demo account.
  • your job is to make sure the participant stays focused on the tasks and keeps thinking aloud.
  • During this part of the test, it’s crucial that you let them work on their own and don’t do or say anything to influence them. Don’t ask them leading questions, and don’t give them any clues or assistance unless they’re hopelessly stuck or extremely frustrated. If they ask for help, just say something like “What would you do if I wasn’t here?”
  • After each round of tests, you should make time as soon as possible for the team to share their observations and decide which problems to fix and what you’re going to do to fix them.

Chapter 10

  • Having something pinned down can have a focusing effect, where a blank canvas with its unlimited options—while it sounds liberating—can have a paralyzing effect.
  • One approach was Mobile First. Instead of designing a full-featured (and perhaps bloated) version of your Web site first and then paring it down to create the mobile version, you design the mobile version first based on the features and content that are most important to your users. Then you add on more features and content to create the desktop/full version.
  • In some cases, the lack of space on each screen means that mobile sites become much deeper than their full-size cousins, so you might have to tap down three, four, or five “levels” to get to some features or content. This means that people will be tapping more, but that’s OK. With small screens it’s inevitable: To see the same amount of information, you’re going to be either tapping or scrolling a lot more. As long as the user continues to feel confident that what they want is further down the screen or behind that link or button, they’ll keep going. Here’s the main thing to remember, though:
  • Always provide a link to the “full” Web site. No matter how fabulous and complete your mobile site is, you do need to give users the option of viewing the non-mobile version, especially if it has features and information that aren’t available in your mobile version. (The current convention is to put a Mobile Site/Full Site toggle at the bottom of every page.)
  • Affordances are visual clues in an object’s design that suggest how we can use it.
  • For affordances to work, they need to be noticeable, and some characteristics of mobile devices have made them less noticeable or, worse, invisible. And by definition, affordances are the last thing you should hide.
  • Flat design has a tendency to take along with it not just the potentially distracting decoration but also the useful information that the more textured elements were conveying.

Chapter 11

  • I’ve always found it useful to imagine that every time we enter a Web site, we start out with a reservoir of goodwill. Each problem we encounter on the site lowers the level of that reservoir.

Chapter 12

  • About i18n… It’s the right thing to do. And not just the right thing; it’s profoundly the right thing to do, because the one argument for accessibility that doesn’t get made nearly often enough is how extraordinarily better it makes some people’s lives. Personally, I don’t think anyone should need more than this one example: Blind people with access to a computer can now read almost any newspaper or magazine on their own. Imagine that.
  • And for those of you who don’t find this argument compelling, be aware that even if you haven’t already encountered it, there will be a legislative stick coming sooner or later. Count on it.
  • “Guidelines for Accessible and Usable Web Sites: Observing Users Who Work with Screen Readers.”

Naming a startup domain name

I’ve had to generate names for companies (and their associated domain names) a number of times in my career.  For me, it’s always been an excruciating exercise.

So why is it so difficult?  I always felt that there’s so much tied to a company name.  In most cases, it’s the first thing that a potential customer sees.  It shows a little bit of your creativity and originality.  So you don’t want to have a crappy name.

Nowadays, finding an original company name is more difficult.  There’s a LOT more companies now than there were 20 years ago.  Furthermore, domain names (which are so closely tied to company names) are a business unto themselves.  Trolls squat on the good ones and will only give them out for good money.  It’s quite sad but there’s little to be done.  (Actually raising the price of a domain name would probably help alleviate this problem, or having some root curated “master” domain… but that’s another story).

In any case, finding a domain name is difficult but there are still tools and resources that can help you.

First, I would recommend anybody that want to find a new domain name (or business name) to check out this Jason Calacanis video on YouTube: “How to name your startup”. It’s a nice primer from a master in the startup business. Highly recommended.

Second, the book “How to build a billion dollar app” has a whole chapter on company and domain name search.

Lastly, here is a list of tools that can get your creative juices flowing:

If you know of any other video or online tool that I should put in this list, feel free to let me know.


Review of “The Effective Executive”

Review of “The Effective Executive”
Peter Drucker (1909-2005) wrote close to 40 books in his very long career.  Most of them focus on organization management, some though focus on the individual within the organization.  This book is one of them.

Peter Drucker

The premise of the book is that some executives are more effective than others. Drucker’s contention is that this effectiveness is not the product of intelligence, hard work or even imagination.  Effectiveness is due to a set of practices used by the effective executive.
Drucker goes over these practices in this book.  He does so with great clarity and with ample examples of how these are implemented.  Due to Peter Drucker’s reach and longevity, he has ample executives to choose from.
The result is an amazing book that may change how you see your position within an organization.  If you are like me and want to improve your productivity, you owe it to yourself to check it out.
After reading “The effective executive”, I added two more books in to my book buffer:
I took a lot of notes while reading the book.  Here are some of those:
Chapter 1 Effectiveness can be learned
  • Effectiveness is not intelligence, imagination or knowledge.  It is a set of practices that can be learned.
  • Five practices of effective executives:
    • Know how you spend your time
    • Focus on results, not work
    • Build on strength, not weaknesses
    • Concentrate on areas where superior performance brings greatest results
    • Make effective decisions
  • Knowledge workers are executive in that they are responsible for contributions that affect an organization’s result.
  • Realities of executives:
    • Their time belongs to others
    • They are forced to keep on operating unless they change things themselves
    • They are within an organization and depend on people above and below
    • They are within an organization and get their data filtered.
Chapter 2 Know thy time
  • To do anything, you first need time.  Money is elastic, time isn’t.  It’s your most precious resource. Manage it wisely.
  • We’re bad at keeping track of how we spend our time.  Keep a log.
  • After having measure time do the following:
    • Eliminate things that should not be done (“What would happen if I wouldn’t do this?”)
    • Delegate (“Which of these activities could be done by somebody else?”)
    •  Stop wasting other people’s time yourself.
  • You cannot do all the work in small block.  You need some uninterrupted time:
    • Block 0.5 day or day(s) from your calendar
    • Work from home
Chapter 3 What can I contribute?
  • It’s not the effort, it’s the contribution.  Ask yourself: “What can I contribute that will significantly affect the performance and the results of the institution I serve?”
  • Effective executives will focus outwards.  He will focus on the relationships (organization, clients, etc)
  • Organizations need performance in three areas:
    • direct results (e.g. sales)
    • building of values and reaffirmation
    • building/developing people for tomorrow
  • If you focus on contributions, good meaningful human relationships will follow.
  • A few notes on meetings:
    • Always know the purpose (“Why are we having this meeting?”)
    • In a meeting, you do one of these two (NEVER BOTH):
      • Direct and listen
      • Take an active part in discussion
Chapter 4 Making strength productive
  • Effective Executives make strength productive.
  • The purpose of an organization is to make strength productive. You should therefore staff to MAXIMIZE strength, NOT to minimize weaknesses
  • The idea of a “well rounded” person is a prescription for mediocrity.
  • DON’T ASK “How does he get along with me?” ASK “What does he contribute?”
  • DON’T ASK “What can a man do?” ASK “What can he do uncommonly well?”
  • To focus on strength is to make demands for performance.
  • Staffing is difficult.  Executives tend to fill jobs by looking for best fit (i.e. least misfit).  This leads to mediocrity.
  • If you redesign a job to fit a person, you are restructuring the company.  It also leads to favouritism.
  • How do you staff for strength without building job to suit personality:
    • Job must be well designed (if 3 people were defeated by the job, it needs to be redesigned)
    • Make sure the job is demanding.  It should challenge the man.
    • Start with what a man can do
      • What has he done well
      • What, therefore, is he likely to do well
      • What does he need to acquire to best use his strength
      • If I had a son or daughter, would I be willing to have him or her work under this person?
  • To get strengths, one has to put up with weaknesses
  • ASK “Does this man have strength in one major area? And is this strength relevant to the task? If he achieves excellence in this one area, will it make a significant difference?  And if the answer is yes, he will go ahead and appoint the man.”
  • General Marshall is a good example of how to make strength productive.
Chapter 5 First thing first
  • Secret of effectiveness is concentration:
    • Do first thing first
    • Do one thing at a time
  • The executive requires fairly big chunks of time. This is difficult to get when you are interrupt driven.  Learn to say no.
  • It is difficult to do one thing at a time, let alone two.  The people who can do two things at a time make sure they allocate enough time the minimum allowed to get something meaningful done.
  • Ask “If we did not already do this, would we go into it now?”  If the answer is not an unconditional yes then drop it.
  • There’s always a lot of decisions to be made.  Either the executive or pressures will make them.
  • If pressures make them, important tasks will be dropped
  • No task is completed until it becomes part of organizational action and behaviour.  In other words, no task is done unless somebody else has taken it has their own.
  • Rules to decide on priorities:
    • Pick future against past
    • Focus on opportunity rather than problem
    • Choose your own direction
    • Aim high, make a difference
  • “Concentration – that is, the courage to impose on time and events his own decision as to what matters and comes first – is the executive’s only hope of becoming the master of time and events instead of their wipping boy.”
Chapter 6 The elements of decision making
  • Effective executives make decisions through a systematic process with clearly defined elements and in a distinct sequence of steps.
  • Effective executives do not make many decisions.  The concentrate on the important ones (be strategic and generic).
  • Decision process:
    • Find out if the problem is generic or exceptional
    • Specify what the decision has to accomplish (define boundary conditions)
    • Find out the right solution (don’t compromise at the start)
    • Convert the decision to actions:
      • Who has to know about the decision?
      • What actions need to be taken?
      • Who takes given action?
      • What does the action look like so that it is truly actionable?
    • Feedback is required to ensure continuous testing of decision.
Chapter 7 Effective decisions
  • A decision is a judgement.
  • You don’t start with facts, you start with opinions.  (opinions == untested hypotheses)
  • An opinion is worthless unless tested against reality
  • The effective executive expects that traditional measurement is not correct.  If it was, there would be no need for a decision.  Traditional measurements reflect yesterday’s decision.
  • You should have alternatives for measurements.
  • Decisions are made from clash of opinions and ideas. When discussing problems and possible decisions, insist on disagreement.  Here’s why:
    • Prevents decision make becoming prisoner of organization
    • Provides alternatives
    • Stimulates imagination
  • The effective executive encourages opinions but will ask for experiments to validate.
  • A decision is like surgery.  It carries risks.  Make a decision when:
    • current condition is likely to degenerate if nothing is done.
    • opportunity is important and will vanish if not acted upon
  • When deciding:
    • Act if on balance the benefits greatly outweighs cost and risk
    • Act or do not act, no compromise.





Review of “A guide to the good life”

Review of “A guide to the good life”

I forget where and when I first heard about this book.  It might be through the “Tim Ferriss Show” or it could have been a recommendation from my brother.  Whatever or whomever the source, all I can say is that this book is definitively worth reading.

“A guide to the good life” talks about everything surrounding Stoicism.  It discusses its history; from its Greek origin to its Roman adoption.  It goes over its major “influencers”; Musonius, Seneca, Marcus Aurelius amongst others.  Mainly though, it’s a practical guide as to how best apply Stoicism in modern times…

“A guide to the good life” goes over various Stoic techniques to improve your “tranquility”.  Examples include:

  • Negative visualization
  • Practiced poverty
  • Dealing with insults
  • Daily meditation
  • etc.

I’m always been weary of books on philosophy.  I usually find them too “meta” for me.  This one though is highly practical.  Reading it will, in the worst case, educate you about a popular approach to view the world. In the best case though, it might change your life for the better.

The book is filled with tons of interesting ideas.  I took many notes and will only reprint a portion of those here.  Get the book, it’s worth it.

  • Many ancient Greek and Roman philosophers, for example, not only thought philosophies of life were worth contemplating but thought the raison d’être of philosophy was to develop them.
  • The Stoic philosophy of life may be old, but it merits the attention of any modern individual who wishes to have a life that is both meaningful and fulfilling—who wishes, that is, to have a good life.
  • The Stoics realized that a life plagued with negative emotions—including anger, anxiety, fear, grief, and envy—will not be a good life.
  • Stoic tranquility was a psychological state marked by the absence of negative emotions, such as grief, anger, and anxiety, and the presence of positive emotions, such as joy.
  • We humans are unhappy in large part because we are insatiable; after working hard to get what we want, we routinely lose interest in the object of our desire. Rather than feeling satisfied, we feel a bit bored, and in response to this boredom, we go on to form new, even grander desires.
  • One key to happiness, then, is to forestall the adaptation process: We need to take steps to prevent ourselves from taking for granted, once we get them, the things we worked so hard to get.
  • Negative visualization, in other words, teaches us to embrace whatever life we happen to be living and to extract every bit of delight we can from it. But it simultaneously teaches us to prepare ourselves for changes that will deprive us of the things that delight us. It teaches us, in other words, to enjoy what we have without clinging to it.
  • A practicing Stoic will keep the trichotomy of control firmly in mind as he goes about his daily affairs. He will perform a kind of triage in which he sorts the elements of his life into three categories: those over which he has complete control, those over which he has no control at all, and those over which he has some but not complete control.
  • In particular, instead of merely thinking about what it would be like to lose our wealth, we should periodically “practice poverty”: We should, that is, content ourselves with “the scantiest and cheapest fare” and with “coarse and rough dress.”
  • TO HELP US ADVANCE our practice of Stoicism, Seneca advises that we periodically meditate on the events of daily living, how we responded to these events, and how, in accordance with Stoic principles, we should have responded to them.
  • Besides reflecting on the day’s events, we can devote part of our meditations to going through a kind of mental checklist. Are we practicing the psychological techniques recommended by the Stoics? Do we, for example, periodically engage in negative visualization? Do we take time to distinguish between those things over which we have complete control, those things over which we have no control at all, and those things over which we have some but not complete control? Are we careful to internalize our goals? Have we refrained from dwelling on the past and instead focused our attention on the future? Have we consciously practiced acts of self-denial? We can also use our Stoic meditations as an opportunity to ask whether, in our daily affairs, we are following the advice offered by the Stoics.
  • “fellowship is the purpose behind our creation.” Thus, a person who performs well the function of man will be both rational and social.
  • The Stoics therefore recommend that we avoid befriending people whose values have been corrupted, for fear that their values will contaminate ours. We should instead seek, as friends, people who share our (proper Stoic) values and in particular, people who are doing a better job than we are of living in accordance with these values.
  • He counsels us, for example, not to waste time speculating about what our neighbors are doing, saying, thinking, or scheming. Nor should we allow our mind to be filled with “sensual imaginings, jealousies, envies, suspicions, or any other sentiments” about them that we would blush to admit.
  • He adds that if we detect anger and hatred within us and wish to seek revenge, one of the best forms of revenge on another person is to refuse to be like him.
  • keep in mind, when insulted, that we ourselves are the source of any sting that accompanies the insult.
  • something external harms me, it is my own fault: I should have adopted different values.
  • in retrospective negative visualization, we imagine never having had something that we have lost.
  • Reason is our best weapon against grief, he maintains, because “unless reason puts an end to our tears, fortune will not do so.”
  • Anger, says Seneca, is “brief insanity,” and the damage done by anger is enormous: “No plague has cost the human race more.”
  • We should, he says, fight our tendency to believe the worst about others and our tendency to jump to conclusions about their motivations.
  • we should also keep in mind that the things that anger us generally don’t do us any real harm;
  • humor can be used to prevent ourselves from becoming angry:
  • when we feel ourselves getting angry about something, we should pause to consider its cosmic (in)significance. Doing this might enable us to nip our anger in the bud.
  • Stoics value their freedom, and they are therefore reluctant to do anything that will give others power over them.
  • Epictetus therefore advises us not to seek social status, since if we make it our goal to please others, we will no longer be free to please ourselves.
  • If we wish to retain our freedom, says Epictetus, we must be careful, while dealing with other people, to be indifferent to what they think of us.
  • Our goal should therefore be to become indifferent to other people’s opinions of us.
  • She must keep firmly in mind that her wealth can be snatched from her; indeed, she should spend time preparing herself for the loss of it—by, for example, periodically practicing poverty.
  • It is therefore unlikely that a Stoic will bask in any fame that comes her way. At the same time, she will not hesitate to use this fame as a tool in the performance of what she takes to be her social duty.
  • Thus, the proximity of death, rather than depressing us, can be turned to our advantage. In our youth, because we assumed that we would live forever, we took our days for granted and as a result wasted many of them. In our old age, however, waking up each morning can be a cause for celebration.
  • The most important reason for adopting a philosophy of life, though, is that if we lack one, there is a danger that we will mislive—that we will spend our life pursuing goals that aren’t worth attaining or will pursue worthwhile goals in a foolish manner and will therefore fail to attain them.
  • the first step in transforming a society into one in which people live a good life is to teach people how to make their happiness depend as little as possible on their external circumstances. The second step in transforming a society is to change people’s external circumstances.
  • Parents do lots of things for their children, but Stoic parents—and, I suspect, good parents in general—don’t think of parenting as a burdensome task requiring endless sacrifice; instead, they think about how wonderful it is that they have children and can make a positive difference in the lives of these children.
  • Stoicism, understood properly, is a cure for a disease. The disease in question is the anxiety, grief, fear, and various other negative emotions that plague humans and prevent them from experiencing a joyful existence. By practicing Stoic techniques, we can cure the disease and thereby gain tranquility. What I am suggesting is that although the ancient Stoics found a “cure” for negative emotions, they were mistaken about why the cure works.
  • The Stoics regarded the principles of Stoicism not as being chiseled into stone but as being molded into clay that could, within limits, be remolded into a form of Stoicism that people would find useful.
  • MY NEXT PIECE OF ADVICE for would-be Stoics is not to try to master all the Stoic techniques at once but to start with one technique and, having become proficient in it, go on to another. And a good technique to start with, I think, is negative visualization. At spare moments in the day, make it a point to contemplate the loss of whatever you value in life.
  • AFTER MASTERING negative visualization, a novice Stoic should move on to become proficient in applying the trichotomy of control, described in chapter 5. According to the Stoics, we should perform a kind of triage in which we distinguish between things we have no control over, things we have complete control over, and things we have some but not complete control over; and having made this distinction, we should focus our attention on the last two categories. In particular, we waste our time and cause ourselves needless anxiety if we concern ourselves with things over which we have no control.
  • “Nothing is worth doing pointlessly.”)

2017 is my year of functional languages

It’s a brand new year, time to set some goals!   Software wise, my main goal this year is to get familiar with functional programming.

I want to accomplish by learning two languages that I’ve had on my radar for a while: Elixir and Elm.  Not sure if this is “career advancing”, I doubt it, but from the little that I know from both languages, I’m fairly certain that I will learn something that I can bring back to the Java and Javascript worlds.

So, why Elixir and Elm?

First, Elixir is intriguing.  Elixir runs on top of the Erlang VM.  It uses the same VM that powers WhatsApp…. and WhatsApp is VERY performant.  You can find articles and videos on it here:

There seems to be little doubt that a language built on top of the Erlang VM will be performant.

Now, why not learn Erlang instead of Elixir?  Elixir was created by Jose Valim, a key contributor in the Rails world.  He created the “Devise” library in Rails.  I’ve since looked at the Elixir API and it was definitively heavily influenced by the Ruby and Rails APIs.  I’m just hoping to cut some of the API learning time by leveraging some of my Ruby experience and focus on the new stuff: functional programming proper.

One language should be sufficient to learn how functional programming work but I’ve decided to also dig into Elm.

This is an emotional decision, I think.  I listened to a few podcasts that intrigued me:

I’m not crazy about Javascript and I think that I’m just looking for an alternative that I find more pleasing.  It’s not a dynamic vs compiled language decision, I’m fine with Ruby which is dynamic and I’m fine with C++ and Java, which are compiled.  My problems with Javascript are in some of its details. For example, the equality logic (or rather that weird casting it does).  I’m not crazy about the prototype model stuff either.  It’s pretty far from a what a good OO language should be.  Even frameworks like Angular are a bit annoying because they have to piggyback on some of the idiosyncracies of the JS.  (Though ES6 and Angular2 might make me change my appreciation of Javascript, we’ll see).

Elm is a “transpiled” language (Elm -> JS).  Furthermore, it is typed.  It has meaningful error messages and has an intriguing programming model that looks like it might help out with the asynchronous nature of client application.  Everything in an Elm program is message based.  So really, it’s all asynchronous.

So, there you go.  My plate is full.  It’s going to be interesting.