Thoughts and Adventures of an Engineer

Let's do something amazing...

Category: General

A Year in Review (2017)

A summary of things I have accomplished, failed at, and plan to do (or try again) this year.

What I planned to do in 2017 and how I did:

  1. [5/5] Playing piano for 10 minutes a day every weekday
    By far, the most successful project I had this year
    – For the first 6 months, I didn’t play with sheet music just composed
    – Recorded all of my piano sessions
    – By year end I had composed two full songs and many more short pieces
    – Second half of the year I started improvising on top of songs I learned many years ago
  2. [0/5] Learn either Spanish or French to be able to have a conversation in a coffee shop
    Stopped this goal after a few months of shotty focus
    – I wasn’t particularly passionate or driven to achieve this
    – I didn’t establish a good routine
    – Note to Self… Next time book a trip to that part of the world to give it a real incentive/deadline.
  3. [3/5] Set up my investments properly
    It took until December to do this but I did it!
    – Set up automatic deposits into a TFSA sheltered index fund robo investor
    – Started actively seeking out companies to invest in and build my own portfolio with a small side amount of cash
    – Currently seeking a fiduciary to manage my RRSP – if you know a good one shoot me a message!
  4. [4/5] Read/listen to 1-3 books per month (focus on quality, not quantity)
    This year was loaded with some of the best books I’ve ever read!
    – I read at least one book per month (thanks Audible subscription!)
    – Best Non-Fiction: The Denial of Death (Ernest Becker)
    – Best Fiction: The Book of Negroes (Lawrence Hill)
    – Read Numerous Times: The Alchemist (Paulo Cuello)
    Check out the master reading list for more
  5. [1/5] Establish meditation as a daily practice
    Turned this into something I used when stressed as opposed to a daily ritual
    – This is definitely an activity that benefits from practice
    – Had positive outcomes from the mediation I did experiment with
    – Used mostly as a deliberate action to take time and breath during times of stress
  6. [4/5] Seek side income/new business ideas
    Shut down non-profitable projects (UTP), rebranded site into new web development company
    – After nearly 2 years of trying to build a community that provided articles/courses for young engineers, I decided to shut down the project
    – Why close it down? First, I felt ethically wrong about the whole premise of maybe making money off of it. Second, it was a terrible market segment to try and target.
    – Now I use the site/business to provide web services (design/analytics integration/SEO) for small businesses.
    I even managed to get some clients at the tail end of this year!
  7. [5/5] Travel on my own for 2 weeks
    Went to Dublin, Munich, Paris, and London
    – Made some new friends along the way (shout out to Gemma, Oz, Kyle, Steph, Mathieu, Elliot and the rest of Natasha’s house). You’re all always welcome to crash at my place in Canada!
    – Snapped some great photos (without my dSLR…)
    Also managed to take a trip to L.A., Vancouver, Ohio, Ottawa, Quebec, and New Jersey
  8. [4/5] Focus on two pillars at a time (Work/Friends/Health/Partner) to really find improvement in those parts of my life
    What I learned, it’s not easy to succeed in more than 2 of these at a time
    – I kept friends as a constant focus for the past year (1 or 2)
    – I made being in committed long term relationships a low priority this year (3 or 4)
    – Depending on the point of the year Work and Friends or Health and Friends were my primary focus

What I plan to do this year (as of January 2018):

  1. Read 2-5 quality books a month. See out books from other people.
  2. Dance Salsa/Bachata/Kizomba weekly
  3. Write blog posts more often (1 per month on something I find interesting)
  4. Increase the amount of learning I do in my job every week (set aside two 3 hour blocks per week to learn about a new element of process engineering)
  5. Play music every week day (10 min minimum)
  6. Spend 1 hour a week learning music theory and applying it that week to the practice sessions
  7. Book a trip to South America (Mexico?) and learn conversational Spanish before I arrive
  8. Maintain a minimum of 3 times per week at the gym (to keep my body injury free)

