Lee Jones - Blahg http://leejon.es/blahg Blogs, Articles, Essays, Whatever en-US Tue, 26 May 2020 14:10:32 -0400 60 <![CDATA[April 2020 Review]]> http://leejon.es/blahg/blahg/april-2020-review Monthly Review for April 2020

What Went Well

  • I made some big decisions on a personal level that will have a significant effect.

What I Need To Improve

  • Although I started off very strong with the whole social isolation thing, my ability to execute at a high level diminished over the last couple of weeks. Definitely a reflection of struggling to maintain my routine in the constant presence of my family.

How I Did On My Goals for April

  • Did great on the step goal.
  • Not so good on running or TRX.
  • My taxes are finally complete.

Goals for May

  • TRX 3x a week.
  • Run 2x a week.
  • At least 3x a week consistency with my daily priming routine.
  • Complete an article I was requested to write.
]]>
Monthly Review for April 2020

What Went Well

  • I made some big decisions on a personal level that will have a significant effect.

What I Need To Improve

  • Although I started off very strong with the whole social isolation thing, my ability to execute at a high level diminished over the last couple of weeks. Definitely a reflection of struggling to maintain my routine in the constant presence of my family.

How I Did On My Goals for April

  • Did great on the step goal.
  • Not so good on running or TRX.
  • My taxes are finally complete.

Goals for May

  • TRX 3x a week.
  • Run 2x a week.
  • At least 3x a week consistency with my daily priming routine.
  • Complete an article I was requested to write.
]]>
http://leejon.es/blahg/blahg/april-2020-review Sun, 03 May 2020 00:00:00 -0400
<![CDATA[March 2020 Review]]> http://leejon.es/blahg/blahg/march-2020-review Monthly Review for March 2020

What Went Well

Sweet merciful McGillicuddy!

The month started out with an F4 tornado destroying my town and missing my house by about 1/2 a mile while I was driving back from Florida and was bookended by Covid19 social isolation.

March 2020 will definitely go down in the books as one of the weirdest/most dramatic months of my entire life.

So.. what did go well? I was working out a lot until the gyms were shut down.

I'm working on some very interesting projects.

What I Need To Improve

  • Routine - right now, being at home I ned to make sure that I have a very structured yet flexible routine that allows me to get the important things done and also be present for my family.

  • Exercise - I'm hitting my step goal. Need to run more and be consistent with TRX workouts.

How I Did On My Goals for February

:|

Goals for March

  • Exercise: run 2x a week. TRX 3x a week.
  • Complete taxes.
  • Close out a lingering issue with NY workmans comp.
]]>
Monthly Review for March 2020

What Went Well

Sweet merciful McGillicuddy!

The month started out with an F4 tornado destroying my town and missing my house by about 1/2 a mile while I was driving back from Florida and was bookended by Covid19 social isolation.

March 2020 will definitely go down in the books as one of the weirdest/most dramatic months of my entire life.

So.. what did go well? I was working out a lot until the gyms were shut down.

I'm working on some very interesting projects.

What I Need To Improve

  • Routine - right now, being at home I ned to make sure that I have a very structured yet flexible routine that allows me to get the important things done and also be present for my family.

  • Exercise - I'm hitting my step goal. Need to run more and be consistent with TRX workouts.

How I Did On My Goals for February

:|

Goals for March

  • Exercise: run 2x a week. TRX 3x a week.
  • Complete taxes.
  • Close out a lingering issue with NY workmans comp.
]]>
http://leejon.es/blahg/blahg/march-2020-review Wed, 01 Apr 2020 00:00:00 -0400
<![CDATA[Covid 19 R Naught]]> http://leejon.es/blahg/blahg/covid-19-r-naught Covid 19 R Naught

The study of infectious diseases uses something called the Basic Reproduction Number ( R-naught/R0 ) to indicate how contagious a given infection is. It represents the average number of infections that one infected person will cause. Here are some examples of R0 numbers for known diseases (pulled from Wikipedia):

  • Flu: 0.9 - 2.1
  • Covid 19: 1.4 - 3.9
  • Aids: 2 - 5
  • Measles: 12 - 18 (yay vaccines!)

An R0 < 1 means that the disease will eventually disappear as it does not have a sustainable infection rate. The greater the number, the higher the contagion rate (I mean, come on Measles.. overachieve much?).

From what I can gather, the current average R0 for Covid 19 is 2.2 (hence my n^2 example). The easiest way to visualize it is, for every 10 people who have the disease, 22 more people will be infected by them. When comparing to the current infection rates, keep in mind that this is a statistical indicator and only deals in averages. Rural areas will have a much lower infection rate than densely populated urban areas. For example, North Dakota currently has 1 documented case while New York has almost 50k. (If you live in a densely populated area and are ignorant/arrogant, you WILL get sick.. science.)

The question I've been getting is, "what the hell is this whole flattening the curve thing?". The chart for infections over time is currently on an exponential growth curve (the front side of a bell curve). As a society practicing social isolation, we are now deep in the "deliberate intervention" stage. This will dramatically affect the growth (trust me), initially slowing to a logarithmic curve (the top of the bell curve) then seeing a decline (the backside of the bell curve). So, the curve being flattened means that the actual infection rate (not the statistical R0) starts to approach 1. Meaning, we have controlled our environment in such a way that 1 person will only infect one other person. The backside of the bell curve happens when the actual infection rate drops below 1. The question we all have right now is, how long will that take? Using the basic idea of 14 as the number of days one person can be contagious (we'll call this the infection cycle), and taking into account people not knowing they were infected and infecting other people in their household, it seems logical that we will have to endure about 2 infection cycles before we start to see the logarithmic trend we are all hoping for. So, as of right now, my guess is 2-3 more weeks minimum.

We are all now patiently waiting for what is known as a lagging indicator to validate our efforts but, in the meantime know this:

You are doing the right thing and it WILL have a significant effect on the infection rate.

Stay home. Stay healthy. Stay positive.

