Tag Archives: Novice

Agile for a constantly changing world

In my years in software development, I have experienced many projects that have encountered challenges on keeping with its schedule and meeting its deadline.

One major reason would be the constant change of requirements.

There is this saying:

“In life, as well as in software development, the only thing that is constant is change.”

You may ask – Why are the requirements always changing? The answer to that would be the following:

  • The clients or users are not sure what they want.
  • They have difficulty stating all they want and know.
  • Many details of what they want will only be revealed during development.
  • The details are overwhelmingly complex for people.
  • As they see the product develop, they change their minds.
  • External forces (such as a competitor’s product or service) lead to changes or enhancements in requests.

Luckily there were a group of experts in the industry who created a revolutionary way to do software development. This revolutionary methodology they have called as “Agile”.


Agile development methods apply timeboxed iterative and evolutionary development, adaptive planning, promote evolutionary delivery, and include other values and practices that encourage agility—rapid and flexible response to change.


If agile methods have a motto, it is embrace change. If agile methods have a strategic point, it is maneuverability.

To understand it fully there is an Agile Manifesto that can be found in http://agilemanifesto.org/


The Agile Manifesto is based on twelve principles:

  1. Customer satisfaction by rapid delivery of useful software
  2. Welcome changing requirements, even late in development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the principal measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Self-organizing teams
  12. Regular adaptation to changing circumstances

There is much to learn with regards to Agile and how to implement it. And this post is not meant to be a comprehensive guide in learning agile but an introductory note that there is already an existing method that would solve the common problem of changing requirements in software development.

Today when I encounter requirement change in a project, I do not complain anymore. I instead adapt to it.

Now is the time to Adapt to the changing world! Start being Agile!


A perfect time to start a career in SEO

Looking for a career or field to enter to into I.T. which would be relatively new or should I say where the current players are not far ahead that it would not be hard to gain the same level in a few years time. I suggest you venture and invest some time learning SEO which stands for Search Engine Optimization.



Search engine optimization (SEO) is the process of affecting the visibility of a website or a web page in a search engine’s search results. Generally, the higher ranked on the search results page the more visitors it will receive from the search engine’s users.

This practice have existed since the mid-1990s by webmasters optimizing sites for the first search engines and soon became a career after Google came into the picture and became the leading search engine of choice by users.


So you would probably wonder how come I say that the people already working on this field are not far ahead in their expertise for those who will just start to venture and enter this field as a newbie knowing that this have existed more than a decade already.

Well the answer to that would be because what happened on February 11, 2011. On that day, Google released the Panda update. Google’s search algorithms were optimized and updated. The update was designed to filter out low quality web pages from the index. And it left webmasters and site owners not knowing why their sites were penalized and lost their rankings in the results of page search.

Then on April 24, 2012, Google unleashed the Penguin. On this update, it completely changed the way how people need to think about SEO. Just about everything that have been taught about SEO in the last 10 years have been put in the trash can.

Another update came on May 22, 2013 which was Penguin 2.0. This is also a major update to the Penguin itself and moved the standard much higher.

And finally there was Hummingbird. This update of Google’s algorithm was implemented on August 20, 2013. By that time all Webmasters and SEO specialist were back at square one to figure out how to bring back their Sites to rank well again in the search results.

Now is just the perfect time for anyone who wants to enter this field and make a career out of it while this field is still in its infancy stage again.

How to get started in Android Development

One of the challenges on shifting and venturing to another programming language or platform is having to figure out how to setup the right environment and tools needed for that language or platform.

In Android, the people in Google made this task the least painstakingly as possible . To get started developing in Android, you will only need to download the ADT (Android Developer Tools) Bundle. You can download this from http://developer.android.com/sdk/index.html#download

This bundle includes the following:

an integrated development environment used for Android development. Because Eclipse is also written in Java, you can install it on a PC, a Mac, or a Linux computer. The Eclipse user interface follows the “native look-and-feel” of your machine, so your screen may not look exactly like the screenshot below:


Android Developer Tools
a plug-in for Eclipse.  As of this writing (July 2014) , version of ADT (Android Developer Tools) is 23.0.2 You should make sure
you have that version or higher.

Android SDK
the latest version of the Android SDK tools and Android platform-tools for debugging and testing your apps, a system image for the Android emulator lets you create and test your apps on different virtual devices

After downloading, you just need to extract it to your local drive and run the eclipse application executable file under the bundle and eclipse folder.

That simple!

The only extra effort you need to do aside from the above is if your Java Runtime Environment version installed in your local machine is not compatible with the minimum requirement of the Android SDK. In this case, you only need to upgrade or install your Java Runtime Environment version to the latest one (check https://www.java.com/en/download/).

Next stop in this journey is learn android development

Automating file transfer via SFTP using WinSCP

A few years ago I received a request to automate file transfer between FTP server and Development systems. Both, FTP server and Development system, are Windows-based. FTP server was running FTP over SSL only, so that automatically eliminated built-in Windows FTP command-line app. As I was using WinSCP in the past, I decided to do quick check if it is possible to use it in batch mode, so I can create script and run it on Windows Task Scheduler to automate whole process.

Prepare environment – application and folders

Here is the folder structure and script files I created on destination machine (to which files were transferred):

  • C:\Apps\WinSCP – folder contains binary files of portable WinSCP application
  • C:\Data\Scripts – folder contains batch script to run FTP transfer and script with commands for FTP
  • C:\FTP – transfer folder to which files will be transferred from remote site
  • C:\Data\Scripts\ftprun.cmd – batch file with command which starts WinSCP with certain parameters
  • C:\Data\Scripts\ftpscript.txt – text file which contains commands for WinSCP. It is passed to WinSCP as a parameter by ftprun.cmd script

Then download portable version of WinSCP (http://winscp.net/eng/download.php) and unzip to C:\Apps\WinSCP folder.

Create connection profile in WinSCP

First we need to define connection profile in WinSCP. That connection profile will be used later in ftpscript.txt to establish connection with FTP server. In order to define connection profile run winscp.exefrom C:\Apps\WinSCP folder and populate WinSCP Logon window with all details about connection (including password). Once all details are filled in click Save…

In Save session as… window name your session (that name will be used later on in ftpscript.txt to open connection) and make sure that Save password (not recommended) checkbox is ticked. We want to remember password in connection profile (WinSCP stores passwords in encrypted form). Otherwise we will have to entre clear-text password in ftpscript.txt file.

Once connection profile is saved WinSCP will show it on the list in WinSCP Login window. To make sure that all details are correct highlight connection you just created and click Login button. After that WinSCP will attempt to establish connection using parameters just delivered.

If connection is initiated for the first time and FTP server has been defined as FTP with TLS then we can expect that WinSCP might request acceptance for certificate presented by the server. In that case Warning windows will show up with all details of the certificate (as on screenshot below – you can see default, system-generated certificate which has been assigned to FTP site on IIS). Accept certificate by clicking Yes, so WinSCP can store information about certificate in configuration file for future use.

NOTE: It is important to establish connection to FTP server with TLS at least once before transfer task will be sceduled. That way we can accept and save information about certificate, so WinSCP will nit be asking about that later.

Once certificate is accepted and other connection details are fine we should see two panels with files. One panel shows files on our computer, second panel shows files on remote FTP server (in that case there is only one file Text file.txt). That indicates that we can establish connection successfuly and all parameters are entered correctly to connection profile.

As we have connection profile created and saved in WinSCP configuration we can proceed to next step in which we will create some scripts as preparation to automated transfers.

Prepare script to run FTP transfer and script with commands for FTP

In here we will create two scripts which will help to automate file transfer with WinSCP.

  • ftprun.cmd – batch file responsible for starting WinSCP command with appropriate parameters
  • ftpscript.txt – list of commands for WinSCP to execute

NOTE: Both files will be placed in C:\Data\Scripts folder.


C:\Apps\WinSCP\winscp.com /script=C:\Data\Scripts\ftpscript.txt


option batch continue
option confirm off
open lab-net-01
lcd C:\FTP
synchronize both -delete
synchronize both C:\FTP /

NOTE: In ftpscript.txt file line open lab-net-01 indicated connection profile name which will be used to establish connection.

Before scheduling a script it is worth to check how it works and we get expected results, so from Command Prompt you can just run ftprun.cmd and see how it behaves and if everything is transferred according to the plan.

Here is example output of ftprun.cmd command started before scheduling:

C:\>C:\Apps\WinSCP\winscp.com /script=C:\Data\Scripts\ftpscript.txt
batch           continue
confirm         off
Connecting to ...
Connected with, negotiating SSL connection...
SSL connection established. Waiting for welcome message...
Starting the session...
Reading remote directory...
Session started.
Active session: [1] lab-net-01
Local 'C:\FTP'  Remote '/'
Local 'C:\FTP'  Remote '/'
C:\FTP\Test file.txt      |          0 KiB |    0.0 KiB/s | ascii  | 100%
Local 'C:\FTP'  Remote '/'
Local 'C:\FTP'  Remote '/'
Test file.txt             |          0 KiB |    0.0 KiB/s | ascii  | 100%

Once everything went well we are ready to create a scheduled task to trigger file transfer automatically. If test connection failed for some reason it needs troubleshooting then.

Creating task in Task Scheduler

In order to schedule file transfer we will use Task Scheduler, which is built-in Windows tool. Task Scheduler is located in Start / All Programs / Accessories / System Tools.

When Task Scheduler window will appear on the screen locate Create Task… in Action panel and click it.

Next on the screen Create Task windows will appear with General tab active by default. In here we can name task (ie. FTP Transfer), put some description which explains what this task suppose to do. Make sure that option Run whether user is logged on or not is chosen. That will allow task to run in background.

Next click on Triggers tab and click New… button. That will allow to create schedule for the task.

You will see New Trigger window on the screen. Indicate in Begin the task that we want to run task On a schedule. Then define schedule for file transfer. On example screenshot schedule indicates to run task every day, every hour indefinitely. Also make sure that task will be Enabled (checkbox at the bottom of New Trigger window).

When you confirm New Trigger with OK button schedule will be added to Triggers list as shown on screenshot below:

Now we can move to Actions tab. On this tab we will define which command should be triggered by task. Click New… to define command.

In New Action window indicate Action as Start a program. Then in Settings section in Program/script textbox enter C:\Data\Scripts\ftprun.cmd (this is batch script which will execute WinSCP with parameters).

Once action is defined click OK button and you should see our command added to the action list as on the screenshot below:

All parameters have been defined and now we can confirm task configuration by clicking OK button. Just after that system will request credentials for that task. It means that we can enter username and password for the account we want to run this task under. In the example below I just used domain administrator account.

After the credentials are entered in Task Scheduler you can see the task added with all the parameters defined.

Now it is only a matter of time to see if the task will run accordingly to the schedule we have defined and if all files will be transferred correctly.