The Search for Intelligence

Can you create a generally intelligent machine?

We have shared this earth with millions of living organisms and creatures and it’s amazing how we can look into the past by studying these creatures.

It’s interesting to look at our organic history to understand how we developed into the curious creatures we are. Humans are very complex, and in the search to emulate our own intelligence with machines we have been able to make significant progress on some very challenging problems.

Some examples:
Beat humans at their own games? (Alpha Go).
Jervis our intelligent personal assistant?(Braina).

Most artificial intelligence (AI) software struggles with taking its skill sets and applying it to new novel problems and succeeding. This is a serious challenge and one approach is emulating the brain.

Do we need to go to emulate every cell in the brain to achieve this?

I’m not entirely convinced,
I think the final solution will have very similar systems and pathways as the human brain but I think the path to get there needs to be less deterministic.

When we’re trying to create Artificial General Intelligence (AGI) we are trying to achieve something similar to what humans can do.  It is very challenging to create something that can solve problems based on previous experience, respond to changes in the environment and has the capability to solve novel problems.

It’s absolutely crazy that nature has created it all on its own and it will not be an easy challenge for the best human minds to overcome either.

I believe when we focus on goal oriented programming we limit the solutions and strip evolution from our AGI programs.

A popular segment in AGI is to emulate the entire human brain. I don’t think this approach will be successful, but I do believe it’s a valuable project.

One of the challenges of tackling complex problems like this is measuring progress. It’s much easier to measure progress when you can be specific in your goals.

Science moves much faster when this is implicit in the project. By emulating the human brain we can track the performance of the systems against human counterparts.

However, this approach also has a lot of technological barriers.
In order for this to be successful, we must also break through the point where processors can complete as many calculations per second as the human brain.

If nothing else comes out of this approach we will at least have powerful models/systems for use in new applications and broadening our understanding of how the enigma of the brain actually works.

There is one approach that I believe has the opportunity to be successful in creating AGI – creating a software that is capable of real evolution.

If we break down components of a cell into fundamental properties there’s are few which stand out in my mind.

Cell membranes act as a container for which the living system can be contained.It needs to be permeable to the outside environment in order to build in complexity, but also impermeable enough that it doesn’t suddenly lose its capability to protect the living system.

DNA acts as the blueprint for the underlying systems.
However, the capability to store information is not enough – you need to be able to execute this information to create/sustain the systems in place. This is very close to the idea of a source code and compiler in programming.

The source code is the DNA and the compiler is the cells ability to follow the instructions in the DNA

A modern example of a system that I believe is capable of evolution is the Internet.

It grows and responds to the systems existing within it – the underlying hardware that keeps it living, the integration of new programming languages like java, the transition from IPV4 to IPV6, the diversion from web pages to applications.

All of these things shape the internet, while there are many things that are living and changing within it – websites like Google, Reddit, and Youtube, or apps like Instagram, Snapchat and Tinder continually modifying the environmental stimuli.

I’d argue if we could keep it running for millions of years, the internet would evolve into something that resembles or merges with human intelligence.

But if you’re going to take a more active approach to creating AGI where would you start?

I’d start with a neat little type of program called a Quine.

Quines are self-replicating programs.

One key distinction between a Quine and a cell is that a basic Quine replicates its source code exactly where as a cell has many more opportunities for genetic variation – i.e. meiosis, mitosis.

What happens if you induce variation into the replication of the source code of a quine?

Well, you probably end up with a lot of Quines which cannot survive because the variation leads to code that can’t be compiled. However, every so often you should create a variation that is executed by the compiler and can differentiate offspring in competitive advantage. If these Quines continue to succeed in the world of the software program there can exist new genotypes and phenotypes in the population.

This is where the programming gets extremely difficult.

You basically need to create a way for the Quine to rewrite it’s code in proper syntax, and that allows for itself to make mistakes and not crash the entire cell, just that module.