Oh, and knock it off with the toilet paper you dipshits.

]]>
Covid 19 R Naught

The study of infectious diseases uses something called the Basic Reproduction Number ( R-naught/R0 ) to indicate how contagious a given infection is. It represents the average number of infections that one infected person will cause. Here are some examples of R0 numbers for known diseases (pulled from Wikipedia):

  • Flu: 0.9 - 2.1
  • Covid 19: 1.4 - 3.9
  • Aids: 2 - 5
  • Measles: 12 - 18 (yay vaccines!)

An R0 < 1 means that the disease will eventually disappear as it does not have a sustainable infection rate. The greater the number, the higher the contagion rate (I mean, come on Measles.. overachieve much?).

From what I can gather, the current average R0 for Covid 19 is 2.2 (hence my n^2 example). The easiest way to visualize it is, for every 10 people who have the disease, 22 more people will be infected by them. When comparing to the current infection rates, keep in mind that this is a statistical indicator and only deals in averages. Rural areas will have a much lower infection rate than densely populated urban areas. For example, North Dakota currently has 1 documented case while New York has almost 50k. (If you live in a densely populated area and are ignorant/arrogant, you WILL get sick.. science.)

The question I've been getting is, "what the hell is this whole flattening the curve thing?". The chart for infections over time is currently on an exponential growth curve (the front side of a bell curve). As a society practicing social isolation, we are now deep in the "deliberate intervention" stage. This will dramatically affect the growth (trust me), initially slowing to a logarithmic curve (the top of the bell curve) then seeing a decline (the backside of the bell curve). So, the curve being flattened means that the actual infection rate (not the statistical R0) starts to approach 1. Meaning, we have controlled our environment in such a way that 1 person will only infect one other person. The backside of the bell curve happens when the actual infection rate drops below 1. The question we all have right now is, how long will that take? Using the basic idea of 14 as the number of days one person can be contagious (we'll call this the infection cycle), and taking into account people not knowing they were infected and infecting other people in their household, it seems logical that we will have to endure about 2 infection cycles before we start to see the logarithmic trend we are all hoping for. So, as of right now, my guess is 2-3 more weeks minimum.

We are all now patiently waiting for what is known as a lagging indicator to validate our efforts but, in the meantime know this:

You are doing the right thing and it WILL have a significant effect on the infection rate.

Stay home. Stay healthy. Stay positive.

Oh, and knock it off with the toilet paper you dipshits.

]]>
http://leejon.es/blahg/blahg/covid-19-r-naught Sat, 28 Mar 2020 00:00:00 -0400
<![CDATA[Ducky One2 SF Mac Issues]]> http://leejon.es/blahg/blahg/ducky-one2-sf-mac-issues Ducky One2 SF Mac Issues

In the 90s, I was always very particular about my keyboards, opting for a certain NCR brand then transitioning to the microsoft ergonomic for many years. When I started spending much more time on my macbook, the chicklet style keyboard started to be the norm so using a wireless version with the same feel was pretty much just more of the same. I decided that I needed more feedback from my keyboard and started researching. Once I learned obout the different mechanical switches, Ducky seemed like a pretty good brand choice. I'm typing this on it right now and the sound, pressure and feedback are just about perfect. Its definitely a quality upgrade in the hardware department. I can't imagine possibly ever needing any of the coloured lighting settings but, thats just a personal preference.

Now, on to the issue..

Thus far I've had 2 very different and annoying things happen.

  1. The keyboard went to sleep with no lights on and wouldn't wake up.
  2. The keyboard went to sleep with one row of lights on and wouldn't wake up.

The timing of each seemed random. Sometimes it happened when the computer went to sleep. Sometimes not.

The only solution to either problem was to unplug/replug in the keyboard.

After a bunch of research, the magic solution was as follows:

Hold Fn + Alt + P until the lights on the keyboard change (about 3 seconds). Type: 05AC024F Unplug/replug in the keyboard.

Apparently this changes the vendor ID of the keyboard so that the Mac thinks its an Apple keyboard.


Update:

*** Make sure that DIP switch 3 is set to the ON position for this to work.

]]>
Ducky One2 SF Mac Issues

In the 90s, I was always very particular about my keyboards, opting for a certain NCR brand then transitioning to the microsoft ergonomic for many years. When I started spending much more time on my macbook, the chicklet style keyboard started to be the norm so using a wireless version with the same feel was pretty much just more of the same. I decided that I needed more feedback from my keyboard and started researching. Once I learned obout the different mechanical switches, Ducky seemed like a pretty good brand choice. I'm typing this on it right now and the sound, pressure and feedback are just about perfect. Its definitely a quality upgrade in the hardware department. I can't imagine possibly ever needing any of the coloured lighting settings but, thats just a personal preference.

Now, on to the issue..

Thus far I've had 2 very different and annoying things happen.

  1. The keyboard went to sleep with no lights on and wouldn't wake up.
  2. The keyboard went to sleep with one row of lights on and wouldn't wake up.

The timing of each seemed random. Sometimes it happened when the computer went to sleep. Sometimes not.

The only solution to either problem was to unplug/replug in the keyboard.

After a bunch of research, the magic solution was as follows:

Hold Fn + Alt + P until the lights on the keyboard change (about 3 seconds). Type: 05AC024F Unplug/replug in the keyboard.

Apparently this changes the vendor ID of the keyboard so that the Mac thinks its an Apple keyboard.


Update:

*** Make sure that DIP switch 3 is set to the ON position for this to work.

]]>
http://leejon.es/blahg/blahg/ducky-one2-sf-mac-issues Tue, 24 Mar 2020 00:00:00 -0400
<![CDATA[February 2020 Review]]> http://leejon.es/blahg/blahg/february-2020-review Monthly Review for February 2020

What Went Well

  • Spent the month away from my family mired in meetings and selling a house.
  • The house went on the market and was sold.
  • Started on several new projects.
  • Caught up with some good friends.
  • Completed a LOT of work.
  • Switched from an iPad to a Kindle to promote more reading.

