What is happening? – general update

I thought I would dedicate this post to informing you of what I am doing right now …

Work
I am currently in a contract with a client at the moment with a rolling end date which means the contract extends indefinitly until I am not needed anymore by the client.

The company I am working with is an agency that creates web based software for their clients. I am currently designated to working on 1 of their projects with another developer who is also a contractor.

I remember when I first started there was a lot of “scare” factor about freelance dry periods and how work can be hard to come by. Looking back over the number of years I have been freelancing I can safely say this has never been a problem.

Yes there has been short dry periods between contracts but another contract always comes along in the end. I treat the short dry periods as my holiday time like regular employees would book their holidays off I have my short dry periods.

It must be mentioned though that in the dry periods I also dedicate a couple of hours each day to looking for new work. Generally what happens is after a number of days a pool is formed of potential leads which gets filtered down into potential actual contracts I could take on.

Like I say, getting work has never been much of a problem. Getting high paying / decent work is a little harder but still not much of a problem.

Infact I was thinking the other week that if I had someone looking for work on a full time basis rather than just me doing it a few hours a week in my dry periods. There would actually be enough work generated not only for me but enough work to grow my business.

The reason I have not done this yet is because I would want the person who is finding the work i.e. my potential business partner to be well known by me and most of my well known collegues already have jobs and they would not be willing to take this chance with me.

Secondly although I am a one man business I am actually quite alright just as I am. I can get the work for myself and provide myself with a reasonable income.

To all the new freelancers out there I would say do not be afraid of finding new work but note that the work might not always be with direct clients.

Sometimes to get work you may need to go to other agencies that act as middle men and sometimes you might need to consider taking up “real” contract jobs i.e. short jobs that are advertised on job boards by job agencies related to your area of expertise that pay a high day rate.

Contract jobs can be treated like projects. If a business is willing to pay you a high day rate for a period of time. Take the day rate and times it by the number of days you are contracted for, that is the value of the project.

Neptune – Lead Tracker
So whats the deal with Neptune? A number of months ago I posted some posts about the Neptune project and the progress I was making on it. Then I released a post telling everyone Neptune was released.

Neptune can be found at …

http://www.neptuneleadtracker.com

Neptune was originally released as a paid product due to lack of sign ups and a need for a user base to use the product and provide feedback I decided to get rid of the paid plans and just have a free plan. Anyone can now sign up and use Neptune for free.

In short, Neptune is currently in a holding area at the moment. It is functioning product that allows you and your team (it is multiuser) to keep track of any leads you might have. My intent is to have people sign up to the free plan and use the product.

This initial user base can provide feedback on the product and have some say as to the direction Neptune will take in terms of its next features / functionality.

I could keep adding features and improving Neptune myself to turn it into a fully featured product however my thoughts are if people do not use the basic version why would they use the none basic version.

Potentially I know it is possible people would use the fully featured but not use the basic product however it is a big time investment to build the fully featured and then not have people use it.

So I have decided to stick with the basic product for now and see if people use it. If people start using it then I can dedicate more time to it as needed.

Czech Character Code Converter
I created the Czech Character Code Converter because a client of mine had a Czech language version of its flagship product. I was given blocks of text in Czech that needed to implemented within the system.

The blocks of text needed to have the Czech characters converted to their respective characters codes to be implemented into the system so rather than convert each character manually by hand I built a small script to do it. I then gave the script a user interface and uploaded the script online.

Czech Character Code Converter can be found at …

http://www.czechcharactercodeconverter.com

The script saved me a lot of time. Although the script is small and simple I have no intention of expanding the script any further and it is considered a completed project. If anyone has any ideas on how to improve it I may consider implementing the ideas but other than that no improvements will come of it solely from my perspective.

King of Adem
King of Adem the latest project to hit the project list and born out of my wanting to learn IOS development. This is a huge project and I only have part time hours to dedicate to all my side projects. King of Adem along with learning IOS could take up to a year to build and in truth the King of Adem project was probably too large a project to attempt to learn IOS development.

I want to build King of Adem and I want to learn IOS development. Both of these can be done seperately or they can be done as one project. I could learn IOS development and do a simpler project whilst still building King of Adem in the background. Alternatively I could incorporate my IOS development learning into the King of Adem project because part of the King of Adem project requires an IOS application.

Most likely to happen is the following …

I will learn IOS development as my primary goal and develop King of Adem as my secondary goal. I will learn IOS development by following the video tutorial course I have downloaded and taking on a simpler IOS project to enhance my development. The King of Adem will take a secondary position to the IOS development learning until the IOS development learning is complete then King of Adem will take the primary position.

Essentially both projects will still be happening at the same time but the IOS development will have more time dedicated to it at the start until complete then the King of Adem will get the most time dedicated to it until complete. As a rule it I will split it 75% / 25% in other words 75% will be spent on the IOS development learning project and 25% on the King of Adem project. After the IOS learning project is complete King of Adem can have 100%.

That sums up what is happening in my business right now. I hope this article ties up any loose ends anyone might have about the projects I am working on. It has certainly helped me clarify where I am with each project and what I intend to do with each project.

King of Adem – progress update – building queue

Progress has been made on the King of Adem project. For those of you not familiar with this project please read the original King of Adem post at …

http://www.jamesbarnsley.com/site/2017/08/13/king-of-adem/

Since the update I have been primarily working on the building queue. The building queue is the queue which buildings get inserted into when a player wishes to construct a building in one of his / her regions.

To get to the construct building screen the user has to be in one of his / her regions so those areas to get to that screen had to be part built.

The areas part built are namely user, game, region and building. Once on the construct building screen the user can select from a list of buildings that can be constructed.

Each building is validated on a case by case basis and if it does not pass the validations the building cannot be constructed, here are some of the validations so far …

Check fund available
The player must have the correct amount of fund available to construct the building. The amount of funds available is the players start of turn funds subtracting any funds that have been used in the current turn.

For example player may have started with 1000 coins, if a player constructs a building for 300 coins then the program gets the players start of turn funds but substracts 300 coins because it knows a building worth 300 coins was requested to be constructed this current turn.

Check building queue full
The building queue may only allow so many buildings to be in the queue at any one time for each region. Currently this number is set at 5 and the number is stored in a config file.

Check building already built
Check if the building has already been constructed in the region. Each building has a “constructionLimitPerRegion” variable which stores the number of times that particular building may be constructed in each region.

Check dependent buildings constructed
Each building can have what are called dependent buildings. These are buildings which need to be constructed first before you can build the current building.

Also the validation knows whether a building is an upgrade of an existing building or a completely different building that just happens to depend on another building being constructed.

All kinds of checking had to be implemented for this validation, whether building is an upgrade / dependant or just dependant, whether advanced tier buildings already exist for lower dependant buildings, whether lower dependant buildings already exist etc.

Check advanced tier building exists
Check if an advanced tier building already exists for the current building wanting to be constructed. If the advanced tier building already exists then there is no reason to build the current building.

Again this needs to take into account that some buildings can be constructed more than once so in some instances it may need to allow the building to be constructed even though the lower building has already been constructed.

The above validations are run everytime a user issues the command to insert a building into the building queue for a particular region. These validations are run from the “Building” Model. Each building is also given its own Model, the hierachy is like as follows …

\yii\db\ActiveRecord -> \app\components\ActiveRecord -> \app\models\Building -> \app\models\BuildingTownBarracks

Or …

\yii\db\ActiveRecord -> \app\components\ActiveRecord -> \app\models\Building -> \app\models\BuildingPort

etc.

I can run special validations for specific buildings by placing those validations in the specific building class. Those validations will only run for the specific building and not all buildings.

That is as far as I have got so far. Still a long, long way to go, more updates to come soon.

King of Adem

The latest personal project I am working on which also happens to be the largest personal project I have worked on so far.

King of Adem is a game for tabletop minature wargamers. Players manage their kingdom through the app. Kingdoms consist of a number of a territories, each player starts with one.

In each territory there is a capital city in which buildings can be constructed. Buildings provide benefits like more money or the ability to recruit armies.

When 2 armies collide by moving into each other the players can then resolve the battle as normal by playing their normal game of tabletop minatures.

The game takes place on an island called Adem. Adem is a recently discovered island where each player is fighting for control. You fight to become the “King of Adem” by conquering the whole island.

Although Adem is stated as “recently” discovered, this only means “recently” in the grand scheme of things. Adem actually has a number of Kings / Factions already on the island and each Kingdom has some infrastructure.

The project is currently divided into 3 parts …

King of Adem Diagram

Part 1 – Game Server
The Game Server is currently in construction and is being developed using the Yii 2 framework written in PHP. The database is MySQL. The server takes view requests and command requests from the client application.

View requests provide data to the client in JSON format. This data has everything needed to render views for the game for example, building, army, territory data.

Command requests provide data to the server about interactions happening in the client application. For example move commands, construct building commands etc.

The decision to use View / Command requests was chosen instead of opening the server up entirely.

Essentially one option could have been for each Data model on the server to have a view, insert, update, delete request to use for either commands, views or both.

This would give the client more freedom at the cost of putting more logic onto the client.

As the first client is being developed using IOS and IOS uses a view per screen type of structure then View requests make sense. Giving the client the exact data the client needs in order to render the view.

Part 2 – Game Test Client
The Game Test Client is currently being developed alongside the Game Server and serves as a testing ground for the development of the server.

The Game Test Client can send View requests to the server and read / present the data from the server in a user friendly way. The Game Test Client can send command requests to the server.

The Game Test Client is being developed using the Yii 2 framework written in PHP. The Game Test Client is my own personal client for testing the server and is not the actual client the end user / player will be using.

Part 3 – IOS Game Client
The IOS Game Client is the actual client the end user / player will be using to play King of Adem. The IOS Game Client as you might have guessed will be an IPhone application. There may also be the ability to run the application on the IPad as well.

I decided to develop the IOS Game Client because I wanted the game to be portable and it cannot get much more portable than having the game on your phone.

I also choose the game to be an IOS application because I want to improve my IOS skills and offer IOS development as part of the everyday services I offer to my clients.

Once these 3 parts are complete the game will be playable and released to the public. Part 1 and 2 are already in construction, Part 3 will be constructed after parts 1 and 2 and completed.

After the game has been released to the public, a number of other client applications could potentially be developed including an Android version and a full game client developed in Unity3D or similar.

The IOS client will be more management like as opposed to a graphical game. The IOS application could include graphics etc, but it will not be at the level of a full game like experience. This is why I suggest a later developed Unity3D or similar game engine development.

I will be keeping everyone informed of the development of this game through the blog so keep checking back for further updates.