Blog: My thoughts Management

Interviewing during Covid – No face impression

In past we hear about “first impression is last impression”, this expression is used mainly for the first meeting of person. In deed in those days there were no phones or internet to associate it with other mean of meeting then meeting face to face. Things change, saying remain same and still give same results.

Job interviews are no much difference, I remember when I go for my first interview 15yrs ago, I use to wear tie, and formal dress. We programmer were very much concern on dressing during those days, after all “first impression is last impression”. But now, people don’t care for formal dressing. I even take interview where sometime candidate seems just walk past for grocery and not for interview.

But now due to covid-19, we cannot do face to face interview, And I don’t have much time to schedule and reschedule meeting with candidate, and even though we can do that, I still need to do first screening of candidate. And here comes the twist in tale. When I start to screen candidate on phone, my first thought was that I was not able to view their expression, manners and not sure if I can hire a good candidate or not. But, it turns out it is more easier to reject a candidate on phone.

Usually my interview call goes for 30 minutes, in those 30 minutes, we just talk, and this 30 minutes talk give me impression of candidate behaviour. Their manner of speaking make a lot of difference. When I detach the face expression, I don’t get attach to candidate. I don’t see different side of their behaviour, and I can become more judgmental as HR person during that time.

The things that become clearer are that “when you speak you give away your quality”, and “looks can be faked”. I am not saying that it improve my hire rate to perfection. But it certainly help me find better person, I found good developer before, but I always struggle with behaviour of candidate and their ethics. Also, during face interview, I always find that people fake their word, and say things like they learn from best. And that make phone conversation point less, as their behaviour is not there. But it has different impact on candidate too. Now that they are not faking behaviour they forgot to fake their words too. They don’t use same old excuse that I hear in 80% of candidate word anymore. They are more to topic and within themselves.

However, I think in future my approach is to call them, and then call for face to face interview. As I have new insight on how people can fake and how we can avoid those issues.

In end, I still don’t understand why people, human, need to fake. Why we don’t confidence in what we do. And if we know it is not right, then why don’t we change that behaviour to become right. This is what cause human to fail, and the right approach cannot be taught, it has to be realised, every time, by every human always.

Article Hardware Operating System

Upgrading your system Disk

I am using windows from my first computer in 1997. Since then, whenever a problem arise in system, our hardware expert suggest one thing. Format the system and start fresh. I kinda like the idea at that time, as it give me more time to play with core system things. I remember formatting windows 95/98 PC was complicated, as you have to create some text files, boot with floppy disk and then run from CD.

Time passes, and process become simpler, and I grow in programmer. Now, my machine handle, Visual Studio, Andriod Studio, Nodejs, SQL server, MySQL, apache and IIS, and lot of utilities. Previously I used to keep CD of my software. But every week we have few updates on either of those software and burning CD is not possible. Now, formatting means wasting my 2-3 days to just install everything. Formatting itself take 45 minutes max on my machine, but pre-formatting backup, and restoration after formatting is no fun.

But my primary disk is full and only 5 GB space is left on my C:\, It is only NVMe disk in system and I have to upgrade it to large capacity disk. I don’t want to format PC. So, I find this fine software recommendation from a google search, Macrium Reflect (from ). I download their free version, and install on my Home PC. Install it on very drive that needs upgraded, yes my C:\. Install my new Disk on other slot. Now, I run software, and clone my disk to new Disk. Since they are NVMe disk they copy fast, it took about 20 minutes to clone 225 GB of disk to new 500 GB disk.

After 20 minutes, I realise that cloning use only old size from new disk and rest of space is empty, unused still. So everything is waste for me. But then Windows’ Disk management comes handy and allow Extending my new soon going to be C: drive to use remaining space from disk. [Right click on partition and click extend]. It use all left over space.

After swapping old disk with new one. [I tool old out of system to test if cloning was good or not], It works with extended disk. then I put my old disk and format it to use as secondary disk.

It took me 1 hr to do all these stuff, and certainly save my 2-3 days of effort, and save my weekend.

Server Configuration

Rclone: Google Drive configuration

One of my client ask to configure server backup on his google drive account. The setup documentation for rclone is very good in this regard. However, there is one little problem, that Google drive ask for Web browser based consent and since I am doing remote server work with CLI, there is no way I can run the web url from server directly. Now, there maybe different ways available like I can try to run user from public IP of server, but then I have to open port on server etc. For just one URL or install a text browser which doesn’t very well for google URL.

So, I use ngork, I just download it’s Linux addition bind it to Port that rclone suggest. And now I can use their temporary URL to run the port outside on my desktop machine. It took 2-3 minute to get it up and running and then removal from server [for security reasons].

Just making this note for future reference. Then to access any URL we can use ngork subdomain capabilities to proxy and use it outside server.

.NET Continous Integration Docker MS SQL Server Programming Project Management

Automate Testing: Gitlab, Dotnet

I always want to test my .NET based application on my personal Gitlab based repo. But since, my old project is too much a mess to do the effort for. So, when we got to rewrite the whole project, I was happy to get my experience on Unit Testing with automation of CI. I still don’t do much of CD as my development environment is still limited to development only.

So, I read about it and using Gitlab’s YML configuration, I was able to run the xUnit based Unit Test easily. It was simple too, call a MS/dotnet docker as base image, then dotnet build and later dotnet test .

But the problem arise when I have to connect to database and then I cannot get SQLCMD command to work, though I get the MS SQL Server based service to started, but until that command runs which is not present in ms dotnet docker, I cannot reload my database easily. For that I have to write code to bootstrap and create database. So, I try to search for it, and after lot of fail attempt and surprisingly no example of how to use database with YML configuration other than basic example for Mysql or Microsoft’s own docker file example. I found no info on this.