What I Need To Improve

  • Still not scheduling P1s. It should be a lot clearer as to what they are at any point during the week.
  • Be more intentional with my priming time before I start work. Im allowing too many work distractions to create drift.

How I Did On My Goals for February

  • My only main goal was to sell the house. This was completed.

Goals for March

  • Complete 1st draft of my talk in May.
  • Lift 12x, Run 6x
  • Cleanup some tax things.
  • Complete product releases.
  • Finish at least one book.
  • Release at least 1 video.
]]>
Monthly Review for February 2020

What Went Well

  • Spent the month away from my family mired in meetings and selling a house.
  • The house went on the market and was sold.
  • Started on several new projects.
  • Caught up with some good friends.
  • Completed a LOT of work.
  • Switched from an iPad to a Kindle to promote more reading.

What I Need To Improve

  • Still not scheduling P1s. It should be a lot clearer as to what they are at any point during the week.
  • Be more intentional with my priming time before I start work. Im allowing too many work distractions to create drift.

How I Did On My Goals for February

  • My only main goal was to sell the house. This was completed.

Goals for March

  • Complete 1st draft of my talk in May.
  • Lift 12x, Run 6x
  • Cleanup some tax things.
  • Complete product releases.
  • Finish at least one book.
  • Release at least 1 video.
]]>
http://leejon.es/blahg/blahg/february-2020-review Mon, 09 Mar 2020 00:00:00 -0400
<![CDATA[Shell into a Docker Container by Image Name]]> http://leejon.es/blahg/blahg/shell-into-docker-container-by-image-name Command to Shell into a Docker Container

I decided to simplify the process of shelling into a container by creating a script that uses the image name to search for the container id then executes a bash shell. This won't work for everyone's work flow but, it saves me a buch of typing.

#!/bin/bash
echo "Looking for $1"
OUT="$(docker ps | awk '{if( $2==container ) print $1}'-v container=$1)"

if [ ${#OUT} -eq 0 ]
then
    echo "Unable to locate a container running the image $1"
    exit 1
fi

echo "Executing shell for Container ID:${OUT} running image $1"

docker exec -it ${OUT} bash

gist

Installation

Create the file in /usr/local/bin, naming it d-s.

Make it executable:

chmod +x /usr/local/bin/d-s

Usage

d-s imagename

Explanation

So, lets take a look at how this is working. My typical workflow requires

docker ps

Which would output something like:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES

3a44bd8f52da        maxcpq              "docker-php-entrypoi…"   22 seconds ago      Up 21 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   maxcpq_app_1

1e795b1b0cc0        mysql:5.7           "docker-entrypoint.s…"   23 seconds ago      Up 22 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp          maxcpq_mysql_1

I then copy the container ID and shell into the container by typing:

docker exec -it 3a44bd8f52da bash

With the exception of the parameter, the whole thing could be handled as an alias but, not being able to specify the container negates the whole purpose.

Everything is self explanatory with the exception of the line that assigns the container ID to the OUT variable.

This is accomplished by first taking the output of 'docker ps' and piping it through awk. The awk script looks like this:

awk '{if( $2==container ) print $1}'-v container=$1)

awk thinks in columns so the if statement is saying, if column2==container, print column1. Now, container is actually a variable which is assigned using the -v switch. The $1 being assigned to container variable is outside of the awk script and is actually the 1st command line parameter being passed to the script, not the calumn. The only script parameter is the container name so the container variable is assigned the command line parameter.

If the awk command is successful then the OUT variable will contain the container ID. It will then be passed to the docker exec command.

]]>
Command to Shell into a Docker Container

I decided to simplify the process of shelling into a container by creating a script that uses the image name to search for the container id then executes a bash shell. This won't work for everyone's work flow but, it saves me a buch of typing.

#!/bin/bash
echo "Looking for $1"
OUT="$(docker ps | awk '{if( $2==container ) print $1}'-v container=$1)"

if [ ${#OUT} -eq 0 ]
then
    echo "Unable to locate a container running the image $1"
    exit 1
fi

echo "Executing shell for Container ID:${OUT} running image $1"

docker exec -it ${OUT} bash

gist

Installation

Create the file in /usr/local/bin, naming it d-s.

Make it executable:

chmod +x /usr/local/bin/d-s

Usage

d-s imagename

Explanation

So, lets take a look at how this is working. My typical workflow requires

docker ps

Which would output something like:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES

3a44bd8f52da        maxcpq              "docker-php-entrypoi…"   22 seconds ago      Up 21 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   maxcpq_app_1

1e795b1b0cc0        mysql:5.7           "docker-entrypoint.s…"   23 seconds ago      Up 22 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp          maxcpq_mysql_1

I then copy the container ID and shell into the container by typing:

docker exec -it 3a44bd8f52da bash

With the exception of the parameter, the whole thing could be handled as an alias but, not being able to specify the container negates the whole purpose.

Everything is self explanatory with the exception of the line that assigns the container ID to the OUT variable.

This is accomplished by first taking the output of 'docker ps' and piping it through awk. The awk script looks like this:

awk '{if( $2==container ) print $1}'-v container=$1)

awk thinks in columns so the if statement is saying, if column2==container, print column1. Now, container is actually a variable which is assigned using the -v switch. The $1 being assigned to container variable is outside of the awk script and is actually the 1st command line parameter being passed to the script, not the calumn. The only script parameter is the container name so the container variable is assigned the command line parameter.

If the awk command is successful then the OUT variable will contain the container ID. It will then be passed to the docker exec command.

]]>
http://leejon.es/blahg/blahg/shell-into-docker-container-by-image-name Sat, 01 Feb 2020 00:00:00 -0500
<![CDATA[Programming For Loops in 5 Languages]]> http://leejon.es/blahg/blahg/programming-for-loops-in-5-languages Programming For Loops in 5 Different Languages

In this episode we create small programs in c, go, python, ruby and rust to demonstrate the different for-loop syntax.

