I got 5 on it

I got 5 on it.
Do we still talk about weed?

I got 5 on it.
Doesn’t look this way to me.

I got 5 on it.
I think we are way past that.

I got 5 on it.
Those niggers are all high on crack.

Posted in Politics

The Grandfather Paradox with a Markov Chain

The YouTube video “Solution to the Grandfather Paradox” does a great job discussing the Grandfather Paradox.

Interestingly, at a point, the narrator states: “And a similar paradox-free solution can be obtained by viewing the problem as a steady-state solution to a Markov chain. But I won’t go to that here.” while displaying the following video frame:


In this blog post, I am going to explain the above statement and video frame. Actually, you can understand everything by reading about State Diagrams and Markov Chains, or by reading my analysis below.

What the video frame depicts is:
On the left: a state diagram with 4 states (a.k.a. a Markov chain with 4 states), using a directed graph to picture the state transitions and their corresponding probabilities.
On the right: The transition matrix P that corresponds to the state diagram.


We have 4 states: A, B, C, and D. I named the states so that the name (letter) order will produce the matrix on the left exactly as depicted.

State A: Grandfather is alive.
State B: Grandfather is dead.
Stare C: You are not born.
State D: You are born.

The transition probabilities from each state to the others are shown with arrows and numbers. Let p denote probability and p(X->Y) denote the probability to transition from State X to State Y. Then the transition probabilities are as follows:

From state A, you can only go to State D.
(If your grandfather is alive, then you are born.)
Thus, p(A->A)=0, p(A->B)=0, p(A->C)=0, p(A->D)=1.

From State B, you can only go to State C.
(If your grandfather is dead, then you are not born.)
Thus, p(B->A)=0, p(B->B)=0, p(B->C)=1, p(B->D)=0.

From State C, you can only go to State A.
(If you are not born, then your grandfather is alive.)
Thus, p(C->A)=1, p(C->B)=0, p(C->C)=0, p(C->D)=0.

From State D, you can only go to State B.
(If you are born, then your grandfather is dead.)
Thus, p(D->A)=0, P(D->B)=1, p(D->C)=0, p(D->D)=0.

Matrix P has the following layout:
Each row corresponds to the initial state in a transition.
Each column corresponds to the final state in a transition.

Thus matrix P is comprised of 4×4=16 cells, each denoting a transition probability:


The above table (matrix) has to fulfill the following statement: For each row (independently of the others) the sum of the probabilities of all the cells of the row equals 1 (where 1 is 100%). This is easy to understand: From each State, you have certain probabilities to transition to other states, or to remain at the current State. All these probabilities should add up to 1 (where 1 is 100%).

Matrix P is equal to:

p(A->A)    p(A->B)    p(A->C)   p(A->D)
p(B->A)    p(B->B)    p(B->C)   p(B->D)
p(C->A)    p(C->B)    p(C->C)   p(C->D)
p(D->A)    p(D->B)   p(D->C)   p(D->D)

Thus, matrix P is equal to:

0  0  0  1
0  0  1  0
1  0  0  0
0  1  0  0

What all this means is that the transitions are as follows:

A->D->B->C->A and so on.

Which is equivalent to saying:

If your grandfather is alive, then you are born.
If you are born, then your grandfather is dead.
If your grandfather is dead, then you are not born.
If you are not born, then your grandfather is alive.
And so on.

Posted in Science

Intelligence by any other name

We created muscle, with engines. And we created brains, with electronics. But the brains we created only offered guidance to the engines. They lacked the ability to understand. And they also lacked creativity.

Artificial intelligence? Wrong term! Superficial intelligence, that’s what I call it! Neural net? Neuronic net? Moronic net, as far as I am concerned!

Albeit the brilliance of the back propagation algorithm, neural nets just perform elaborate curve fitting. They do not learn. They adapt. They conform. Like old-school-teachers, we think learning and conforming are the same thing. They are not. Learning is believing. Adapting and conforming, well, that’s what machines do.

We say we create intelligence, but instead we create Turing machines. Turing was able to discover and denote what can be computed, not what can be created.

Let me tell you, Dorothea: You are a long way from creating any intelligence, artificial or otherwise.

Posted in Management

Why most IT projects fail

A project might fail for lots of reasons. The same reasons apply to IT projects. But there are also extra reasons as to why an IT project might fail.

To undertake an IT project, you need two things: infrastructure and experience.

Some IT project managers do not know and cannot begin to imagine the extent of the infrastructure (people and technology) they are going to need in order to do a particular IT project.

Thankfully, nowadays, cloud makes this part easier.

As I mentioned, there is also the component of experience. Some IT project managers and their teams do not have the necessary experience. The tragic thing is that, frequently, they do not realize this fact.

Indeed, they undertake a new project and chances are they have never done anything like this before. Because, if they had, they wouldn’t need to undertake it. They would already have it completed and waiting to be sold.

The problem with the lack of experience is that the IT team ends up doing research and development instead of being productive.

And the problem with research and development is that there is no way of knowing one of the most important attributes (project management wise) for each task: the time it needs to be done.

And with no knowledge of the time each task needs to be completed, project management tends to be a moot point, at least with the project management techniques humanity has devised so far.

The issue of the lack of knowledge concerning the time each task needs is also addressed in my book titled “An Original Look at Ordinary Life”.

Posted in Management

Classifying books according to the number of characters they portray

I recently viewed a great infographic: “15 books with more characters than you can keep track of” that was about books that portray a lot of characters (in relation to the number of pages each book has).

This made me think that we can classify books according to the number of characters they portray (always in relation to how long each book is). The same goes for movies and TV series.

Well, the number of characters is indeed an important attribute of a book/movie/TV series, just as its length, its genre, etc.

There are stories that intertwine their characters in a clever way and so can create a “rich” plot. There are other stories that keep introducing more characters haphazardly, in order to just reach the necessary length, without advancing the plot.

So, having a lot of characters does not mean that a story will be a good one. You can have a good story with a few characters or with a lot of characters. And you can have a bad story with a few characters or with a lot of characters.

The point of my blog post is now going to be revealed. I am here to state that it generally shows more skill if you can create a good story with a few characters (as opposed to a lot of characters).

To create a good story using fewer characters generally requires more skill from the author.

If the author uses a lot of characters, then it is easier to create a rich plot and intertwined relations. It is more difficult to do that with fewer characters.

So, between two stories that more or less share the same other attributes, I would consider that the story with the fewer characters to be better.

A story with fewer characters does not overwhelm the reader’s mind with people details. Instead it lets the reader focus more on the plot and on the meaning of the story.

Posted in Management

How I learn PowerShell and how I use it

Practice makes perfect. So, when I perform an action in Windows, I try to learn how to do the same action using PowerShell.

This is helpful for two reasons. The first reason is that, by using PowerShell, I can automate the action. The second reason is that there are times when only PowerShell is available. For example, Server Core and Nano Sever have no GUI.

Now, when I write “action”, I mean just about anything, like, for example, getting information from the system or setting system settings.

PowerShell can inform us about and perform changes to the file system, the registry, the CIM/WMI repository, the network, the Internet, the installed (server and client) applications, the services, processes and threads, the various logs, and all sorts of system-specific and application-specific settings.

I get ideas from any action I perform and any program I execute.

For example, I use Process Explorer a lot. Whatever actions I can use Process Explorer for, I also try to perform using PowerShell. This way, I may be able to administer a system even when I do not have a GUI or my favorite GUI administrative tools.

Process Explorer lists the running processes. I can do that with PowerShell as follows:



Get-WMIObject win32_process | select name, handle
# (here "handle" is the process handle)

Process Explorer lists the threads each process spawns. I can do that with PowerShell as follows:

Get-WMIObject win32_thread | select processhandle, handle
# (here "handle" is the thread handle.)

Process Explorer lists the modules that have been loaded by a process. I can do that with PowerShell as follows:

Get-WMIObject CIM_ProcessExecutable | select Dependent, Antecedent

For a specific process, we can also use:

Get-Process -name <process name> -module


Get-Process -id <process id> -module
# (here "process id" is the process handle)

It is not that I can or want to compete with Process Explorer, it is just that Process Explorer gives me a lot of ideas when it comes to administration.

For any actions that you perform using a GUI, you must ask yourself whether you can perform the same actions without a GUI. If you can, then you are able to automate your work (and to keep track of your work) and you are able to administer your systems using PowerShell should the need arise.

Posted in Administration

Visualize numeric data from your Windows OS

When I published my blog post titled “Visualize the Services Graph of your Windows OS“, I wanted to create another blog post, supplementary to it. The purpose of the “Visualize the Services Graph of your Windows OS” blog post was to show that you can (and should) visualize data from your Windows OS. The data depicted in that blog post were not numeric in nature. So, imagine how becoming it is for me to create another blog post that advocates the visualization of any numerical data from your Windows OS. If you can visualize non numerical data, then imagine how becoming it is to visualize numerical data. Only some relevant programs allow you to visualize non numerical data, but all relevant programs and techniques allow you to visualize numerical data.

This blog post will gently push you into this direction.

There are some situations where you can obtain and visualize non numeric data from your Windows OS:

  • You can visualize the hierarchical structure of the services, the file system, or the registry.
  • You can visualize the timeline of events, errors, and so on.  For example, you can create a timeline that displays when each application was installed.
  • You can create your own infographics from data from your Windows OS.
  • And so on.

If there exist some situations that pertain to the visualization of non numeric data, there are a lot of situations where you can obtain and visualize numeric data from your Windows OS:

  • You can count the number of messages of each different type in an error log.
  • You can get numeric data from performance counters.
  • You can get numbers of files and file sizes from the file system.
  • You can get similar statistics (like counts of  keys and values) from the registry.
  • You can get numeric data (like memory size or CPU percent usage) from the process (and their corresponding threads) that run in your Windows OS.
  • And so on.

OK. Let us analyze the situation where you obtain and visualize numerical data from your Windows OS running processes. You can use PowerShell to obtain the data. The following script provides two columns of comma (semicolon actually 🙂 ) separated values. The first column lists the name of the process (along with a dash and then the process id, in order to better tell the processes apart). The second column lists the virtual memory (in MB) that the process occupies.

$output = "ProcessName" + ";" + "VirtualMemory(MB)"

$processes = Get-Process

foreach ($process in $processes)
$output = $process.ProcessName + "-" + $process.Id + ";" + ([int]($process.VM/1MB)).ToString()

By redirecting the output of this script to a file, we obtain a csv file that lists the processes and their corresponding virtual memory.  Here is a sample output from a Windows 7 Ultimate (with Service Pack 1) 32-bit OS:


Here are these data depicted using a 2-D column chart in Excel 2007:

Microsoft Excel - output

I also used the free Tableau Desktop Public Edition to create two more visualizations of the same data.  The first is a treemap visualization:

Tableau Public - Treemap

The second is a packed bubbles visualization:

Tableau Public - PackedBubbles

I hope I have whetted your appetite for visualization. The point I am trying to make is that by visualizing the data from your OS, you can gain better insight into its workings.

Posted in Administration