So, I decide to create a new docker image, I want to do it my way. So, I use a Ubuntu Docker image, install dotnet 2.2 on that image with mssql-cmd tools. I didn’t install MS SQL Server as I can use that as service. So using this docker image, I get my Unit testing working. This help me automate my project workflow and help me get best out of me, without need to worry about hidden errors.

My this docker image is available for anyone need it at Docker hub:

Case Study

Case Study: When to realise mismanagement?

From last month or maybe two months, I am helping one of my client’s company. They are sort of done with outsourced developer because (well they didn’t meet me before) and get bad experience. They are using my client, who is a hosting provider, for providing server services. They hire an in house apprentice to maintain their 10-12 yr old system which use Classic ASP to early version of .NET Framework based console app for automation.

So, now they need some help as their in house programmer is not very good and they reach me indirectly. All, is good so far as I am not charging them much and it is really just help. But I feel bad for them, because they are so mismanaged that they don’t even realize that they are missing a proper management. They get in this frame where they think developer is done in this bad environment like that. They have simple process, Client purchase their hardware, there Point of Sale machine generate a TEXT DAT file that they use to print “pre printed” invoice, so their old system only has to write text where it is required. Since the print invoice system is old and they don’t want to change, so our only option is to read those “DAT” file and read it into database to create PDF or do some reporting.

For this they initially have a website which does some online selling and reporting for their admin. It was in classic ASP. So, when a need of PDF arise they get a developer to write PDF, but since ASP is not handy and ASP.NET was in market this developer write that PDF using single page script in ASP.NET for PDF. It works fine. But now they need to bulk email to different vendors and customer at end of day their invoice, so they get couple of Console EXE that they run in background and get things done. It looks good maybe at that time. And it keep working if they get a proper team to handle it.

But here comes the mismanagement part. First they do not have the source code of EXE, until they need to change the pre-printed Invoice design, that result in change in PDF. They realise they never took the source code from old developer, or they don’t bother to keep it safe. Old developer who was now fired don’t bother to keep source code, because he is not responsible to keep it. He send a copy to client and is done when he was fired.

So, my first job to help them was to either recreate a small PDF code as their in-house developer cannot do that. (I still wonder why they call him developer). But I give them option to recreate or try to de-compile code, which works and give full source code back in shorter time. So they become happy to get old code back as it is easier. I however suggest them to not invest much on old system and get new system. They can elimiate to many moving parts from new system and get much stable version. But they are not ready, as for them it is always “one last small change, and we are done”. But are they really smart? I mean it is almost 2 months and their PDF changes are not yet done. They pay 2 month salary to their in house developer. Not to mention if they have to pay me for all help? They are so mismanaged in their approach, that they don’t realise they are missing a good management in IT department. They are lucky to have stable business that is paying for unstable IT needs. But what business they are losing for it, and wasting their resource they have no idea.

You can be busy, have a working solution. But that doesn’t mean it is always the best. Yes they are constraints, money, time, resources. But you have to make decision until when you can drag it. If they were using a simple Github/bitbucket account they can avoid losing files, source code in emails. If they serialise process they can avoid 5-6 console EXE to make similar yet different PDF, they can combine them in one EXE to reduce cost, and save time. Wish I can help them more than I am doing now. Hope their in-house developer learn fast, but he is not. They don’t realise it yet. Hope one day they will.

Blog: My thoughts

Quit, Quite, Quiet : A Year has gone

It is interesting how these three word summarize my last year. I quit lot of things that were stopping me. I quit to go down. However it is not entirely true that I succeed in my quest. Though, I am certainly at better perspective of life.

I have quite interesting events happen all around me, and most recently I start my own company which looks to expand all around and always. I was surprise that how small change in motivation leads to totally different perspective. My client feels more closure to me, and are getting happy with improved service of mine. My client always like my work, but somewhere with time, I lose the touch where I deliver to the desire. My biggest issue was time period. Though it is surprise me that when I start to reduce my work hour, I start to get more done and client are more happy as the delays are going away. Now, to get more done, my company is expanding its work base, and it means I have lot more to focus on. I am quite prepared for it and doing things as they come.

I remain quiet for long time on blog, as I wasn’t sure what I should write. I was not learning much of new tech and there is little that I do differently which is not already explain in other blogs. Though I still had few topics to write, technical or personal. But, they do not inspire me to write a post. Today, with this post I try to break that barrier so I can be more focused on things that make me, what I am. Sharing knowledge and learning from other is one of my biggest strength. I will try to write more and learn more. I start enjoying programming again, this new generation of programming was going over my head before, but now I found myself in the zone. I can learn and overcome them. Hope to post some technical articles soon.

.NET C#.NET Programming

Extensions Method in .NET

Recently I use extension method in C# project. I knew those for years, but really never get a chance to use them where they are most effect. I have couple of extension method in my project, such as ToInteger(), for a string to convert a String to Integer, which I used more frequently in my project. But that doesn’t seems a good use of technology to me.

But I now found a perfect use for extension method. i.e. I was upgrade my code from old ASP.NET project to MVC and for this I am making a class library of all objects. Now, this scenario need me to make a conversion from old enum to new enum  which are now part of namespace of my class library, rather than sitting around in App_Code folder. Here I make a extension method that convert a OLD enum to new name space base. This ease lot of my works.

Method goes like:

public static NewType GetSaleType(this OldType s)
	NewType r = NewType.Regular;
	switch (s)
		case OldType.BK: r = NewType.BK; break;
		case OldType.IL: r = NewType.IL; break;
		case OldType.MM: r = NewType.MM; break;
		case OldType.PC: r = NewType.PC;break;
		case OldType.Regular: r = NewType.Regular; break;
		case OldType.Trigger:r = NewType.Trigger; break;
	return r;