Don’t forget to like the video and subscribe to the channel!

]]>
Programming For Loops in 5 Different Languages

In this episode we create small programs in c, go, python, ruby and rust to demonstrate the different for-loop syntax.

Don’t forget to like the video and subscribe to the channel!

]]>
http://leejon.es/blahg/blahg/programming-for-loops-in-5-languages Sat, 04 Jan 2020 00:00:00 -0500
<![CDATA[December 2019 Review]]> http://leejon.es/blahg/blahg/december-2019-review Monthly Review for December 2019

What Went Well

  • Continued to improve the todoist based workflow for my daily routines and tasks.
  • Holiday season was very nice.

What I Need To Improve

  • More focused blocks during my scheduled technical time. I should probably be creating entries in my schedule for all P1/P2s.

How I Did On My Goals for December

  • Had an injury that took me out of the game physically.

Goals for December

  • 3 Videos
  • Lift 16x, Run 8x
]]>
Monthly Review for December 2019

What Went Well

  • Continued to improve the todoist based workflow for my daily routines and tasks.
  • Holiday season was very nice.

What I Need To Improve

  • More focused blocks during my scheduled technical time. I should probably be creating entries in my schedule for all P1/P2s.

How I Did On My Goals for December

  • Had an injury that took me out of the game physically.

Goals for December

  • 3 Videos
  • Lift 16x, Run 8x
]]>
http://leejon.es/blahg/blahg/december-2019-review Wed, 01 Jan 2020 00:00:00 -0500
<![CDATA[Unboxing a MacBook Pro 16]]> http://leejon.es/blahg/blahg/macbook-pro-16-unboxing Unboxing a MacBook Pro 16

Unboxing a 2019 MacBook Pro 16

Don’t forget to like the video and subscribe to the channel!

]]>
Unboxing a MacBook Pro 16

Unboxing a 2019 MacBook Pro 16

Don’t forget to like the video and subscribe to the channel!

]]>
http://leejon.es/blahg/blahg/macbook-pro-16-unboxing Sun, 15 Dec 2019 00:00:00 -0500
<![CDATA[November 2019 Review]]> http://leejon.es/blahg/blahg/november-2019-review Monthly Review for November 2019

What Went Well

  • Income continues to improve.
  • I currently have a very usable workflow for my daily routines and tasks.

What I Need To Improve

  • Consistency of the gym/morning priming routine.
  • More focused blocks during my scheduled technical time.

How I Did On My Goals for November

Go to the gym 5x a week

I was completely on track for this goal until a week ago where I ended up with a stomach virus that took me out of the game for a while. The upside of this was that I was unable to eat for 2 days, after which, I had the same effects as fasting. I used that as a jumping off point and have been eating super clean for the past week. So, the last week aside, I hit this goal.

Schedule

As listed in the what went well section, this was a huge win. I dedicated a couple of hours to switching back to Todoist. Part of my challenge is that I use multiple apps to track daily workflow. Zendesk for ticket management, Manifestly for checklists, my internal software for managing product development etc. It was becoming increasingly difficult to make sure each of these items were fully processed on the days needed. To fix this, I created a meta list to track each major item. Using it has been a huge success. I now have 3 daily routines that keep me on track. My morning priming routine, my morning business meta list and my evening close out routine.

Videos

In order to be consistent, this goal will never be possible until I find a reliable weekly time in my schedule. This is the month I'm gonna make that happen.

Goals for December

  • 2 Videos
  • Lift 16x, Run 12x
  • Complete planning for Q1 2020
]]>
Monthly Review for November 2019

What Went Well

  • Income continues to improve.
  • I currently have a very usable workflow for my daily routines and tasks.

What I Need To Improve

  • Consistency of the gym/morning priming routine.
  • More focused blocks during my scheduled technical time.

How I Did On My Goals for November

Go to the gym 5x a week

I was completely on track for this goal until a week ago where I ended up with a stomach virus that took me out of the game for a while. The upside of this was that I was unable to eat for 2 days, after which, I had the same effects as fasting. I used that as a jumping off point and have been eating super clean for the past week. So, the last week aside, I hit this goal.

Schedule

As listed in the what went well section, this was a huge win. I dedicated a couple of hours to switching back to Todoist. Part of my challenge is that I use multiple apps to track daily workflow. Zendesk for ticket management, Manifestly for checklists, my internal software for managing product development etc. It was becoming increasingly difficult to make sure each of these items were fully processed on the days needed. To fix this, I created a meta list to track each major item. Using it has been a huge success. I now have 3 daily routines that keep me on track. My morning priming routine, my morning business meta list and my evening close out routine.

Videos

In order to be consistent, this goal will never be possible until I find a reliable weekly time in my schedule. This is the month I'm gonna make that happen.

Goals for December

  • 2 Videos
  • Lift 16x, Run 12x
  • Complete planning for Q1 2020
]]>
http://leejon.es/blahg/blahg/november-2019-review Sun, 01 Dec 2019 00:00:00 -0500
<![CDATA[October 2019 Review]]> http://leejon.es/blahg/blahg/october-2019-review Monthly Review for October 2019

What Went Well

  • After 2 very long years, finally a radical change in free time and income.

What I Need To Improve

  • Health and Fitness .. still.
  • Scheduling - Now I have a lot more free time, I need to make buch better use of it.

How I Did On My Goals For October

  • During the last week I finally found the time and motivation to start getting to the gym frequently.

I'm giving myself a pass on the rest based on the radical changes that took place at the end of the month.

Goals for November

  • Go to the gym 5x a week.
  • Find a better schedule by adjusting weekly and sticking to it.
  • 2 Videos
]]>
Monthly Review for October 2019

What Went Well

  • After 2 very long years, finally a radical change in free time and income.

What I Need To Improve

  • Health and Fitness .. still.
  • Scheduling - Now I have a lot more free time, I need to make buch better use of it.

How I Did On My Goals For October

  • During the last week I finally found the time and motivation to start getting to the gym frequently.

I'm giving myself a pass on the rest based on the radical changes that took place at the end of the month.

Goals for November

  • Go to the gym 5x a week.
  • Find a better schedule by adjusting weekly and sticking to it.
  • 2 Videos
]]>
http://leejon.es/blahg/blahg/october-2019-review Wed, 06 Nov 2019 00:00:00 -0500
<![CDATA[Writing a Command Line Utility in C Pt 2 - StdOut and StdErr]]> http://leejon.es/blahg/blahg/writing-a-command-line-utility-in-c-pt1-stdout-stderr Writing a Command Line Utility in C Pt 2

The command-line utility series continues. In this episode we look at how to handle the stdout and stderr streams.

Some useful links are:

The c programming language
https://en.wikipedia.org/wiki/C(programminglanguage)

GCC
https://en.wikipedia.org/wiki/GNUCompilerCollection

Vim
https://en.wikipedia.org/wiki/Vim(texteditor)

Unix
https://en.wikipedia.org/wiki/Unix

Command Line Interface
https://en.wikipedia.org/wiki/Command-line_interface

Don’t forget to like the video and subscribe to the channel!

]]>
Writing a Command Line Utility in C Pt 2

The command-line utility series continues. In this episode we look at how to handle the stdout and stderr streams.

Some useful links are:

The c programming language
https://en.wikipedia.org/wiki/C(programminglanguage)

GCC
https://en.wikipedia.org/wiki/GNUCompilerCollection

Vim
https://en.wikipedia.org/wiki/Vim(texteditor)

Unix
https://en.wikipedia.org/wiki/Unix

Command Line Interface
https://en.wikipedia.org/wiki/Command-line_interface

Don’t forget to like the video and subscribe to the channel!

]]>
http://leejon.es/blahg/blahg/writing-a-command-line-utility-in-c-pt1-stdout-stderr Wed, 16 Oct 2019 00:00:00 -0400
<![CDATA[September 2019 Review]]> http://leejon.es/blahg/blahg/september-2019-review Monthly Review for September 2019

What Went Well

  • Marketing - I made very good progress with my first real Facebook marketing campaign using retargetting.
  • Metrics - It was the first month that I collected fairly good metrics across all of my lines of business. This will give me a decent dashboard moving forward to make better decisions.
  • Management - After a series of abject failures, I brought in a new employee to train in the PM/Suppport role. We doubled down on the use of tickets to keep ourselves accountable and have started to make some real progress.

What I Need To Improve

  • Health and Fitness - I've barely been making it to the gym at all. I still eat once a day but I'm not eating as clean as I usually do and I can feel it.

How I Did On My Goals For September

I think the only thing I really managed to do Ok on was pushing to complete the Q3 OKRs. It's been a tough year and a particularly tough month but, I'm not giving myself a pass.

Goals for October

  • Stay on track with weekly sprints.
  • Go to the gym at least 4x a week.
  • 1 business blog
  • 2 essays
  • 4 videos
]]>
Monthly Review for September 2019

What Went Well

  • Marketing - I made very good progress with my first real Facebook marketing campaign using retargetting.
  • Metrics - It was the first month that I collected fairly good metrics across all of my lines of business. This will give me a decent dashboard moving forward to make better decisions.
  • Management - After a series of abject failures, I brought in a new employee to train in the PM/Suppport role. We doubled down on the use of tickets to keep ourselves accountable and have started to make some real progress.

What I Need To Improve

  • Health and Fitness - I've barely been making it to the gym at all. I still eat once a day but I'm not eating as clean as I usually do and I can feel it.

How I Did On My Goals For September

I think the only thing I really managed to do Ok on was pushing to complete the Q3 OKRs. It's been a tough year and a particularly tough month but, I'm not giving myself a pass.

Goals for October

  • Stay on track with weekly sprints.
  • Go to the gym at least 4x a week.
  • 1 business blog
  • 2 essays
  • 4 videos
]]>
http://leejon.es/blahg/blahg/september-2019-review Sun, 06 Oct 2019 00:00:00 -0400
<![CDATA[Building a Snake Game in Python pt1]]> http://leejon.es/blahg/blahg/building-a-snake-game-in-python-pt1 Building a Snake Game in Python pt1

This series will cover the complete console based implementation of the classic snake game using python. Starting from UML and a single-player based implementation, the end result of the series will be a game capable of network-based head to head play.

This episode covers the basic design architecture, the current UML and an initial code walkthrough of the currently functioning single-player game.

You can find the code here

The project uses git-flow so the latest stable release is always in the master branch while new development takes place in the develop branch.

]]>
Building a Snake Game in Python pt1

This series will cover the complete console based implementation of the classic snake game using python. Starting from UML and a single-player based implementation, the end result of the series will be a game capable of network-based head to head play.

This episode covers the basic design architecture, the current UML and an initial code walkthrough of the currently functioning single-player game.

You can find the code here

The project uses git-flow so the latest stable release is always in the master branch while new development takes place in the develop branch.

]]>
http://leejon.es/blahg/blahg/building-a-snake-game-in-python-pt1 Sat, 05 Oct 2019 00:00:00 -0400
<![CDATA[August 2019 Review]]> http://leejon.es/blahg/blahg/august-2019-review Monthly Review for August 2019

What Went Well

  • Focus - I've had a singular focus on completing a large, complicated and important project. Its challenged me in a lot of different ways.

What I need to Improve

  • Out of Balance - The amount of focus it has taken to complete the big project required me to make a conscious desicion to go out of balance with many other things in my life, like family and health. I made peace with that and set some clear expectations before going into it.
  • Gym - I started out about 4x a week (already a decrease from my usual 6x). I think I made it one day last week.
  • Routine - My routines for starting and ending the day have definitely fallen by the wayside.

Goals for September

  • 2 personal essays
  • 1 business article
  • lift 12x
  • run 8x
  • Refocus on daily routines.
  • Double down and try and complete as many Q3 OKRs as possible.
]]>
Monthly Review for August 2019

What Went Well

  • Focus - I've had a singular focus on completing a large, complicated and important project. Its challenged me in a lot of different ways.

What I need to Improve

  • Out of Balance - The amount of focus it has taken to complete the big project required me to make a conscious desicion to go out of balance with many other things in my life, like family and health. I made peace with that and set some clear expectations before going into it.
  • Gym - I started out about 4x a week (already a decrease from my usual 6x). I think I made it one day last week.
  • Routine - My routines for starting and ending the day have definitely fallen by the wayside.

Goals for September

  • 2 personal essays
  • 1 business article
  • lift 12x
  • run 8x
  • Refocus on daily routines.
  • Double down and try and complete as many Q3 OKRs as possible.
]]>
http://leejon.es/blahg/blahg/august-2019-review Sun, 01 Sep 2019 00:00:00 -0400
<![CDATA[5 Things To Get Up and Running With Vim]]> http://leejon.es/blahg/blahg/up-and-running-with-vim 5 Things You Need to Know to Get Up and Running With Vim

The Vim editor is everywhere. At some point in your life you are going to be in a tight spot and need a text editor and like a long lost friend, vim will be there for you. This episode breaks down the basic skills you need to be able to successfully use vim like opening, editing and saving. Be warned, you may even learn to like it.

https://en.wikipedia.org/wiki/Vim(texteditor)

Don’t forget to like the video and subscribe to the channel!

]]>
5 Things You Need to Know to Get Up and Running With Vim

The Vim editor is everywhere. At some point in your life you are going to be in a tight spot and need a text editor and like a long lost friend, vim will be there for you. This episode breaks down the basic skills you need to be able to successfully use vim like opening, editing and saving. Be warned, you may even learn to like it.

https://en.wikipedia.org/wiki/Vim(texteditor)

Don’t forget to like the video and subscribe to the channel!

]]>
http://leejon.es/blahg/blahg/up-and-running-with-vim Sun, 28 Jul 2019 00:00:00 -0400
<![CDATA[Writing a Command Line Utility in C Pt 1]]> http://leejon.es/blahg/blahg/writing-a-command-line-utility-in-c-pt1 Writing a Command Line Utility in C Pt 1

Writing a command-line utility in C requires the understanding of several things beyond the c programming language: command-line parameters, how the parameters are passed into the program, how to parse the parameters in code; and how to use streams for both input and output. This episode is a real-time coding session where, from scratch, I use vim to write a basic C program that demonstrates how to read and interpret the parameters passed to the program via the command-line. I also demonstrate how to explore and understand the parameters through code. Using gcc to compile and link the program along the way, we end up with a command-line utility that can interpret a help switch and accept and process one parameter.

Some useful links are:

The c programming language
https://en.wikipedia.org/wiki/C(programminglanguage)

GCC
https://en.wikipedia.org/wiki/GNUCompilerCollection

Vim
https://en.wikipedia.org/wiki/Vim(texteditor)

Unix
https://en.wikipedia.org/wiki/Unix

Command Line Interface
https://en.wikipedia.org/wiki/Command-line_interface

Don’t forget to like the video and subscribe to the channel!

]]>
Writing a Command Line Utility in C Pt 1

Writing a command-line utility in C requires the understanding of several things beyond the c programming language: command-line parameters, how the parameters are passed into the program, how to parse the parameters in code; and how to use streams for both input and output. This episode is a real-time coding session where, from scratch, I use vim to write a basic C program that demonstrates how to read and interpret the parameters passed to the program via the command-line. I also demonstrate how to explore and understand the parameters through code. Using gcc to compile and link the program along the way, we end up with a command-line utility that can interpret a help switch and accept and process one parameter.

Some useful links are:

The c programming language
https://en.wikipedia.org/wiki/C(programminglanguage)

GCC
https://en.wikipedia.org/wiki/GNUCompilerCollection

Vim
https://en.wikipedia.org/wiki/Vim(texteditor)

Unix
https://en.wikipedia.org/wiki/Unix

Command Line Interface
https://en.wikipedia.org/wiki/Command-line_interface

Don’t forget to like the video and subscribe to the channel!

]]>
http://leejon.es/blahg/blahg/writing-a-command-line-utility-in-c-pt1 Sat, 20 Jul 2019 00:00:00 -0400
<![CDATA[Configuring Codeception for Selenium in OSX]]> http://leejon.es/blahg/blahg/codeception-selenium-osx Configuring Selenium in Codeception on OSX

Installing Selenium

This turns out to be a really simple task using brew.

brew install selenium-server-standalone

Installing Chromedriver

brew tap homebrew/cask
brew cask install chromedriver

Configuring Codeception

Tho old acceptance.suite.yml:

actor: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: http://devsite.local
        - \Helper\Acceptance

Updated to use selenium:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: http://devsite.local
            browser: chrome
        - \Helper\Acceptance

Running Tests

First, fire up selenium:

selenium-server -port 4444

Then run your tests (assuming composer install):

vendor/bin/codecept run

At this point you should see the browser pop up and start responding to invisible fingers.

]]>
Configuring Selenium in Codeception on OSX

Installing Selenium

This turns out to be a really simple task using brew.

brew install selenium-server-standalone

Installing Chromedriver

brew tap homebrew/cask
brew cask install chromedriver

Configuring Codeception

Tho old acceptance.suite.yml:

actor: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: http://devsite.local
        - \Helper\Acceptance

Updated to use selenium:

actor: AcceptanceTester
modules:
    enabled:
        - WebDriver:
            url: http://devsite.local
            browser: chrome
        - \Helper\Acceptance

Running Tests

First, fire up selenium:

selenium-server -port 4444

Then run your tests (assuming composer install):

vendor/bin/codecept run

At this point you should see the browser pop up and start responding to invisible fingers.

]]>
http://leejon.es/blahg/blahg/codeception-selenium-osx Sat, 23 Feb 2019 00:00:00 -0500
<![CDATA[Rolling Database Backup]]> http://leejon.es/blahg/blahg/rolling-database-backup Rolling MySql Backup

When launched by cron, this script provides a quick solution to scheduled rolling database backups.

view the gist here

Copy the script to your server then set the config variables including the target directory, database and credentials located at the top of the file.

Make the script executable:

   chmod +x database_backup.sh

Run the script:

   ./database_backup.sh

Verify that a valid backup is in the target directory.

Schedule the script to whatever frequency you want using cron:

   crontab -e

Example of every day at 7am:

   0 7 * * * /home/codemonkey/database_backup.sh
]]>
Rolling MySql Backup

When launched by cron, this script provides a quick solution to scheduled rolling database backups.

view the gist here

Copy the script to your server then set the config variables including the target directory, database and credentials located at the top of the file.

Make the script executable:

   chmod +x database_backup.sh

Run the script:

   ./database_backup.sh

Verify that a valid backup is in the target directory.

Schedule the script to whatever frequency you want using cron:

   crontab -e

Example of every day at 7am:

   0 7 * * * /home/codemonkey/database_backup.sh
]]>
http://leejon.es/blahg/blahg/rolling-database-backup Sat, 19 Jan 2019 00:00:00 -0500
<![CDATA[Critical Thinking]]> http://leejon.es/blahg/blahg/politicalthinking On Critical Thinking In This Political Climate

If your critical thinking process always results in a conclusion that falls within the parameters of the ideology of your chosen political party then you aren't actually thinking critically.

]]>
On Critical Thinking In This Political Climate

If your critical thinking process always results in a conclusion that falls within the parameters of the ideology of your chosen political party then you aren't actually thinking critically.

]]>
http://leejon.es/blahg/blahg/politicalthinking Tue, 08 Jan 2019 00:00:00 -0500
<![CDATA[Things Every Programmer Should Do At Least Once Pt 1]]> http://leejon.es/blahg/blahg/things-every-programmer-should-do-pt1 Things Every Programmers Should Do At Least Once Pt 1

Write a small Program In Assembly Language

The other day I gave my 'uphill both ways in the snow barefoot' / 'back in my day' programming talk and it made me think about the path of fledgling programmers. The challenge I see right now in the programming world is that we are standing on the shoulders of giants who are standing on the shoulders of other giants who are also standing on the.. well.. you get the picture. At the very bottom of that stack of giants is the baddest mother of them all. Faster and stronger than the others by several orders of magnitude. She is the one that whispers unfiltered magic to the CPU. My fear is that she's getting lonely these days. Her time spent having boring conversations with bios engineers, firmware guys and hardware hobbyists. All programmers should spend a little time with her and learn some reverence. They need to know when it comes down to it, how programs really get things done.

Back at the beginning of my journey in 1984, I was writing communications software on the Commodore 64 in BASIC. Due to the small processor and an inefficient language, there were times when the program struggled to keep up with a 300 baud connection. I discovered that the only solution was to write the input and output routines in machine code.

To this end, I spent the first part of my 14 year old summer using a machine code monitor to figure out how to simply output my name to the screen. After a few days I managed this seemingly insignificant task but was then left with a terrible sinking feeling thinking about all would be involved in interfacing with the BASIC language and reading and writing to the serial port. Then it happened.. one weekend during one of our frenzied software trading get togethers, my friend Mike gave me a pirated copy of the Commodore Macro Assembler Development System.This. Changed. Everything. Assembly language gave me a whole new toolset. Now I wasn’t just typing numbers into a box, now I was afforded the ability to write instructions that looked vaguely English into a text file. I could use names for variables and write comments. Amazing! In order to turn this file into the super fast machine code that I needed, I had to learn about compiling and linking, something very foreign to a kid who had until that point only typed instructions into a BASIC interpreter and typed ‘run’.

Since my first encounter with the 6510 assembler, I’ve worked with assembly on x86 and m68k processors plus various embedded chipsets. Each time I do, my mind goes back to that place where I had to do a lot to get very little to happen, but the trade off was that very little thing ran very very…*veeery fast! *Until you have written something in assembly language, you will never know how fast your computer can really go.

I owe a lot to my first experience with assembly.

  • I learned about the individual instructions that processors consume.

  • I learned about registers.

  • I learned the magic of the accumulator.

  • I learned about allocating, accessing and freeing memory.

  • I learned the very core of comparing and branching.

  • I learned about compiling to object code and why linkers exist.

The next big step on my journey was learning the C language. Everything that I learned using the macro assembler gave me a huge advantage because it gave me an understanding of how C works at a very low level.

The most important thing learning to write programs in assembly taught me was how to do something really hard with very little other than a quite shoddy xeroxed manual and a couple of smart friends.

]]>
Things Every Programmers Should Do At Least Once Pt 1

Write a small Program In Assembly Language

The other day I gave my 'uphill both ways in the snow barefoot' / 'back in my day' programming talk and it made me think about the path of fledgling programmers. The challenge I see right now in the programming world is that we are standing on the shoulders of giants who are standing on the shoulders of other giants who are also standing on the.. well.. you get the picture. At the very bottom of that stack of giants is the baddest mother of them all. Faster and stronger than the others by several orders of magnitude. She is the one that whispers unfiltered magic to the CPU. My fear is that she's getting lonely these days. Her time spent having boring conversations with bios engineers, firmware guys and hardware hobbyists. All programmers should spend a little time with her and learn some reverence. They need to know when it comes down to it, how programs really get things done.

Back at the beginning of my journey in 1984, I was writing communications software on the Commodore 64 in BASIC. Due to the small processor and an inefficient language, there were times when the program struggled to keep up with a 300 baud connection. I discovered that the only solution was to write the input and output routines in machine code.

To this end, I spent the first part of my 14 year old summer using a machine code monitor to figure out how to simply output my name to the screen. After a few days I managed this seemingly insignificant task but was then left with a terrible sinking feeling thinking about all would be involved in interfacing with the BASIC language and reading and writing to the serial port. Then it happened.. one weekend during one of our frenzied software trading get togethers, my friend Mike gave me a pirated copy of the Commodore Macro Assembler Development System.This. Changed. Everything. Assembly language gave me a whole new toolset. Now I wasn’t just typing numbers into a box, now I was afforded the ability to write instructions that looked vaguely English into a text file. I could use names for variables and write comments. Amazing! In order to turn this file into the super fast machine code that I needed, I had to learn about compiling and linking, something very foreign to a kid who had until that point only typed instructions into a BASIC interpreter and typed ‘run’.

Since my first encounter with the 6510 assembler, I’ve worked with assembly on x86 and m68k processors plus various embedded chipsets. Each time I do, my mind goes back to that place where I had to do a lot to get very little to happen, but the trade off was that very little thing ran very very…*veeery fast! *Until you have written something in assembly language, you will never know how fast your computer can really go.

I owe a lot to my first experience with assembly.

  • I learned about the individual instructions that processors consume.

  • I learned about registers.

  • I learned the magic of the accumulator.

  • I learned about allocating, accessing and freeing memory.

  • I learned the very core of comparing and branching.

  • I learned about compiling to object code and why linkers exist.

The next big step on my journey was learning the C language. Everything that I learned using the macro assembler gave me a huge advantage because it gave me an understanding of how C works at a very low level.

The most important thing learning to write programs in assembly taught me was how to do something really hard with very little other than a quite shoddy xeroxed manual and a couple of smart friends.

]]>
http://leejon.es/blahg/blahg/things-every-programmer-should-do-pt1 Thu, 27 Dec 2018 00:00:00 -0500
<![CDATA[Papas Pilar Rum Sauce]]> http://leejon.es/blahg/blahg/papas-pilar-rum-sauce Papas Pilar Rum Sauce Recipe

I needed some a brandy sauce for my Christmas pudding so I decided to play around and see what I could come up with. This turned out pretty nice.

Ingredients

  • 2 tbsp butter

  • 2 tbsp flour

  • 1 cup milk

  • 3 tbsp icing sugar

  • 3 tbsp Papas Pilar rum

Method

Melt butter, add flour, cook for 2 mins to create a roux.
Add milk and simmer for 5 mins.
Stir in sugar.
Stir in rum.
Cook for 3 more mins.

]]>
Papas Pilar Rum Sauce Recipe

I needed some a brandy sauce for my Christmas pudding so I decided to play around and see what I could come up with. This turned out pretty nice.

Ingredients

  • 2 tbsp butter

  • 2 tbsp flour

  • 1 cup milk

  • 3 tbsp icing sugar

  • 3 tbsp Papas Pilar rum

Method

Melt butter, add flour, cook for 2 mins to create a roux.
Add milk and simmer for 5 mins.
Stir in sugar.
Stir in rum.
Cook for 3 more mins.

]]>
http://leejon.es/blahg/blahg/papas-pilar-rum-sauce Tue, 25 Dec 2018 00:00:00 -0500
<![CDATA[Ezra Masch - Volumes]]> http://leejon.es/blahg/blahg/ezra-masch-volumes Ezra Masch - Volumes

Volumes is, as best can be described, an art installation. The room is filled with light poles that are triggered by a live drummer. The lights start and the center of the room. The louder the drummer plays, the more light sources illuminate outwards from the center. The poles consist of 3 different areas which illuminate based on the frequency of the drum being played. Low to high respectively.
My first performance was mainly just "drum shit" and some basic thoughts about how the light system works.
This video is a snipped from my 2nd performance where I started to really understand the need for dynamics and space so that I wasn't just playing in a "well lit room".

Performance_2

]]>
Ezra Masch - Volumes

Volumes is, as best can be described, an art installation. The room is filled with light poles that are triggered by a live drummer. The lights start and the center of the room. The louder the drummer plays, the more light sources illuminate outwards from the center. The poles consist of 3 different areas which illuminate based on the frequency of the drum being played. Low to high respectively.
My first performance was mainly just "drum shit" and some basic thoughts about how the light system works.
This video is a snipped from my 2nd performance where I started to really understand the need for dynamics and space so that I wasn't just playing in a "well lit room".

Performance_2

]]>
http://leejon.es/blahg/blahg/ezra-masch-volumes Sat, 01 Sep 2018 00:00:00 -0400
<![CDATA[Don't Call It a Comeback]]> http://leejon.es/blahg/blahg/dont-call-it-a-comeback We Can Rebuild Him

Based on the afwul state I left the last version of my personal site in, I decided to resurrect a version that I actually didn't hate.

The fitbit integration is currently hosed due to the library I used only supporting oauth 1.
Blahg is a quick hack to create a blog-ish mechanism whereby I can create posts in markdown using vi.

]]>
We Can Rebuild Him

Based on the afwul state I left the last version of my personal site in, I decided to resurrect a version that I actually didn't hate.

The fitbit integration is currently hosed due to the library I used only supporting oauth 1.
Blahg is a quick hack to create a blog-ish mechanism whereby I can create posts in markdown using vi.

]]>
http://leejon.es/blahg/blahg/dont-call-it-a-comeback Thu, 16 Aug 2018 00:00:00 -0400
<![CDATA[Exist]]> http://leejon.es/blahg/blahg/exist Transition to Exist.io

I've been using Exist.io for most of the year. For a measure everything type nerd such as myself, its an invaluable tool.
I swapped out the fitbit api for the Exist api which probably took about 30 mins. Would have taken about 10 if it wasn't for a small misunderstanding between GuzzleHttp and myself.

]]>
Transition to Exist.io

I've been using Exist.io for most of the year. For a measure everything type nerd such as myself, its an invaluable tool.
I swapped out the fitbit api for the Exist api which probably took about 30 mins. Would have taken about 10 if it wasn't for a small misunderstanding between GuzzleHttp and myself.

]]>
http://leejon.es/blahg/blahg/exist Sat, 11 Aug 2018 00:00:00 -0400