I imagine you can try to replace replacement functions and source code randomly, but this amount of variation feels like the source code is not rigid enough to protect the underlying homoeostasis of the program. There have to be some guiding principles.

Think of a unique module in the source code as an amino acid that needs to be in a certain pH to fold properly. If you don’t give it that environmental restriction it’s not going to be very efficient at folding the same way every time. Remove a regulated pH and all of a sudden there is too much variation in the universe to fold your proteins the same way each time.

I’ve only found one author who has explored a similar perspective of using Quines in AI. Kory Becker experimented with a hilariously titled programming language called BrainFuck. Check out these articles at the bottom of the page if you want to learn more about his approach.

Controlling the Environment:

I firmly believe that you need the right balance of order and disorder in a cell to make it sustain life.

If the entire system falls heavy on chaos and disorder you don’t get structure and functionality. For example, in the early universe when the temperatures were too hot, too many collisions and energy in the system to see life as we know it exists. There needed to be a substantial amount of cooling, and structure of the universe before the concept of macro-molecules could take form.

Alternatively, a system with too little chaos/disorder isn’t dynamic enough incorporate change. If you put a glass of water in a box it will not suddenly boil unless something in the system around induces that change.

This is one reason why it’s so challenging to write software that can do this. You’d need a way of adjusting the randomness in the environment until you got it just right; without out this balance, I don’t see how evolution can be sustainable.


While I was researching for this article I spent some time with a friend who’s completing her PhD in Behavioural Neuroscience. One of the ideas she proposed was the importance of culture in the evolution of humans and her belief it would be a necessary requirement for creating AGI.

It wasn’t until cells could store DNA that they were able to create copies of themselves and have consistent genetic diversity across different organisms. Something similar happened as cells evolved into animals with brains capable of comprehension, memory, and communication.

As the animals developed the ability to tell stories they also inherently created the opportunity for generations of information to be passed along. How to create fire, how to make the best tools to hunt, where is the safest cave, which berries are poisonous.

These are all examples of how culture facilitated the transfer of information which influenced the future. I have no idea where I would even start to try and induce/replicate this in a software system.


When you look at mammals it’s interesting to note that we all go through phases of a development – conception, prenatal development, until eventually, we start building our model of the world based on the environmental stimulus and the blueprint we inherited from our parents.

I’m curious if this is a natural requirement to build sustainable intelligent systems.

Every living animal on the earth would support this clause, but then again we all originated from the same starting point.

Maybe non-biological systems can occur without this phase.

Sex and Replication

Cells started by replicating in kind, then with the ability of genetic variation, and as this continued to evolve in animals the organs, tissues, brains all had to be replicated within the system of replicating cells.

As the evolution continued the ability to replicate entire human systems developed and sex became an underlying requirement for continuing human life. I’m not sure what form this would take as you start attempting to solve this problem in software.

My first guess is that this has to happen naturally and can’t be forced by writing code that already has a method to do it; it has to have meshed into the inner workings of each system that it affects.

Want to read the next article?
I’ll let you now when it’s out:

Links and References:


Artificial General Intelligence: Concept, State of the Art, and Future Prospects
– Daniel Eth, Juan-Carlos Foust, Brandon Whale
DOI: 10.2478/jagi-2014-0001

The Prospects of Whole Brain Emulation within the next Half- Century
– Ben Goertzel
DOI: 10.2478/jagi-2013-0008

Will We Hit a Wall? Forecasting Bottlenecks to Whole Brain Emulation Development
– Jeff Alstott
DOI: 10.2478/jagi-2013-0009


Thoughts of an Engineer

Hello World,

If you’re reading this you’ve found your way to one of the many playgrounds I use to keep my mind active. This blog was started to feed my curiosity and desire to learn how the world works.

I’ve been involved on the internet for almost 15 years making websites, running forums and supporting online communities. My current projects are this blog and another website that shares experiences with new engineers about starting your career in industry.

I hope you enjoy your stay as you drink from the firehose and attempt to quench your curiosity.

Happy Drinking,