Personal Opinion about Getting GIT video series by JMac (Updated)

Getting Git: A comprehensive video series from git init to GitMaster


I've never been a good Versioning System user. That's a fact!

I barely used it when it was SVN and now with GIT and the whole distributed part of it... Well I'm kinda lost.

Enter Getting Git: "A comprehensive video series from git init to Git Master".

When this endeavour, by Jason "JMac" McCreary @gonedark, hit my attention, I immediately followed that link and had a look at it:

JMac was going to release a series of videos about how to get along with the whole GIT thing. He already had the first 2 sections of it released and was in the middle of doing the following one. He was asking $29 USD for it.

My immediate reaction was: YES and yes...

The first yes was for the fact that someone was taking the initiative to do one of these. The second yes was in total agreement with such a low price.


First of all I have to apologise to JMac. He sent me a mail asking for some feedback and I didn't reply right away. Being a person that suffers from clinical depression, you know for a fact that you have to be at your fullest when you want to learn something. So this is some sorts of an apology and the mentioned reply.

When I finally was in a state I could fully absorb and retain the content of the video series, I devoured them with much eagerness.

JMac's voice is soothing and there are no hummms and ahhss! He delivers a continuous narrative that is pleasant, as much as it's informative.

My first gripe was due to the fact that the videos were a bit too small and there were so many. But then I realised that this, is not only something that you want to watch once, but, is a resource that you want to come back as many times as needed to fully master GIT.

I watched them in the sequence JMac put them.

Since he has, both, an init and a master version for each command, you can choose to first watch all the init ones and then the master ones. Or like me, watch everything in the init, immediately followed by the master. Or, like JMac puts it: Choose your own adventure.

Mobile devices

While watching the video series, there was a question floating in my mind: Why can't I download the videos so I can watch them offline or on my Nexus 5 tablet?

I, then, went on my tablet and had a go at the site. I was pleasantly surprised that the website did perform quite well and had a very good appearance and good user experience on my Nexus 5 tablet.

My only gripe is with the video viewer from vimeo. My big fat fingers were a bit of a nuisance to get the video to go full screen. But no blame on JMac, here.

I still want to know if JMac is going to release the videos in a downloadable format. Guess I'll have to email him with this question...

Command line prompt envy

While you're watching the videos you can't refrain to get a bit envious of JMac's command line prompt, that displays the current info about the repository you're in.

In light of that, I went and Googled for something I could use on my Ubuntu x64 16.10.

I've found many, but I'm going to list two:
  1. This one is quite simple and light weight: https://github.com/jimeh/git-aware-prompt.
  2. This one is a bit more elaborate and has many prompt bling: https://github.com/magicmonty/bash-git-prompt.
Both play well with my Ubuntu installation and the second one even has themes specifically tailored for Ubuntu.


I would, and most definitely will, recommend this video series to any newcomer to the GIT and GitHub ecosystem!

At the moment of this being posted (Mon, 20 Feb 2017), JMac still has a 4th section entitled Everyday Git to be posted. He mentions it quite a lot in the series. From my gathering, this will contain tips and tricks, command line prompt pimping and other goodies.

I will revisit this topic in the immediate future and report more on the subject.

So expect some updates to this post.

Update: 2017/02/20 20:50

JMac as confirmed that the next video on the Everyday Git will be dedicated to improving your Git prompt.


Of numerology, patterns, sequences and life.

Numerology had it right, life's all about numbers. What it got wrong is that one to two digit numbers have no meaning. It's all about big data. And you have to crack the patterns or numbers. 
Human brains can grasp/memorize up to 7 numbers. More with some practice, but that's it, it's memory, not associations. For associations, patterns and "big picture" you need more brain power. Easy for autism, real hard for Joe Shmoe, you and me.

People see numerology and patterns as something that will predict a fixed end. Fate, some would call it. The power is not in the fixed numbers, the power is in the equation you can extrapolate from those patterns. An equation has variables, and when you input those variables you get an output dependent on those variables. This means that change is in the system already. You can influence these variables and get different outcomes. Nothing is written in the stars, nothing is written in stone. That's just wishful thinking. If you want, the equations are the written words, etc... But the outcomes are for us to influence, knowingly or unknowingly.

The pursuit of one single something: formula, number, you name it; has been more than proved to be a futile attempt at grasping the whole, with our puny little mind. There is no sequence, equation or whatever you want to call it, that can single handedly govern all things, and, influence, or predetermine intelligent life or it's behaviour.

