Saturday, March 18, 2017

Mistakes do not stop me

I am very sure I'll be committing mistakes, it will not stop me.

Mistakes are consequences of doing, they should not prevent anyone to move further. If you acknowledge a mistake before it happens, you will have the presence of mind to avoid it. If not, it's an accident.

No matter, a mistake, as a result of an action, should also not be taken lightly. Be responsible by acknowledging it, internalize by knowing why and how it happened, and learn from it. Any repairs or actions related to it should be proactive moves such that you are committing to strive at least to avoid another in the future.

Further, mistakes makes us human. Do not aim for it, try to avoid it, and just keep moving forward. There is no justice for mistakes than the lessons it offers after if it happens or not.

Endure through mistakes and no mistakes will be greater than the success you will soon harvest.

Persist and never cease to strive and be better.

Thursday, February 2, 2017

Measuring the performance of a software developer

Sometime last year, I was asked to evaluate and identify the best programmer from a number of graduating IT students. The projects have been preselected by the faculty members. The criteria for the selection is not specifically defined. They trusted me, being in software development for sometime, that I will be able to gauge who will be awarded of the contested award given to graduates of the Information Technology bachelor's degree.

To provide me with some insights on how to go about the evaluation, I had to ask some of the faculty members who identified me to be the "judge". One of them presented that the best programmer should be the one who used a well-known development framework in their projects. Another argues that someone who developed their own framework is the better programmer -- having "invented" his own framework.

Another faculty favors the programmer who had developed the most number and more complex system features will determine the best programmer. Another expounds to include the scope of the system -- the system solves a wide variety of problems.

All the projects started at about the same time. Each project are developed by about two to five individuals. From each team, one stands out to be the project leader -- most often, the developer-lead of the team. The cohesiveness of the development efforts vary from each team with the complexity of the individualism among the members. Some instances, from among the team, only one is doing the programming, while the rest will do something else - financial support, documentation, etc.

The determination of the best programmer ignores the collective effort of the team. Be it that the system is developed by one person or by the whole team, the selection dictates the completeness of the presented system. Technical expertise as a baseline criteria was also not considered.

I pity those good developers, idealistic, all-knowing, but are unable to produce a near-complete product by the due date.

In my selection, I had to consider, the development journey of the system by the developers concerned. The best programmer should be someone who delivered the finished product by applying the lessons learned in their earlier years. Having the best project, having used or developed their own framework, are factors in the selection. The measure of performance is the extent of effectively applying what was learned.

Tuesday, January 17, 2017

A new web-interest

Web system development is one that I consider to be the major industry I belong.

This means that I need to be able to setup, configure, and mostly develop systems that work on a browser from a web server. Open source is a major consideration in pursuing this "passion" and implementation. Everything should be achievable and done by my own hands and mind to be able to mention that I can support it.

WebRTC had been around for a while and only now that I grasp some interest in pursuing its features and benefits that it promises to provide.

WebRTC allows peer-to-peer connection for audio, video, files, and/or simple data.

It's high time to get a taste of how dirty and messy to achieve an implementation.

Monday, January 16, 2017

Device Fingerprinting Challenge

A client requested to provide information about the visitors on a website I am working.

The client's request includes the following:

  • Add MAC address
  • Computer/device name
  • Local IP address
MAC address (machine access control address) is a unique identifier assigned to a network interface. Network interface could be physical or wireless. MAC address is also known as the physical address to a network device. (more info)

The computer/device name is the name of the device identified usually during installation.

Local IP address is the IP address defined for the network interface either statically or through a DHCP (dynamic host configuration protocol) server within a local area network (LAN).

Taking the "possibility" challenge, it lead me to many other information. The challenge involves the use of the browser and its relative technologies. The website is developed in PHP and Javascript. Imperatively, getting the above information can be done with PHP and Javascript.

Initial searches on Google lead me to answers leading to "not possible" outcome. However, it also lead me to a number of tools for future projects like: ClientJSBrowserSpy, DetecDevice, and a number of almost similar leading information.

Further in search for a solution, 3rd-party software are also considered including extension, plugins, and client-installed scripts.

With any breakthrough, it'll be posted here.