Be it in whatever level we humans consider intelligent. We, humans, are very intelligent, but that is only one mark on the scale of the entirety of intelligence. There is intelligence below us and above us. And I would even doubt that the scale is bi-dimensional, because sideways is not out of the question. And are we not so blinded by the fact that we perceive our intelligence is above all other living things in this Earth, that we forget to readjust the scale or even try and find other ways of measurement.

On measurement: Do we even agree on how to measure intelligence? I.Q. tests have been the norm, but they are flaky if used across different cultural sections, geographical sections, or even at different decades in time. E.Q. has been the new kid on the block, but I haven't heard much about it, recently. So how are we on measuring intelligence? Beats me, cuz not even the scientists have a firm grasp of it.

We are finally coming out of the dark ages on what we perceive is the human mind. We still have a long way to crawl until the Industrial Revolution, because, that's when Human Kind finally got up to speed on technology. Now... since Moore's Law says technology will double every 6 months, or so, will technology finally be the tidal wave that brings it to the beach? Hope so, because it's all in the big data.

Big data!... the catch phrase of today's tech society. But we've had the savants, the human number crunchers laying around for a while. Shamefully for us, we wanted to study what made them different so we could bring them to "normality", whatever that really means?!?!? We have never tried to understand how they see our boring world through their eyes. Now THAT would be science! Not bringing them into our "normal world"!! That's just our stupid human pride dictating an expected outcome. The relative comfort in what we know.

We fear change. Change is something that's been, firmly, connected to danger and is very embedded into our minds, or even DNA (The experts are still deciding on this one). The only change that's been welcome to us all, is the change that comes with the acquisition of power. We've had one single line on that pursuit, the visible one, and that is money. The more, the better, because there's always power associated with mucho dinero!!

But the one that has always been in the background, is now coming to the light. And that one is the pursuit of information. Some may put the word "knowledge" where I've used "information". I consider them to be opposite ideals, not words... but ideals.

"Knowledge" is for the good of the many, and "information" is for the good of one, or the few. In "information" you can find power. Wayyyyyy more power than in money alone. With "information" you get power, money, more power, more information, more money... well, you can spot the pattern here.

With "knowledge" you have to choose what to do next: choose wisely, and it's for the good of many; choose poorly and you're stuck in the vicious cycle of "information" all over again. That's why "knowledge" has to be protected. But to protect it, you cannot hide it. That gets us back to "information". You have to hide it in plain sight. Put it where everyone, and anyone, can reach it, use it, mould it and mainly, ADD to it.

And that, my friend, is how the world turns. It's all about the choices. Those are the different values you put on those little boxes we call variables. Those boxes are fitted on the equations. Those equations spit out the entirety of the entirety.


Liquids and Mists in Modern Building

The Show

I've been, recently, watching a TV series produced by the History Channel called Ancient Aliens.

In it, through 5 seasons and still ongoing, they try to give you enough insight into a, somewhat, trending new way of interpreting some of the most puzzling clues that mainstream archaeology is still battling with.

Mind you, I'm still in the early episodes of season one, so I'm not doing any profound analysis on the whole series.


What I want to talk about now, is one small thing they mentioned in episode 1: "To make such precise cuts or joints, one would have to need to liquefy stone and probably use some kind of mould."

That is one of the various answers they spun out. But, somehow, it made me begin to think: How do we do it now?

Amazingly, while I was listing most of the tools that I've used, or dream to use in the future, I realized that there was an underlying pattern. Most of everything we use in our modern society, has been through, either a state of liquid/gel form or has been coated or made of stratifying mists.

Ok, let's do a list of our most basic raw materials and the, summarized, way of making it:

Pottery: (wikipedia) (How it's made?)
To make pottery you use clay. To make clay you add a fine powder to water until you have a consistency of modelling clay.
Metallurgy: (wikipedia) (How it's made?)
Using intense heat you get the metal into a liquid form and then, shape it into basic forms that other manufacturers can transform into usable items.
Plastics (wikipedia) (How it's made?)
Heating the crude oil at a certain temperature and pressure, various elements form with different densities. These deposit into a stratified manner. You then extract plastics from the correct position/height inside the heated container. To then use this raw material, you re-heat it until it's soft enough to force it into moulds.
Concrete (wikipedia) (How it's made?)
And finally, we have our own little concoction that passes for liquid rock: concrete. To make concrete you add water to cement, pour it into a mould and then let it dry/cure.

As you can see, all of those raw materials pass through a liquid form at one stage or another.

In our "modern society", most of our manufacturing skills have been perfected to deal with raw material that can be transformed into an easy way of moulding it:

  • To make all kind of shapes/tools/etc with metal, you pour it into a mould or, like they say: "beat it while it's hot".
  • The plastic industry is the utmost specialist in terms of moulding.
  • Ceramic has been around for a long time, but the old and tested ways of manufacturing with clay have not changed that much from the way of our forefathers. The only thing that has changed is the machinery/tools that we employ.

Then there's mist.

We compel some elements/composites into a mist form and then:

  • Spray the paint.
  • Deposit fine layers of different elements to form silicon chips.
  • Create a static charge on something then let the mist coat it for protection.

In the end, after curing, drying or whatever other method you obtain the item one is aiming for. And these are the methods that have been perfected to make manufacturing easy, repeatable and, therefore cheap!

My point

If we as a "modern society" have evolved and perfected our manufacturing and tool making to include a liquid and/or mist form, to ease the process of industrializing our needs, why is it so outlandish that a more advanced civilization choose to avoid it?

It also makes no sense at all that this is not the case surrounding most of our history's most puzzling monuments:

So here you are, there isn't really a conclusion on my line of thought. I still need to investigate a tad more on these subjects. But when I see patterns emerging, things begin to make sense...

Even if I still don't quite buy the whole Ancient Aliens approach.

Until then...

I just want to leave this lying around, since I'm going to finish the whole of the 5 season content. While I'm watching, I will definitely stumble across more mind bending enigmas, and some day-to-day similarities with our society. So, when I have some time, I'll be posting some more about this.


Game Programming, The Journey: Part 2

The mighty Game Loop

Previous in the series:

Any game should have one, or at least say the experts on the matter. They also say that it's the place to start. But it's really not as simple as that.

A simple implementation of this loop would be as follows:

variable game_is_active of type boolean = True

while game_is_active do
    execute run_game
    execute refresh_display


The run_game function is where the logic of the game is processed and the refresh_display function is where the graphical display is updated with the data from the game objects. This is the most broad representation of a game. and the catch is how you will implement each function.

 But before anything

One always do a practice run on something else before a big project. So I think I'm going to have a go at a Sudoku clone before tackling the bit RTS project.

Complicating things

"This article by Koonsolo: Game Loop; give much more insight on the matter. He talks about the trade-ins of constant frame rate versus variable one. Also talks about the same issues related to the time allotted to game logic. Concluding with some advice on what to use for different game types."

The first computers were not able to do multitasking like now. This meant the Game Programmer had to devise a way to do many things (Logic, AI, Graphics, Sound), the quickest and still make the user feel enticed in the game-play.

On most of the games you have to consider the proper balance between Game Ticks and FPS. Hardware and Architectural limitations makes it impossible to have the same resource being used at all times by these two aspects of the game. If you devote to many CPU cycles to the processing of the game logic, you will have to compromise on the graphical display of said logic. And vice-verse, obviously.

With the advent of multiple cores to aid in computation, you now can add another degree of difficulty to this, already jam packed, equation: Threads!

With threads you are able to partition some of your number crunching in different loops. Those loops will talk, or synchronize, with each other via messages, locks or even semaphores. While giving a better way to compartmentalize your game it has the downside of complicating things in terms of bug hunting.

Another type of game architecture that has arisen with multiplayer is the server/client approach. The user communicates with a server, where other users are also connected and they all play together.

On online games, this also can mean that your game continues to progress, even if you are not logged in.

What is my present path?

Keeping in mind that I'm mostly interested in an RTS/Simulation game, I've decided that I've got enough experience to tackle Threads head on. This may prove to be a foolish decision, but as I'm just in the beginning, it feels like the proper path to take.

I'm inclined to have a sever/client architecture. The server will have all of the Logic and AI, while the client will display the game and convey the user commands to the server.

I will start my prototyping with the server side on a GUI application that will only display bare stats and unit info. Once I'm pleased with it, I'll pack it on a proper server "enclosure".

I'll detail my mental (as inside my head and not I am mental) model in the next iteration of these series.



Game Programming, The Journey: Part 1

Previous in the series: A new long term challenge: Game Programming

When ever I've started a new endeavour I always do some heavy research.

If only for future reference, I'll leave some links to Wikis, Tutorials and other important stuff regarding game programming.

For beginners and up:

Since I'm mostly interested in RTS/Simulation type of games, here are some more specific to the subject:

More specifically for Real Time Strategy:

(I will be updating both these lists as I progress on my reading.)

Feelings after some reading

Coming from a database centric type of programming, once you begin to look at the vast field that is "Game Programming", you can feel pretty overwhelmed!

The subjects are from all the ranges of the Computer Science subjects and you even add some nice two/three dimensional math!

My past track on research for a new thing to do, has to be put aside and rethought. "One cannot simply enter the realm of Game Programming!", as someone would say. It's something that you have to take in with the understanding that it's going to require more than a few week-ends of reading and prototyping to get any good at.

So, in my case, this is going to be a slow rise of knowledge with loads of reading involved. Coding will have to be postponed to a time when I'll feel comfortable enough with the terminology, concepts and lingo, to finally begin to drop some code.



A new long term challenge: Game Programmer

I've been pondering on the possibility of doing a game for quite a while. Nothing solid or earth moving came out of it, but it's been on the back burner for a while.

I've been playing 2 games lately:

The Settlers Online
The Settlers Online
Forge of Empires
Forge of Empires

Both are of the type RTS (Real Time Strategy) games. The type of game that really interests me. And this is the path I'm going to take on my journey towards a fully playable game.

I've started to do some work on a concept I read about somewhere (I'll update this with a link when I find the article). This concept was about having a system that you could just throw hardware at it to scale, with out the shortcomings of current solutions.

I called it Kullonia.

I really didn't code much of it and I'm quite ashamed of it, since I've let a very dear friend down in the process. I hyped him up with a really good sales pitch and then just didn't deliver. Until this day I'm still pretty ashamed of my actions and don't even try and re-establish contact. Deep inside I know he hates me :(

Probably it was this guilt that made me pursue my current objective. The concept is really great to implement the engine behind the games shown above. And the fact that it's coded in Free Pascal makes it a double whammy of awesome: It's compiled and can be made to suit multiple platforms.

So for the next few postings I'll be ranting about the journey of starting a "One Man Team" Game Programming.

See you in the near future.



CEO Companion Application

So I've been playing this little game: The Settlers Online - Castle Empire

It's a game of patience and it won't appeal to all the strategy genre lovers, but it's a dream come through to me. I've been hooked on the "The Settlers" saga for quite a long time, ever since I've had a go at the very first one, in the 90's. So when I stumbled upon this on the Chrome App Shop, I couldn't resist!!

But just playing the game wasn't enough. I had to give something back, to both the people that made the game and the ones that have the same love for it as me. So I decided to create a companion application with some content and the ever useful calculators for the various in-game strategies.

So "CEO Companion" was born!

The application is open source and is still in the early development stage.

You can find,
  • the project page: here.
  • the download page: here.
  • the bug report page: here.

Give it a go and tell me what you think on the comments below.



'Twas my birthday yesterday...

So, it was my birthday yesterday... No biggy... Well, apart from the Smashingly Delish cake my wife made:

Delish cake by my baking wonder of a wife!!

Well, got that out of my chest :)


Science versus Religion

Science and Religion have come a long way since the dark ages and Alchemy.

But to both I present some challenges in order to get it straight:

To Religion:
- Without invoking faith or belief, try to come up with a proof of God.

To Science:
- What causes gravity; What causes magnetism; What causes energy transfer.

While both of these very important fields of knowledge get those challenges right, we all ask of you to do it in a humble way, just like we all live all lives and don't pester one another with provocative attitudes.

I, myself, am in favor of science. But the amassed knowledge of science is still in its early infancy, so a humbling call is really needed for the science persons who think otherwise.

I was brought up in a religious manner but then got through all the dogmatic smoke screen and saw nothing in terms of content. I still think that religion has a place in the world, but in terms of teaching the common ways of being a good person, not the all encompassing and universal glue to all that exists.

So to both I say again, get your challenges sorted out and while you're at it, be humble and don't try and find high horses to climb on. We mere mortals live life like that but we still attain grandeur.


Moving repos and a new project

As anyone that knows me will tell you, I don't quite finish my projects.

Binky Boink

Never the less, I've started a new one: Binky Boink. It's, yet another BOINC visualizer, the difference being that this one is open-source and comes with a nice ObjectPascal lib you can use on other projects. As usual any help is really welcome to get this project to fruition.

New repositories for old projects

The other piece of information I wish to convey is that I've decided to re-host the following projects under the Google Code umbrella: